From baba1016cf7d45989118461c0c2ecd136127fc51 Mon Sep 17 00:00:00 2001 From: Alastair McKinstry Date: Tue, 3 Apr 2018 15:59:29 +0100 Subject: [PATCH] Import openmpi_3.0.1.orig.tar.xz [dgit import orig openmpi_3.0.1.orig.tar.xz] --- Doxyfile | 1099 +++ HACKING | 249 + INSTALL | 101 + LICENSE | 91 + Makefile.am | 59 + Makefile.ompi-rules | 68 + NEWS | 3869 ++++++++ README | 2155 +++++ README.JAVA.txt | 275 + VERSION | 113 + autogen.pl | 1418 +++ config/Makefile.am | 34 + config/Makefile.options | 20 + config/c_get_alignment.m4 | 72 + config/c_weak_symbols.m4 | 134 + config/distscript.sh | 56 + config/find_common_syms | 144 + config/ltmain_nag_pthread.diff | 18 + config/ltmain_pgi_tp.diff | 11 + config/ompi_check_libfca.m4 | 70 + config/ompi_check_libhcoll.m4 | 75 + config/ompi_check_lustre.m4 | 92 + config/ompi_check_mxm.m4 | 94 + config/ompi_check_plfs.m4 | 114 + config/ompi_check_psm.m4 | 92 + config/ompi_check_psm2.m4 | 90 + config/ompi_check_pvfs2.m4 | 68 + config/ompi_check_ucx.m4 | 105 + config/ompi_check_udapl.m4 | 120 + config/ompi_config_files.m4 | 54 + config/ompi_configure_options.m4 | 247 + config/ompi_contrib.m4 | 140 + config/ompi_cxx_find_exception_flags.m4 | 94 + config/ompi_cxx_find_template_parameters.m4 | 44 + config/ompi_cxx_find_template_repository.m4 | 172 + config/ompi_cxx_have_exceptions.m4 | 44 + config/ompi_endpoint_tag.m4 | 48 + config/ompi_ext.m4 | 777 ++ config/ompi_find_mpi_aint_count_offset.m4 | 245 + config/ompi_fortran_check.m4 | 203 + config/ompi_fortran_check_abstract.m4 | 47 + config/ompi_fortran_check_asynchronous.m4 | 48 + config/ompi_fortran_check_bind_c.m4 | 119 + config/ompi_fortran_check_c_funloc.m4 | 49 + config/ompi_fortran_check_f08_assumed_rank.m4 | 61 + config/ompi_fortran_check_ignore_tkr.m4 | 205 + config/ompi_fortran_check_interface.m4 | 51 + config/ompi_fortran_check_iso_fortran_env.m4 | 42 + config/ompi_fortran_check_logical_array.m4 | 122 + config/ompi_fortran_check_max_array_rank.m4 | 69 + config/ompi_fortran_check_optional_args.m4 | 54 + config/ompi_fortran_check_private.m4 | 47 + config/ompi_fortran_check_procedure.m4 | 56 + config/ompi_fortran_check_protected.m4 | 44 + config/ompi_fortran_check_real16_c_equiv.m4 | 156 + config/ompi_fortran_check_storage_size.m4 | 106 + config/ompi_fortran_check_type.m4 | 43 + config/ompi_fortran_check_use_only.m4 | 75 + ...ompi_fortran_find_ext_symbol_convention.m4 | 143 + .../ompi_fortran_find_module_include_flag.m4 | 83 + config/ompi_fortran_get_alignment.m4 | 179 + config/ompi_fortran_get_handle_max.m4 | 86 + config/ompi_fortran_get_kind_value.m4 | 101 + config/ompi_fortran_get_sizeof.m4 | 90 + config/ompi_fortran_get_value_true.m4 | 134 + config/ompi_interix.m4 | 56 + config/ompi_microsoft.m4 | 118 + config/ompi_setup_contrib.m4 | 29 + config/ompi_setup_cxx.m4 | 454 + config/ompi_setup_fc.m4 | 253 + config/ompi_setup_java.m4 | 104 + config/ompi_setup_mpi_ext.m4 | 29 + config/ompi_setup_mpi_fortran.m4 | 800 ++ config/ompi_setup_mpi_profiling.m4 | 50 + config/opal_case_sensitive_fs_setup.m4 | 103 + config/opal_check_alps.m4 | 171 + config/opal_check_attributes.m4 | 632 ++ config/opal_check_broken_qsort.m4 | 54 + config/opal_check_cma.m4 | 136 + config/opal_check_compiler_version.m4 | 123 + config/opal_check_compiler_works.m4 | 57 + config/opal_check_cray_pmi.m4 | 107 + config/opal_check_cuda.m4 | 165 + config/opal_check_icc.m4 | 60 + config/opal_check_ident.m4 | 101 + config/opal_check_knem.m4 | 74 + config/opal_check_libfabric.m4 | 95 + config/opal_check_libnl.m4 | 368 + config/opal_check_offsetof.m4 | 43 + config/opal_check_openfabrics.m4 | 485 + config/opal_check_os_flavors.m4 | 69 + config/opal_check_package.m4 | 229 + config/opal_check_pmi.m4 | 371 + config/opal_check_portals4.m4 | 109 + config/opal_check_ps.m4 | 44 + config/opal_check_pthread_pids.m4 | 112 + config/opal_check_singularity.m4 | 60 + config/opal_check_ugni.m4 | 82 + config/opal_check_vendor.m4 | 283 + config/opal_check_verbs.m4 | 120 + config/opal_check_version.m4 | 79 + config/opal_check_visibility.m4 | 90 + config/opal_check_withdir.m4 | 43 + config/opal_check_xpmem.m4 | 112 + config/opal_config_asm.m4 | 1318 +++ config/opal_config_files.m4 | 30 + config/opal_config_pthreads.m4 | 676 ++ config/opal_config_subdir.m4 | 147 + config/opal_config_subdir_args.m4 | 84 + config/opal_config_threads.m4 | 72 + config/opal_configure_options.m4 | 543 ++ config/opal_ensure_contains_optflags.m4 | 66 + config/opal_find_type.m4 | 56 + config/opal_functions.m4 | 661 ++ config/opal_get_version.m4 | 101 + config/opal_get_version.m4sh | 93 + config/opal_lang_link_with_c.m4 | 64 + config/opal_load_platform.m4 | 188 + config/opal_mca.m4 | 958 ++ config/opal_mca_priority_sort.pl | 31 + config/opal_save_version.m4 | 64 + config/opal_search_libs.m4 | 75 + config/opal_set_lib_prefix.m4 | 62 + config/opal_set_mca_prefix.m4 | 41 + config/opal_setup_cc.m4 | 375 + config/opal_setup_cli.m4 | 37 + config/opal_setup_component_package.m4 | 105 + config/opal_setup_cxx.m4 | 226 + config/opal_setup_ft.m4 | 178 + config/opal_setup_java.m4 | 218 + config/opal_setup_wrappers.m4 | 559 ++ config/opal_setup_zlib.m4 | 90 + config/opal_strip_optflags.m4 | 55 + config/opal_summary.m4 | 115 + config/opal_try_assemble.m4 | 52 + config/orte_check_loadleveler.m4 | 53 + config/orte_check_lsf.m4 | 144 + config/orte_check_moab.m4 | 91 + config/orte_check_sge.m4 | 59 + config/orte_check_slurm.m4 | 87 + config/orte_check_tm.m4 | 173 + config/orte_config_files.m4 | 38 + config/orte_configure_options.m4 | 57 + config/orte_setup_debugger_flags.m4 | 56 + config/oshmem_config_files.m4 | 31 + config/oshmem_configure_options.m4 | 159 + config/oshmem_setup_profiling.m4 | 47 + config/pkg.m4 | 303 + configure.ac | 1439 +++ contrib/Makefile.am | 112 + contrib/amca-param-sets/example.conf | 5 + contrib/amca-param-sets/ft-enable-cr | 66 + contrib/amca-param-sets/ft-enable-cr-recovery | 81 + contrib/annual-maintenance/convert-to-git.txt | 60 + .../find-committers-from-last-year.pl | 114 + .../Makefile.am | 46 + .../README.txt | 163 + .../autogen.sh | 10 + .../btl_tcp2.addr.h | 73 + .../btl_tcp2.c | 529 + .../btl_tcp2.h | 334 + .../btl_tcp2_addr.h | 73 + .../btl_tcp2_component.c | 1082 +++ .../btl_tcp2_endpoint.c | 835 ++ .../btl_tcp2_endpoint.h | 84 + .../btl_tcp2_frag.c | 286 + .../btl_tcp2_frag.h | 166 + .../btl_tcp2_ft.c | 55 + .../btl_tcp2_ft.h | 35 + .../btl_tcp2_hdr.h | 59 + .../btl_tcp2_proc.c | 802 ++ .../btl_tcp2_proc.h | 128 + .../configure.ac | 195 + .../help-mpi-btl-tcp2.txt | 27 + contrib/build-server/README.txt | 59 + contrib/build-server/crontab.txt | 132 + .../build-server/hwloc-nightly-coverity.pl | 167 + contrib/build-server/hwloc-nightly-tarball.sh | 186 + contrib/build-server/hwloc-release.sh | 45 + contrib/build-server/install-autotools-set.sh | 149 + .../build-server/openmpi-nightly-coverity.pl | 162 + .../build-server/openmpi-nightly-tarball.sh | 192 + contrib/build-server/openmpi-release.sh | 50 + .../openmpi-update-www.open-mpi.org.sh | 11 + contrib/build-server/pmix-nightly-coverity.pl | 162 + contrib/build-server/pmix-nightly-tarball.sh | 196 + contrib/build-server/pmix-release.sh | 52 + contrib/build-server/remove-old.pl | 59 + contrib/check-btl-sm-diffs.pl | 248 + contrib/check-help-strings.pl | 322 + contrib/check-ob1-pml-diffs.pl | 243 + contrib/check-ob1-revision.pl | 41 + contrib/check-owner.pl | 178 + contrib/check_unnecessary_headers.sh | 241 + contrib/cleanperms | 11 + contrib/code_counter.pl | 190 + contrib/completion/mpirun.sh | 206 + contrib/completion/mpirun.zsh | 247 + contrib/coverity/coverity-model.c | 3 + contrib/dist/find-copyrights.pl | 159 + contrib/dist/linux/README | 102 + contrib/dist/linux/README.ompi-spec-generator | 93 + contrib/dist/linux/buildrpm.sh | 465 + contrib/dist/linux/buildswitcherrpm.sh | 191 + contrib/dist/linux/ompi-spec-generator.py | 813 ++ .../linux/openmpi-switcher-modulefile.spec | 240 + .../linux/openmpi-switcher-modulefile.tcl | 65 + contrib/dist/linux/openmpi.spec | 926 ++ contrib/dist/macosx-pkg/ReadMe.rtf | 34 + contrib/dist/macosx-pkg/buildpackage.sh | 550 ++ contrib/dist/make-authors.pl | 171 + contrib/dist/make-html-man-pages.pl | 278 + contrib/dist/make_dist_tarball | 455 + contrib/dist/make_tarball | 1 + .../dist/mofed/compile_debian_mlnx_example.in | 21 + contrib/dist/mofed/debian/changelog.in | 5 + contrib/dist/mofed/debian/compat | 1 + contrib/dist/mofed/debian/control.in | 15 + contrib/dist/mofed/debian/rules.in | 17 + contrib/dist/mofed/debian/source/format | 1 + contrib/find_occurence.pl | 45 + contrib/find_offenders.pl | 89 + contrib/fix_headers.pl | 142 + contrib/fix_indent.pl | 59 + contrib/gen_stats.pl | 275 + contrib/generate_file_list.pl | 36 + contrib/header_replacement.sh | 139 + contrib/headers.txt | 0 .../README-setup-github-diff-emails.txt | 58 + contrib/infrastructure/README.txt | 21 + ...crontab-mpiteam-at-jaguar.crest.iu.edu.txt | 113 + .../crontab-mpiteam-at-lion.crest.iu.edu | 17 + contrib/infrastructure/gitdub-config.yml | 101 + .../github-send-commit-mails.pl | 42 + .../openmpi-update-www.open-mpi.org.sh | 11 + contrib/libadd_mca_comp_update.py | 230 + contrib/nightly/create_tarball.sh | 311 + .../nightly/reports/check_devel_headers.pl | 104 + .../nightly/reports/illegal_symbols_report.pl | 340 + .../update-component-owners-github-wiki.pl | 98 + contrib/ompi-time.sh | 1244 +++ contrib/ompi_branch_check_revisions-v1.5.txt | 106 + contrib/ompi_branch_check_revisions.pl | 420 + contrib/ompi_cplusplus.sed | 41 + contrib/ompi_cplusplus.sh | 37 + contrib/ompi_cplusplus.txt | 186 + contrib/openmpi-valgrind.supp | 116 + contrib/platform/clang/align | 8 + contrib/platform/cray_xt3 | 1 + contrib/platform/cray_xt3_romio | 1 + contrib/platform/cray_xt_cnl_romio | 93 + contrib/platform/embedded/build_embedded.sh | 19 + contrib/platform/embedded/debug | 30 + contrib/platform/embedded/gen_embedded.sh | 20 + contrib/platform/embedded/optimized | 30 + contrib/platform/hadoop/cisco | 32 + contrib/platform/hadoop/cisco.conf | 59 + contrib/platform/hadoop/linux | 26 + contrib/platform/hadoop/linux.conf | 59 + contrib/platform/hadoop/mac | 24 + contrib/platform/hadoop/mac.conf | 69 + contrib/platform/ibm/debug-power6-gcc | 14 + contrib/platform/ibm/debug-power7-gcc | 14 + contrib/platform/ibm/debug-ppc32-gcc | 14 + contrib/platform/ibm/debug-ppc64-gcc | 14 + contrib/platform/ibm/optimized-power6-gcc | 15 + contrib/platform/ibm/optimized-power7-gcc | 15 + contrib/platform/ibm/optimized-ppc32-gcc | 15 + contrib/platform/ibm/optimized-ppc64-gcc | 15 + contrib/platform/intel/bend/ext | 34 + contrib/platform/intel/bend/ext.conf | 65 + contrib/platform/intel/bend/gadget | 30 + contrib/platform/intel/bend/gadget-optimized | 27 + .../platform/intel/bend/gadget-optimized.conf | 66 + contrib/platform/intel/bend/gadget.conf | 66 + contrib/platform/intel/bend/linux | 34 + contrib/platform/intel/bend/linux-optimized | 33 + .../platform/intel/bend/linux-optimized.conf | 77 + contrib/platform/intel/bend/linux-orcm.conf | 83 + contrib/platform/intel/bend/linux.conf | 65 + contrib/platform/intel/bend/mac | 25 + contrib/platform/intel/bend/mac-optimized | 27 + .../platform/intel/bend/mac-optimized.conf | 78 + contrib/platform/intel/bend/mac-orcm.conf | 65 + contrib/platform/intel/bend/mac.conf | 64 + contrib/platform/iu/odin/debug | 21 + contrib/platform/iu/odin/debug-nopmi | 27 + contrib/platform/iu/odin/debug-nopmi.conf | 85 + contrib/platform/iu/odin/debug.conf | 85 + contrib/platform/iu/odin/optimized | 23 + contrib/platform/iu/odin/optimized.conf | 92 + contrib/platform/iu/odin/static | 27 + contrib/platform/iu/odin/static.conf | 92 + .../platform/lanl/cray_xc_cle5.2/debug-common | 39 + .../platform/lanl/cray_xc_cle5.2/debug-lustre | 19 + .../lanl/cray_xc_cle5.2/debug-lustre.conf | 104 + .../lanl/cray_xc_cle5.2/optimized-common | 47 + .../lanl/cray_xc_cle5.2/optimized-lustre | 20 + .../lanl/cray_xc_cle5.2/optimized-lustre.conf | 107 + contrib/platform/lanl/cray_xe6/cray-common | 45 + contrib/platform/lanl/cray_xe6/debug-common | 36 + contrib/platform/lanl/cray_xe6/debug-lustre | 20 + .../platform/lanl/cray_xe6/debug-lustre.conf | 104 + contrib/platform/lanl/cray_xe6/gnu-common | 11 + contrib/platform/lanl/cray_xe6/intel-common | 15 + .../platform/lanl/cray_xe6/optimized-common | 42 + .../platform/lanl/cray_xe6/optimized-lustre | 25 + .../lanl/cray_xe6/optimized-lustre.conf | 107 + contrib/platform/lanl/darwin/darwin-common | 43 + contrib/platform/lanl/darwin/debug | 5 + contrib/platform/lanl/darwin/debug-common | 12 + contrib/platform/lanl/darwin/debug-mic | 6 + contrib/platform/lanl/darwin/debug-mic.conf | 100 + contrib/platform/lanl/darwin/debug.conf | 100 + contrib/platform/lanl/darwin/mic-common | 46 + contrib/platform/lanl/darwin/optimized | 5 + contrib/platform/lanl/darwin/optimized-common | 10 + contrib/platform/lanl/darwin/optimized-mic | 6 + .../platform/lanl/darwin/optimized-mic.conf | 100 + contrib/platform/lanl/darwin/optimized.conf | 100 + contrib/platform/lanl/mac.conf | 62 + contrib/platform/lanl/macosx-dynamic | 20 + contrib/platform/lanl/macosx-dynamic-java | 21 + .../platform/lanl/macosx-dynamic-java.conf | 60 + .../platform/lanl/macosx-dynamic-optimized | 20 + .../lanl/macosx-dynamic-optimized.conf | 63 + contrib/platform/lanl/macosx-dynamic.conf | 59 + contrib/platform/lanl/macosx-static-leopard | 21 + .../platform/lanl/macosx-static-leopard.conf | 63 + contrib/platform/lanl/macosx-static-tiger | 20 + contrib/platform/lanl/toss/debug | 8 + contrib/platform/lanl/toss/debug-common | 8 + contrib/platform/lanl/toss/debug-mlx | 4 + contrib/platform/lanl/toss/debug-mlx.conf | 104 + contrib/platform/lanl/toss/debug.conf | 100 + contrib/platform/lanl/toss/optimized | 8 + contrib/platform/lanl/toss/optimized-common | 8 + contrib/platform/lanl/toss/optimized-mlx | 4 + contrib/platform/lanl/toss/optimized-mlx.conf | 104 + contrib/platform/lanl/toss/optimized.conf | 100 + contrib/platform/lanl/toss/toss-common | 40 + contrib/platform/mellanox/optimized | 75 + contrib/platform/mellanox/optimized.conf | 79 + contrib/platform/optimized | 3 + contrib/platform/ornl/cray_xt_cnl_romio | 89 + contrib/platform/ornl/cray_xt_cnl_romio_debug | 89 + contrib/platform/ornl/ornl_configure.gnu | 43 + contrib/platform/ornl/ornl_configure.pgi | 95 + .../ornl/ornl_configure_self_contained | 125 + contrib/platform/ps3 | 15 + contrib/platform/redstorm | 115 + contrib/platform/snl/kitten | 62 + contrib/platform/snl/portals4-m5 | 18 + contrib/platform/snl/portals4-orte | 9 + contrib/platform/utk/cray_xc30_darter | 44 + contrib/purge-tab-indents.pl | 172 + contrib/purge-trailing-blank-lines.pl | 178 + contrib/scaling/Makefile | 17 + contrib/scaling/Makefile.include | 26 + contrib/scaling/mpi_memprobe.c | 243 + contrib/scaling/mpi_no_op.c | 17 + contrib/scaling/orte_no_op.c | 24 + contrib/scaling/scaling.pl | 336 + contrib/search_compare.pl | 274 + contrib/search_replace.pl | 70 + contrib/spread/spread-init.txt | 20 + contrib/spread/spread.conf | 242 + contrib/submit_test.pl | 349 + contrib/symbol-hiding.pl | 154 + contrib/test_headers_in_ompi.pl | 178 + contrib/uncrustify_open_mpi.cfg | 1187 +++ contrib/update-my-copyright.pl | 371 + contrib/whitespace-purge.sh | 25 + examples/Hello.java | 39 + examples/Makefile | 186 + examples/Makefile.include | 60 + examples/README | 67 + examples/Ring.java | 75 + examples/connectivity_c.c | 67 + examples/dtrace/Makefile | 24 + examples/dtrace/README | 402 + examples/dtrace/mpicommcheck.d | 50 + examples/dtrace/mpicommleak.c | 61 + examples/dtrace/mpicount.d | 49 + examples/dtrace/mpitrace.d | 19 + examples/dtrace/mpitruss.d | 25 + examples/dtrace/myppriv.sh | 14 + examples/dtrace/partrace.sh | 12 + examples/hello_c.c | 27 + examples/hello_cxx.cc | 34 + examples/hello_mpifh.f | 27 + examples/hello_oshmem_c.c | 36 + examples/hello_oshmem_cxx.cc | 39 + examples/hello_oshmemfh.f90 | 29 + examples/hello_usempi.f90 | 28 + examples/hello_usempif08.f90 | 31 + examples/oshmem_circular_shift.c | 35 + examples/oshmem_max_reduction.c | 59 + examples/oshmem_shmalloc.c | 30 + examples/oshmem_strided_puts.c | 55 + examples/oshmem_symmetric_data.c | 56 + examples/ring_c.c | 79 + examples/ring_cxx.cc | 85 + examples/ring_mpifh.f | 81 + examples/ring_oshmem_c.c | 65 + examples/ring_oshmemfh.f90 | 66 + examples/ring_usempi.f90 | 75 + examples/ring_usempif08.f90 | 79 + ompi/Makefile.am | 213 + ompi/attribute/Makefile.am | 27 + ompi/attribute/attribute.c | 1421 +++ ompi/attribute/attribute.h | 557 ++ ompi/attribute/attribute_predefined.c | 279 + ompi/class/Makefile.am | 28 + ompi/class/ompi_seq_tracker.c | 198 + ompi/class/ompi_seq_tracker.h | 70 + ompi/communicator/Makefile.am | 36 + ompi/communicator/comm.c | 1977 ++++ ompi/communicator/comm_cid.c | 1109 +++ ompi/communicator/comm_init.c | 443 + ompi/communicator/comm_request.c | 270 + ompi/communicator/comm_request.h | 39 + ompi/communicator/communicator.h | 692 ++ ompi/contrib/README.txt | 19 + ompi/contrib/libompitrace/Makefile.am | 46 + ompi/contrib/libompitrace/abort.c | 39 + ompi/contrib/libompitrace/accumulate.c | 55 + ompi/contrib/libompitrace/add_error_class.c | 38 + ompi/contrib/libompitrace/add_error_code.c | 37 + ompi/contrib/libompitrace/add_error_string.c | 39 + ompi/contrib/libompitrace/address.c | 39 + ompi/contrib/libompitrace/allgather.c | 51 + ompi/contrib/libompitrace/allgatherv.c | 51 + ompi/contrib/libompitrace/alloc_mem.c | 38 + ompi/contrib/libompitrace/allreduce.c | 47 + ompi/contrib/libompitrace/barrier.c | 39 + ompi/contrib/libompitrace/bcast.c | 45 + ompi/contrib/libompitrace/configure.m4 | 27 + ompi/contrib/libompitrace/finalize.c | 36 + ompi/contrib/libompitrace/init.c | 33 + ompi/contrib/libompitrace/isend.c | 47 + ompi/contrib/libompitrace/recv.c | 44 + ompi/contrib/libompitrace/reduce.c | 48 + ompi/contrib/libompitrace/request_free.c | 36 + ompi/contrib/libompitrace/send.c | 47 + ompi/contrib/libompitrace/sendrecv.c | 60 + ompi/datatype/Makefile.am | 55 + ompi/datatype/ompi_datatype.h | 399 + ompi/datatype/ompi_datatype_args.c | 854 ++ ompi/datatype/ompi_datatype_create.c | 113 + .../ompi_datatype_create_contiguous.c | 41 + ompi/datatype/ompi_datatype_create_darray.c | 285 + ompi/datatype/ompi_datatype_create_indexed.c | 182 + ompi/datatype/ompi_datatype_create_struct.c | 97 + ompi/datatype/ompi_datatype_create_subarray.c | 108 + ompi/datatype/ompi_datatype_create_vector.c | 98 + ompi/datatype/ompi_datatype_external.c | 135 + ompi/datatype/ompi_datatype_external32.c | 97 + ompi/datatype/ompi_datatype_get_elements.c | 77 + ompi/datatype/ompi_datatype_internal.h | 655 ++ ompi/datatype/ompi_datatype_match_size.c | 53 + ompi/datatype/ompi_datatype_module.c | 773 ++ ompi/datatype/ompi_datatype_sndrcv.c | 125 + ompi/debuggers/MPI_Handles_interface.txt | 663 ++ ompi/debuggers/Makefile.am | 90 + ompi/debuggers/debuggers.h | 56 + ompi/debuggers/dlopen_test.c | 139 + ompi/debuggers/mpihandles_interface.h | 882 ++ ompi/debuggers/msgq_interface.h | 696 ++ ompi/debuggers/ompi_common_dll.c | 650 ++ ompi/debuggers/ompi_common_dll_defs.h | 337 + ompi/debuggers/ompi_debugger_canary.c | 37 + ompi/debuggers/ompi_debuggers.c | 192 + ompi/debuggers/ompi_mpihandles_dll.c | 786 ++ ompi/debuggers/ompi_mpihandles_dll_defs.h | 42 + ompi/debuggers/ompi_msgq_dll.c | 1426 +++ ompi/debuggers/ompi_msgq_dll_defs.h | 122 + ompi/debuggers/predefined_gap_test.c | 162 + ompi/debuggers/predefined_pad_test.c | 76 + ompi/debuggers/tv-debugger-attach.txt | 223 + ompi/dpm/Makefile.am | 19 + ompi/dpm/dpm.c | 1253 +++ ompi/dpm/dpm.h | 106 + ompi/errhandler/Makefile.am | 37 + ompi/errhandler/errcode-internal.c | 310 + ompi/errhandler/errcode-internal.h | 101 + ompi/errhandler/errcode.c | 375 + ompi/errhandler/errcode.h | 200 + ompi/errhandler/errhandler.c | 298 + ompi/errhandler/errhandler.h | 415 + ompi/errhandler/errhandler_invoke.c | 188 + ompi/errhandler/errhandler_predefined.c | 396 + ompi/errhandler/errhandler_predefined.h | 49 + ompi/errhandler/help-mpi-errors.txt | 40 + ompi/etc/Makefile.am | 62 + ompi/etc/openmpi-totalview.tcl | 38 + ompi/file/Makefile.am | 26 + ompi/file/file.c | 334 + ompi/file/file.h | 219 + ompi/group/Makefile.am | 35 + ompi/group/group.c | 580 ++ ompi/group/group.h | 435 + ompi/group/group_bitmap.c | 193 + ompi/group/group_dbg.h | 29 + ompi/group/group_init.c | 361 + ompi/group/group_plist.c | 295 + ompi/group/group_set_rank.c | 50 + ompi/group/group_sporadic.c | 191 + ompi/group/group_strided.c | 142 + ompi/include/Makefile.am | 128 + ompi/include/mpi.h.in | 2713 ++++++ ompi/include/mpif-config.h.in | 81 + ompi/include/mpif-externals.h | 48 + ompi/include/mpif-sentinels.h | 68 + ompi/include/mpif-values.pl | 531 ++ ompi/include/mpif.h.in | 61 + ompi/include/ompi/Makefile.am | 32 + ompi/include/ompi/constants.h | 82 + ompi/include/ompi/memchecker.h | 409 + ompi/include/ompi/totalview.h | 27 + ompi/include/ompi/types.h | 36 + ompi/include/ompi/version.h.in | 39 + ompi/include/ompi_config.h | 59 + ompi/info/Makefile.am | 27 + ompi/info/info.c | 726 ++ ompi/info/info.h | 369 + ompi/mca/Makefile.am | 23 + ompi/mca/bml/Makefile.am | 37 + ompi/mca/bml/base/Makefile.am | 30 + ompi/mca/bml/base/base.h | 82 + ompi/mca/bml/base/bml_base_btl.c | 140 + ompi/mca/bml/base/bml_base_btl.h | 41 + ompi/mca/bml/base/bml_base_endpoint.c | 52 + ompi/mca/bml/base/bml_base_frame.c | 131 + ompi/mca/bml/base/bml_base_ft.c | 68 + ompi/mca/bml/base/bml_base_init.c | 96 + ompi/mca/bml/base/owner.txt | 7 + ompi/mca/bml/bml.h | 599 ++ ompi/mca/bml/r2/Makefile.am | 45 + ompi/mca/bml/r2/bml_r2.c | 986 ++ ompi/mca/bml/r2/bml_r2.h | 72 + ompi/mca/bml/r2/bml_r2_component.c | 92 + ompi/mca/bml/r2/bml_r2_ft.c | 292 + ompi/mca/bml/r2/bml_r2_ft.h | 29 + ompi/mca/bml/r2/configure.m4 | 26 + ompi/mca/bml/r2/help-mca-bml-r2.txt | 34 + ompi/mca/bml/r2/owner.txt | 7 + ompi/mca/coll/Makefile.am | 39 + ompi/mca/coll/base/Makefile.am | 45 + ompi/mca/coll/base/README.memory_management | 124 + ompi/mca/coll/base/base.h | 130 + ompi/mca/coll/base/coll_base_allgather.c | 744 ++ ompi/mca/coll/base/coll_base_allgatherv.c | 664 ++ ompi/mca/coll/base/coll_base_allreduce.c | 915 ++ ompi/mca/coll/base/coll_base_alltoall.c | 675 ++ ompi/mca/coll/base/coll_base_alltoallv.c | 291 + ompi/mca/coll/base/coll_base_barrier.c | 436 + ompi/mca/coll/base/coll_base_bcast.c | 665 ++ ompi/mca/coll/base/coll_base_comm_select.c | 414 + ompi/mca/coll/base/coll_base_comm_unselect.c | 108 + ompi/mca/coll/base/coll_base_find_available.c | 170 + ompi/mca/coll/base/coll_base_frame.c | 130 + ompi/mca/coll/base/coll_base_functions.h | 460 + ompi/mca/coll/base/coll_base_gather.c | 411 + ompi/mca/coll/base/coll_base_reduce.c | 708 ++ ompi/mca/coll/base/coll_base_reduce_scatter.c | 622 ++ ompi/mca/coll/base/coll_base_scatter.c | 258 + ompi/mca/coll/base/coll_base_topo.c | 620 ++ ompi/mca/coll/base/coll_base_topo.h | 62 + ompi/mca/coll/base/coll_base_util.c | 89 + ompi/mca/coll/base/coll_base_util.h | 74 + ompi/mca/coll/base/coll_tags.h | 47 + ompi/mca/coll/base/help-mca-coll-base.txt | 47 + ompi/mca/coll/base/owner.txt | 7 + ompi/mca/coll/basic/Makefile.am | 71 + ompi/mca/coll/basic/coll_basic.h | 294 + ompi/mca/coll/basic/coll_basic_allgather.c | 167 + ompi/mca/coll/basic/coll_basic_allgatherv.c | 73 + ompi/mca/coll/basic/coll_basic_allreduce.c | 209 + ompi/mca/coll/basic/coll_basic_alltoall.c | 121 + ompi/mca/coll/basic/coll_basic_alltoallv.c | 111 + ompi/mca/coll/basic/coll_basic_alltoallw.c | 332 + ompi/mca/coll/basic/coll_basic_barrier.c | 132 + ompi/mca/coll/basic/coll_basic_bcast.c | 199 + ompi/mca/coll/basic/coll_basic_component.c | 113 + ompi/mca/coll/basic/coll_basic_exscan.c | 135 + ompi/mca/coll/basic/coll_basic_gather.c | 86 + ompi/mca/coll/basic/coll_basic_gatherv.c | 167 + ompi/mca/coll/basic/coll_basic_module.c | 178 + .../basic/coll_basic_neighbor_allgather.c | 253 + .../basic/coll_basic_neighbor_allgatherv.c | 233 + .../coll/basic/coll_basic_neighbor_alltoall.c | 276 + .../basic/coll_basic_neighbor_alltoallv.c | 260 + .../basic/coll_basic_neighbor_alltoallw.c | 254 + ompi/mca/coll/basic/coll_basic_reduce.c | 369 + .../coll/basic/coll_basic_reduce_scatter.c | 491 + .../basic/coll_basic_reduce_scatter_block.c | 229 + ompi/mca/coll/basic/coll_basic_scan.c | 130 + ompi/mca/coll/basic/coll_basic_scatter.c | 93 + ompi/mca/coll/basic/coll_basic_scatterv.c | 170 + ompi/mca/coll/basic/owner.txt | 7 + ompi/mca/coll/coll.h | 624 ++ ompi/mca/coll/cuda/Makefile.am | 40 + ompi/mca/coll/cuda/coll_cuda.h | 101 + ompi/mca/coll/cuda/coll_cuda_allreduce.c | 74 + ompi/mca/coll/cuda/coll_cuda_component.c | 91 + ompi/mca/coll/cuda/coll_cuda_exscan.c | 67 + ompi/mca/coll/cuda/coll_cuda_module.c | 154 + ompi/mca/coll/cuda/coll_cuda_reduce.c | 79 + .../cuda/coll_cuda_reduce_scatter_block.c | 81 + ompi/mca/coll/cuda/coll_cuda_scan.c | 73 + ompi/mca/coll/cuda/configure.m4 | 29 + ompi/mca/coll/cuda/help-mpi-coll-cuda.txt | 28 + ompi/mca/coll/cuda/owner.txt | 7 + ompi/mca/coll/demo/.opal_ignore | 0 ompi/mca/coll/demo/Makefile.am | 64 + ompi/mca/coll/demo/coll_demo.h | 252 + ompi/mca/coll/demo/coll_demo_allgather.c | 69 + ompi/mca/coll/demo/coll_demo_allgatherv.c | 72 + ompi/mca/coll/demo/coll_demo_allreduce.c | 68 + ompi/mca/coll/demo/coll_demo_alltoall.c | 72 + ompi/mca/coll/demo/coll_demo_alltoallv.c | 74 + ompi/mca/coll/demo/coll_demo_alltoallw.c | 72 + ompi/mca/coll/demo/coll_demo_barrier.c | 60 + ompi/mca/coll/demo/coll_demo_bcast.c | 66 + ompi/mca/coll/demo/coll_demo_component.c | 143 + ompi/mca/coll/demo/coll_demo_exscan.c | 51 + ompi/mca/coll/demo/coll_demo_gather.c | 71 + ompi/mca/coll/demo/coll_demo_gatherv.c | 72 + ompi/mca/coll/demo/coll_demo_module.c | 226 + ompi/mca/coll/demo/coll_demo_reduce.c | 68 + ompi/mca/coll/demo/coll_demo_reduce_scatter.c | 68 + ompi/mca/coll/demo/coll_demo_scan.c | 52 + ompi/mca/coll/demo/coll_demo_scatter.c | 74 + ompi/mca/coll/demo/coll_demo_scatterv.c | 72 + ompi/mca/coll/demo/configure.stub | 22 + ompi/mca/coll/demo/owner.txt | 7 + ompi/mca/coll/fca/Makefile.am | 48 + ompi/mca/coll/fca/coll_fca.h | 360 + ompi/mca/coll/fca/coll_fca_api.h | 117 + ompi/mca/coll/fca/coll_fca_component.c | 1539 +++ ompi/mca/coll/fca/coll_fca_convertor.h | 86 + ompi/mca/coll/fca/coll_fca_debug.h | 34 + ompi/mca/coll/fca/coll_fca_module.c | 695 ++ ompi/mca/coll/fca/coll_fca_ops.c | 632 ++ ompi/mca/coll/fca/configure.m4 | 33 + ompi/mca/coll/fca/owner.txt | 7 + ompi/mca/coll/hcoll/Makefile.am | 50 + ompi/mca/coll/hcoll/coll_hcoll.h | 319 + ompi/mca/coll/hcoll/coll_hcoll_component.c | 268 + ompi/mca/coll/hcoll/coll_hcoll_debug.h | 35 + ompi/mca/coll/hcoll/coll_hcoll_dtypes.h | 265 + ompi/mca/coll/hcoll/coll_hcoll_module.c | 433 + ompi/mca/coll/hcoll/coll_hcoll_ops.c | 724 ++ ompi/mca/coll/hcoll/coll_hcoll_rte.c | 496 + ompi/mca/coll/hcoll/configure.m4 | 38 + ompi/mca/coll/hcoll/owner.txt | 7 + ompi/mca/coll/inter/Makefile.am | 56 + ompi/mca/coll/inter/coll_inter.c | 178 + ompi/mca/coll/inter/coll_inter.h | 125 + ompi/mca/coll/inter/coll_inter_allgather.c | 116 + ompi/mca/coll/inter/coll_inter_allgatherv.c | 150 + ompi/mca/coll/inter/coll_inter_allreduce.c | 111 + ompi/mca/coll/inter/coll_inter_bcast.c | 80 + ompi/mca/coll/inter/coll_inter_component.c | 126 + ompi/mca/coll/inter/coll_inter_gather.c | 99 + ompi/mca/coll/inter/coll_inter_gatherv.c | 134 + ompi/mca/coll/inter/coll_inter_reduce.c | 98 + ompi/mca/coll/inter/coll_inter_scatter.c | 98 + ompi/mca/coll/inter/coll_inter_scatterv.c | 140 + ompi/mca/coll/inter/owner.txt | 7 + ompi/mca/coll/libnbc/Makefile.am | 79 + ompi/mca/coll/libnbc/coll_libnbc.h | 290 + ompi/mca/coll/libnbc/coll_libnbc_component.c | 369 + ompi/mca/coll/libnbc/libdict/dict.c | 106 + ompi/mca/coll/libnbc/libdict/dict.h | 140 + ompi/mca/coll/libnbc/libdict/dict_private.h | 84 + ompi/mca/coll/libnbc/libdict/hb_tree.c | 906 ++ ompi/mca/coll/libnbc/libdict/hb_tree.h | 64 + ompi/mca/coll/libnbc/nbc.c | 742 ++ ompi/mca/coll/libnbc/nbc_iallgather.c | 221 + ompi/mca/coll/libnbc/nbc_iallgatherv.c | 169 + ompi/mca/coll/libnbc/nbc_iallreduce.c | 692 ++ ompi/mca/coll/libnbc/nbc_ialltoall.c | 546 ++ ompi/mca/coll/libnbc/nbc_ialltoallv.c | 344 + ompi/mca/coll/libnbc/nbc_ialltoallw.c | 318 + ompi/mca/coll/libnbc/nbc_ibarrier.c | 197 + ompi/mca/coll/libnbc/nbc_ibcast.c | 376 + ompi/mca/coll/libnbc/nbc_iexscan.c | 193 + ompi/mca/coll/libnbc/nbc_igather.c | 230 + ompi/mca/coll/libnbc/nbc_igatherv.c | 165 + .../mca/coll/libnbc/nbc_ineighbor_allgather.c | 162 + .../coll/libnbc/nbc_ineighbor_allgatherv.c | 164 + ompi/mca/coll/libnbc/nbc_ineighbor_alltoall.c | 166 + .../mca/coll/libnbc/nbc_ineighbor_alltoallv.c | 171 + .../mca/coll/libnbc/nbc_ineighbor_alltoallw.c | 156 + ompi/mca/coll/libnbc/nbc_internal.h | 615 ++ ompi/mca/coll/libnbc/nbc_ireduce.c | 518 + ompi/mca/coll/libnbc/nbc_ireduce_scatter.c | 329 + .../coll/libnbc/nbc_ireduce_scatter_block.c | 327 + ompi/mca/coll/libnbc/nbc_iscan.c | 170 + ompi/mca/coll/libnbc/nbc_iscatter.c | 227 + ompi/mca/coll/libnbc/nbc_iscatterv.c | 161 + ompi/mca/coll/libnbc/nbc_neighbor_helpers.c | 103 + ompi/mca/coll/libnbc/owner.txt | 7 + ompi/mca/coll/portals4/Makefile.am | 43 + ompi/mca/coll/portals4/coll_portals4.h | 470 + .../coll/portals4/coll_portals4_allreduce.c | 424 + .../mca/coll/portals4/coll_portals4_barrier.c | 318 + ompi/mca/coll/portals4/coll_portals4_bcast.c | 948 ++ .../coll/portals4/coll_portals4_component.c | 765 ++ ompi/mca/coll/portals4/coll_portals4_gather.c | 1381 +++ ompi/mca/coll/portals4/coll_portals4_reduce.c | 448 + .../mca/coll/portals4/coll_portals4_request.c | 54 + .../mca/coll/portals4/coll_portals4_request.h | 191 + .../mca/coll/portals4/coll_portals4_scatter.c | 797 ++ ompi/mca/coll/portals4/configure.m4 | 35 + ompi/mca/coll/portals4/owner.txt | 7 + ompi/mca/coll/self/Makefile.am | 62 + ompi/mca/coll/self/coll_self.h | 155 + ompi/mca/coll/self/coll_self_allgather.c | 47 + ompi/mca/coll/self/coll_self_allgatherv.c | 54 + ompi/mca/coll/self/coll_self_allreduce.c | 46 + ompi/mca/coll/self/coll_self_alltoall.c | 49 + ompi/mca/coll/self/coll_self_alltoallv.c | 63 + ompi/mca/coll/self/coll_self_alltoallw.c | 63 + ompi/mca/coll/self/coll_self_barrier.c | 38 + ompi/mca/coll/self/coll_self_bcast.c | 41 + ompi/mca/coll/self/coll_self_component.c | 102 + ompi/mca/coll/self/coll_self_exscan.c | 43 + ompi/mca/coll/self/coll_self_gather.c | 48 + ompi/mca/coll/self/coll_self_gatherv.c | 55 + ompi/mca/coll/self/coll_self_module.c | 122 + ompi/mca/coll/self/coll_self_reduce.c | 46 + ompi/mca/coll/self/coll_self_reduce_scatter.c | 46 + ompi/mca/coll/self/coll_self_scan.c | 46 + ompi/mca/coll/self/coll_self_scatter.c | 49 + ompi/mca/coll/self/coll_self_scatterv.c | 54 + ompi/mca/coll/self/owner.txt | 7 + ompi/mca/coll/sm/Makefile.am | 70 + ompi/mca/coll/sm/coll_sm.h | 455 + ompi/mca/coll/sm/coll_sm_allgather.c | 41 + ompi/mca/coll/sm/coll_sm_allgatherv.c | 42 + ompi/mca/coll/sm/coll_sm_allreduce.c | 62 + ompi/mca/coll/sm/coll_sm_alltoall.c | 41 + ompi/mca/coll/sm/coll_sm_alltoallv.c | 42 + ompi/mca/coll/sm/coll_sm_alltoallw.c | 42 + ompi/mca/coll/sm/coll_sm_barrier.c | 123 + ompi/mca/coll/sm/coll_sm_bcast.c | 260 + ompi/mca/coll/sm/coll_sm_component.c | 257 + ompi/mca/coll/sm/coll_sm_exscan.c | 41 + ompi/mca/coll/sm/coll_sm_gather.c | 41 + ompi/mca/coll/sm/coll_sm_gatherv.c | 42 + ompi/mca/coll/sm/coll_sm_module.c | 611 ++ ompi/mca/coll/sm/coll_sm_reduce.c | 568 ++ ompi/mca/coll/sm/coll_sm_reduce_scatter.c | 41 + ompi/mca/coll/sm/coll_sm_scan.c | 41 + ompi/mca/coll/sm/coll_sm_scatter.c | 41 + ompi/mca/coll/sm/coll_sm_scatterv.c | 42 + ompi/mca/coll/sm/help-mpi-coll-sm.txt | 36 + ompi/mca/coll/sm/memory-layout.ppt | Bin 0 -> 104447 bytes ompi/mca/coll/sm/owner.txt | 7 + ompi/mca/coll/sync/Makefile.am | 54 + ompi/mca/coll/sync/coll_sync.h | 184 + ompi/mca/coll/sync/coll_sync_bcast.c | 46 + ompi/mca/coll/sync/coll_sync_component.c | 104 + ompi/mca/coll/sync/coll_sync_exscan.c | 46 + ompi/mca/coll/sync/coll_sync_gather.c | 49 + ompi/mca/coll/sync/coll_sync_gatherv.c | 50 + ompi/mca/coll/sync/coll_sync_module.c | 202 + ompi/mca/coll/sync/coll_sync_reduce.c | 46 + ompi/mca/coll/sync/coll_sync_reduce_scatter.c | 49 + ompi/mca/coll/sync/coll_sync_scan.c | 45 + ompi/mca/coll/sync/coll_sync_scatter.c | 49 + ompi/mca/coll/sync/coll_sync_scatterv.c | 49 + ompi/mca/coll/sync/help-coll-sync.txt | 22 + ompi/mca/coll/sync/owner.txt | 7 + ompi/mca/coll/tuned/Makefile.am | 63 + ompi/mca/coll/tuned/coll_tuned.h | 198 + .../tuned/coll_tuned_allgather_decision.c | 169 + .../tuned/coll_tuned_allgatherv_decision.c | 166 + .../tuned/coll_tuned_allreduce_decision.c | 149 + .../coll/tuned/coll_tuned_alltoall_decision.c | 171 + .../tuned/coll_tuned_alltoallv_decision.c | 121 + .../coll/tuned/coll_tuned_barrier_decision.c | 108 + .../coll/tuned/coll_tuned_bcast_decision.c | 150 + ompi/mca/coll/tuned/coll_tuned_component.c | 275 + .../coll/tuned/coll_tuned_decision_dynamic.c | 612 ++ .../coll/tuned/coll_tuned_decision_fixed.c | 770 ++ ompi/mca/coll/tuned/coll_tuned_dynamic_file.c | 288 + ompi/mca/coll/tuned/coll_tuned_dynamic_file.h | 36 + .../mca/coll/tuned/coll_tuned_dynamic_rules.c | 391 + .../mca/coll/tuned/coll_tuned_dynamic_rules.h | 104 + .../coll/tuned/coll_tuned_gather_decision.c | 158 + ompi/mca/coll/tuned/coll_tuned_module.c | 289 + .../coll/tuned/coll_tuned_reduce_decision.c | 180 + .../coll_tuned_reduce_scatter_decision.c | 146 + .../coll/tuned/coll_tuned_scatter_decision.c | 152 + ompi/mca/coll/tuned/owner.txt | 7 + ompi/mca/common/Makefile.am | 25 + ompi/mca/common/ompio/Makefile.am | 101 + ompi/mca/common/ompio/common_ompio.h | 92 + .../mca/common/ompio/common_ompio_file_open.c | 466 + .../mca/common/ompio/common_ompio_file_read.c | 392 + .../mca/common/ompio/common_ompio_file_view.c | 286 + .../common/ompio/common_ompio_file_write.c | 457 + .../common/ompio/common_ompio_print_queue.c | 230 + .../common/ompio/common_ompio_print_queue.h | 70 + ompi/mca/common/ompio/configure.m4 | 22 + ompi/mca/crcp/Makefile.am | 50 + ompi/mca/crcp/base/Makefile.am | 27 + ompi/mca/crcp/base/base.h | 201 + ompi/mca/crcp/base/crcp_base_fns.c | 436 + ompi/mca/crcp/base/crcp_base_frame.c | 52 + ompi/mca/crcp/base/crcp_base_select.c | 180 + ompi/mca/crcp/base/owner.txt | 7 + ompi/mca/crcp/bkmrk/Makefile.am | 46 + ompi/mca/crcp/bkmrk/configure.m4 | 28 + ompi/mca/crcp/bkmrk/crcp_bkmrk.h | 68 + ompi/mca/crcp/bkmrk/crcp_bkmrk_btl.c | 180 + ompi/mca/crcp/bkmrk/crcp_bkmrk_btl.h | 124 + ompi/mca/crcp/bkmrk/crcp_bkmrk_component.c | 146 + ompi/mca/crcp/bkmrk/crcp_bkmrk_module.c | 167 + ompi/mca/crcp/bkmrk/crcp_bkmrk_pml.c | 6490 +++++++++++++ ompi/mca/crcp/bkmrk/crcp_bkmrk_pml.h | 457 + ompi/mca/crcp/bkmrk/owner.txt | 7 + ompi/mca/crcp/crcp.h | 383 + ompi/mca/crcp/ompi_crcp.7in | 93 + ompi/mca/fbtl/Makefile.am | 40 + ompi/mca/fbtl/base/Makefile.am | 27 + ompi/mca/fbtl/base/base.h | 58 + ompi/mca/fbtl/base/fbtl_base_file_select.c | 259 + ompi/mca/fbtl/base/fbtl_base_file_unselect.c | 41 + ompi/mca/fbtl/base/fbtl_base_find_available.c | 128 + ompi/mca/fbtl/base/fbtl_base_frame.c | 50 + ompi/mca/fbtl/base/owner.txt | 7 + ompi/mca/fbtl/configure.m4 | 28 + ompi/mca/fbtl/fbtl.h | 163 + ompi/mca/fbtl/plfs/Makefile.am | 56 + ompi/mca/fbtl/plfs/configure.m4 | 42 + ompi/mca/fbtl/plfs/fbtl_plfs.c | 85 + ompi/mca/fbtl/plfs/fbtl_plfs.h | 64 + ompi/mca/fbtl/plfs/fbtl_plfs_component.c | 65 + ompi/mca/fbtl/plfs/fbtl_plfs_ipreadv.c | 33 + ompi/mca/fbtl/plfs/fbtl_plfs_ipwritev.c | 33 + ompi/mca/fbtl/plfs/fbtl_plfs_preadv.c | 55 + ompi/mca/fbtl/plfs/fbtl_plfs_pwritev.c | 54 + ompi/mca/fbtl/plfs/owner.txt | 7 + ompi/mca/fbtl/posix/Makefile.am | 53 + ompi/mca/fbtl/posix/configure.m4 | 41 + ompi/mca/fbtl/posix/fbtl_posix.c | 237 + ompi/mca/fbtl/posix/fbtl_posix.h | 97 + ompi/mca/fbtl/posix/fbtl_posix_component.c | 65 + ompi/mca/fbtl/posix/fbtl_posix_ipreadv.c | 121 + ompi/mca/fbtl/posix/fbtl_posix_ipwritev.c | 120 + ompi/mca/fbtl/posix/fbtl_posix_lock.c | 149 + ompi/mca/fbtl/posix/fbtl_posix_preadv.c | 127 + ompi/mca/fbtl/posix/fbtl_posix_pwritev.c | 135 + ompi/mca/fbtl/posix/owner.txt | 7 + ompi/mca/fbtl/pvfs2/Makefile.am | 56 + ompi/mca/fbtl/pvfs2/configure.m4 | 43 + ompi/mca/fbtl/pvfs2/fbtl_pvfs2.c | 87 + ompi/mca/fbtl/pvfs2/fbtl_pvfs2.h | 75 + ompi/mca/fbtl/pvfs2/fbtl_pvfs2_component.c | 65 + ompi/mca/fbtl/pvfs2/fbtl_pvfs2_ipreadv.c | 33 + ompi/mca/fbtl/pvfs2/fbtl_pvfs2_ipwritev.c | 33 + ompi/mca/fbtl/pvfs2/fbtl_pvfs2_preadv.c | 149 + ompi/mca/fbtl/pvfs2/fbtl_pvfs2_pwritev.c | 159 + ompi/mca/fbtl/pvfs2/owner.txt | 7 + ompi/mca/fcoll/Makefile.am | 40 + ompi/mca/fcoll/base/Makefile.am | 30 + ompi/mca/fcoll/base/base.h | 59 + ompi/mca/fcoll/base/fcoll_base_coll_array.c | 499 + ompi/mca/fcoll/base/fcoll_base_coll_array.h | 108 + ompi/mca/fcoll/base/fcoll_base_file_select.c | 287 + .../mca/fcoll/base/fcoll_base_file_unselect.c | 41 + .../fcoll/base/fcoll_base_find_available.c | 126 + ompi/mca/fcoll/base/fcoll_base_frame.c | 46 + ompi/mca/fcoll/base/fcoll_base_sort.c | 131 + ompi/mca/fcoll/base/owner.txt | 7 + ompi/mca/fcoll/configure.m4 | 28 + ompi/mca/fcoll/dynamic/Makefile.am | 49 + ompi/mca/fcoll/dynamic/fcoll_dynamic.h | 69 + .../fcoll/dynamic/fcoll_dynamic_component.c | 90 + .../dynamic/fcoll_dynamic_file_read_all.c | 1077 +++ .../dynamic/fcoll_dynamic_file_write_all.c | 1186 +++ ompi/mca/fcoll/dynamic/fcoll_dynamic_module.c | 90 + ompi/mca/fcoll/dynamic/owner.txt | 7 + ompi/mca/fcoll/dynamic_gen2/Makefile.am | 49 + .../fcoll/dynamic_gen2/fcoll_dynamic_gen2.h | 71 + .../fcoll_dynamic_gen2_component.c | 106 + .../fcoll_dynamic_gen2_file_read_all.c | 1077 +++ .../fcoll_dynamic_gen2_file_write_all.c | 1709 ++++ .../dynamic_gen2/fcoll_dynamic_gen2_module.c | 90 + ompi/mca/fcoll/dynamic_gen2/owner.txt | 7 + ompi/mca/fcoll/fcoll.h | 177 + ompi/mca/fcoll/individual/Makefile.am | 49 + ompi/mca/fcoll/individual/fcoll_individual.h | 69 + .../individual/fcoll_individual_component.c | 92 + .../fcoll_individual_file_read_all.c | 41 + .../fcoll_individual_file_write_all.c | 40 + .../individual/fcoll_individual_module.c | 93 + ompi/mca/fcoll/individual/owner.txt | 7 + ompi/mca/fcoll/static/Makefile.am | 49 + ompi/mca/fcoll/static/fcoll_static.h | 68 + .../mca/fcoll/static/fcoll_static_component.c | 93 + .../fcoll/static/fcoll_static_file_read_all.c | 1189 +++ .../static/fcoll_static_file_write_all.c | 1197 +++ ompi/mca/fcoll/static/fcoll_static_module.c | 90 + ompi/mca/fcoll/static/owner.txt | 7 + ompi/mca/fcoll/two_phase/Makefile.am | 50 + ompi/mca/fcoll/two_phase/fcoll_two_phase.h | 116 + .../two_phase/fcoll_two_phase_component.c | 93 + .../two_phase/fcoll_two_phase_file_read_all.c | 1172 +++ .../fcoll_two_phase_file_write_all.c | 1511 +++ .../fcoll/two_phase/fcoll_two_phase_module.c | 90 + .../two_phase/fcoll_two_phase_support_fns.c | 528 + ompi/mca/fcoll/two_phase/owner.txt | 7 + ompi/mca/fs/Makefile.am | 40 + ompi/mca/fs/base/Makefile.am | 28 + ompi/mca/fs/base/base.h | 60 + ompi/mca/fs/base/fs_base_file_select.c | 254 + ompi/mca/fs/base/fs_base_file_unselect.c | 42 + ompi/mca/fs/base/fs_base_find_available.c | 128 + ompi/mca/fs/base/fs_base_frame.c | 34 + ompi/mca/fs/base/fs_base_get_parent_dir.c | 124 + ompi/mca/fs/base/owner.txt | 7 + ompi/mca/fs/configure.m4 | 28 + ompi/mca/fs/fs.h | 151 + ompi/mca/fs/lustre/.opal_unignore | 1 + ompi/mca/fs/lustre/Makefile.am | 58 + ompi/mca/fs/lustre/configure.m4 | 41 + ompi/mca/fs/lustre/fs_lustre.c | 138 + ompi/mca/fs/lustre/fs_lustre.h | 90 + ompi/mca/fs/lustre/fs_lustre_component.c | 98 + ompi/mca/fs/lustre/fs_lustre_file_close.c | 44 + ompi/mca/fs/lustre/fs_lustre_file_delete.c | 48 + ompi/mca/fs/lustre/fs_lustre_file_get_size.c | 50 + ompi/mca/fs/lustre/fs_lustre_file_open.c | 159 + ompi/mca/fs/lustre/fs_lustre_file_set_size.c | 53 + ompi/mca/fs/lustre/fs_lustre_file_sync.c | 47 + ompi/mca/fs/lustre/owner.txt | 7 + ompi/mca/fs/plfs/Makefile.am | 58 + ompi/mca/fs/plfs/configure.m4 | 41 + ompi/mca/fs/plfs/fs_plfs.c | 154 + ompi/mca/fs/plfs/fs_plfs.h | 82 + ompi/mca/fs/plfs/fs_plfs_component.c | 81 + ompi/mca/fs/plfs/fs_plfs_file_close.c | 84 + ompi/mca/fs/plfs/fs_plfs_file_delete.c | 50 + ompi/mca/fs/plfs/fs_plfs_file_get_size.c | 56 + ompi/mca/fs/plfs/fs_plfs_file_open.c | 111 + ompi/mca/fs/plfs/fs_plfs_file_set_size.c | 41 + ompi/mca/fs/plfs/fs_plfs_file_sync.c | 45 + ompi/mca/fs/plfs/owner.txt | 7 + ompi/mca/fs/pvfs2/Makefile.am | 58 + ompi/mca/fs/pvfs2/configure.m4 | 47 + ompi/mca/fs/pvfs2/fs_pvfs2.c | 143 + ompi/mca/fs/pvfs2/fs_pvfs2.h | 100 + ompi/mca/fs/pvfs2/fs_pvfs2_component.c | 98 + ompi/mca/fs/pvfs2/fs_pvfs2_file_close.c | 54 + ompi/mca/fs/pvfs2/fs_pvfs2_file_delete.c | 79 + ompi/mca/fs/pvfs2/fs_pvfs2_file_get_size.c | 58 + ompi/mca/fs/pvfs2/fs_pvfs2_file_open.c | 320 + ompi/mca/fs/pvfs2/fs_pvfs2_file_set_size.c | 72 + ompi/mca/fs/pvfs2/fs_pvfs2_file_sync.c | 64 + ompi/mca/fs/pvfs2/owner.txt | 7 + ompi/mca/fs/ufs/Makefile.am | 54 + ompi/mca/fs/ufs/fs_ufs.c | 95 + ompi/mca/fs/ufs/fs_ufs.h | 86 + ompi/mca/fs/ufs/fs_ufs_component.c | 95 + ompi/mca/fs/ufs/fs_ufs_file_close.c | 50 + ompi/mca/fs/ufs/fs_ufs_file_delete.c | 48 + ompi/mca/fs/ufs/fs_ufs_file_get_size.c | 52 + ompi/mca/fs/ufs/fs_ufs_file_open.c | 214 + ompi/mca/fs/ufs/fs_ufs_file_set_size.c | 55 + ompi/mca/fs/ufs/fs_ufs_file_sync.c | 40 + ompi/mca/fs/ufs/owner.txt | 7 + ompi/mca/hook/Makefile.am | 27 + ompi/mca/hook/base/Makefile.am | 16 + ompi/mca/hook/base/base.h | 58 + ompi/mca/hook/base/help-mca-hook-base.txt | 19 + ompi/mca/hook/base/hook_base.c | 297 + ompi/mca/hook/base/owner.txt | 7 + ompi/mca/hook/configure.m4 | 14 + ompi/mca/hook/demo/.opal_ignore | 0 ompi/mca/hook/demo/Makefile.am | 20 + ompi/mca/hook/demo/configure.m4 | 25 + ompi/mca/hook/demo/hook_demo.h | 43 + ompi/mca/hook/demo/hook_demo_component.c | 107 + ompi/mca/hook/demo/hook_demo_fns.c | 65 + ompi/mca/hook/demo/owner.txt | 7 + ompi/mca/hook/hook.h | 219 + ompi/mca/io/Makefile.am | 39 + ompi/mca/io/base/Makefile.am | 29 + ompi/mca/io/base/base.h | 175 + ompi/mca/io/base/io_base_component_list.c | 0 ompi/mca/io/base/io_base_delete.c | 378 + ompi/mca/io/base/io_base_file_select.c | 472 + ompi/mca/io/base/io_base_find_available.c | 156 + ompi/mca/io/base/io_base_frame.c | 45 + ompi/mca/io/base/io_base_register_datarep.c | 64 + ompi/mca/io/base/io_base_request.c | 49 + ompi/mca/io/base/io_base_request.h | 65 + ompi/mca/io/base/owner.txt | 7 + ompi/mca/io/configure.m4 | 40 + ompi/mca/io/io.h | 381 + ompi/mca/io/ompio/Makefile.am | 61 + ompi/mca/io/ompio/configure.m4 | 21 + ompi/mca/io/ompio/io_ompio.c | 657 ++ ompi/mca/io/ompio/io_ompio.h | 600 ++ ompi/mca/io/ompio/io_ompio_aggregators.c | 1284 +++ ompi/mca/io/ompio/io_ompio_aggregators.h | 104 + ompi/mca/io/ompio/io_ompio_component.c | 361 + ompi/mca/io/ompio/io_ompio_file_open.c | 592 ++ ompi/mca/io/ompio/io_ompio_file_read.c | 438 + ompi/mca/io/ompio/io_ompio_file_set_view.c | 109 + ompi/mca/io/ompio/io_ompio_file_write.c | 453 + ompi/mca/io/ompio/io_ompio_module.c | 99 + ompi/mca/io/ompio/io_ompio_request.c | 99 + ompi/mca/io/ompio/io_ompio_request.h | 66 + ompi/mca/io/ompio/owner.txt | 7 + ompi/mca/io/romio314/.gitignore | 16 + ompi/mca/io/romio314/Makefile.am | 62 + ompi/mca/io/romio314/REFRESH_NOTES.txt | 58 + ompi/mca/io/romio314/autogen.subdirs | 1 + ompi/mca/io/romio314/configure.m4 | 108 + ompi/mca/io/romio314/ompi.patch | 971 ++ ompi/mca/io/romio314/owner.txt | 7 + ompi/mca/io/romio314/romio/.codingcheck | 55 + ompi/mca/io/romio314/romio/.config_params | 39 + ompi/mca/io/romio314/romio/COPYRIGHT | 41 + ompi/mca/io/romio314/romio/Makefile.am | 192 + ompi/mca/io/romio314/romio/Makefile.options | 36 + ompi/mca/io/romio314/romio/README | 660 ++ ompi/mca/io/romio314/romio/README_OMPI | 11 + ompi/mca/io/romio314/romio/adio/Makefile.mk | 47 + .../io/romio314/romio/adio/ad_gpfs/.gitignore | 11 + .../romio314/romio/adio/ad_gpfs/Makefile.mk | 26 + .../io/romio314/romio/adio/ad_gpfs/ad_gpfs.c | 61 + .../io/romio314/romio/adio/ad_gpfs/ad_gpfs.h | 71 + .../romio/adio/ad_gpfs/ad_gpfs_aggrs.c | 846 ++ .../romio/adio/ad_gpfs/ad_gpfs_aggrs.h | 86 + .../romio/adio/ad_gpfs/ad_gpfs_close.c | 57 + .../romio/adio/ad_gpfs/ad_gpfs_flush.c | 68 + .../romio/adio/ad_gpfs/ad_gpfs_hints.c | 288 + .../romio/adio/ad_gpfs/ad_gpfs_open.c | 156 + .../romio/adio/ad_gpfs/ad_gpfs_rdcoll.c | 1171 +++ .../romio/adio/ad_gpfs/ad_gpfs_tuning.c | 277 + .../romio/adio/ad_gpfs/ad_gpfs_tuning.h | 114 + .../romio/adio/ad_gpfs/ad_gpfs_wrcoll.c | 1696 ++++ .../romio/adio/ad_gpfs/bg/Makefile.mk | 18 + .../romio/adio/ad_gpfs/bg/ad_bg_aggrs.c | 675 ++ .../romio/adio/ad_gpfs/bg/ad_bg_aggrs.h | 33 + .../romio/adio/ad_gpfs/bg/ad_bg_pset.c | 377 + .../romio/adio/ad_gpfs/bg/ad_bg_pset.h | 83 + .../romio/adio/ad_gpfs/pe/Makefile.mk | 16 + .../romio/adio/ad_gpfs/pe/ad_pe_aggrs.c | 276 + .../romio/adio/ad_gpfs/pe/ad_pe_aggrs.h | 30 + .../romio/adio/ad_gridftp/Makefile.mk | 27 + .../romio/adio/ad_gridftp/ad_gridftp.c | 37 + .../romio/adio/ad_gridftp/ad_gridftp.h | 96 + .../romio/adio/ad_gridftp/ad_gridftp_close.c | 50 + .../romio/adio/ad_gridftp/ad_gridftp_delete.c | 95 + .../romio/adio/ad_gridftp/ad_gridftp_fcntl.c | 91 + .../adio/ad_gridftp/ad_gridftp_features.c | 18 + .../romio/adio/ad_gridftp/ad_gridftp_flush.c | 19 + .../romio/adio/ad_gridftp/ad_gridftp_hints.c | 68 + .../romio/adio/ad_gridftp/ad_gridftp_open.c | 343 + .../romio/adio/ad_gridftp/ad_gridftp_read.c | 468 + .../romio/adio/ad_gridftp/ad_gridftp_resize.c | 241 + .../romio/adio/ad_gridftp/ad_gridftp_write.c | 473 + .../romio/adio/ad_gridftp/globus_routines.c | 36 + .../io/romio314/romio/adio/ad_hfs/Makefile.mk | 21 + ompi/mca/io/romio314/romio/adio/ad_hfs/README | 1 + .../io/romio314/romio/adio/ad_hfs/ad_hfs.c | 36 + .../io/romio314/romio/adio/ad_hfs/ad_hfs.h | 34 + .../romio314/romio/adio/ad_hfs/ad_hfs_fcntl.c | 113 + .../romio314/romio/adio/ad_hfs/ad_hfs_open.c | 67 + .../romio314/romio/adio/ad_hfs/ad_hfs_read.c | 71 + .../romio/adio/ad_hfs/ad_hfs_resize.c | 31 + .../romio314/romio/adio/ad_hfs/ad_hfs_write.c | 70 + .../romio314/romio/adio/ad_lustre/Makefile.mk | 22 + .../io/romio314/romio/adio/ad_lustre/README | 55 + .../romio314/romio/adio/ad_lustre/ad_lustre.c | 44 + .../romio314/romio/adio/ad_lustre/ad_lustre.h | 91 + .../adio/ad_lustre/ad_lustre_aggregate.c | 322 + .../romio/adio/ad_lustre/ad_lustre_fcntl.c | 97 + .../romio/adio/ad_lustre/ad_lustre_hints.c | 134 + .../romio/adio/ad_lustre/ad_lustre_open.c | 175 + .../romio/adio/ad_lustre/ad_lustre_rwcontig.c | 203 + .../romio/adio/ad_lustre/ad_lustre_wrcoll.c | 989 ++ .../romio/adio/ad_lustre/ad_lustre_wrstr.c | 533 ++ .../io/romio314/romio/adio/ad_nfs/Makefile.mk | 28 + .../io/romio314/romio/adio/ad_nfs/ad_nfs.c | 41 + .../io/romio314/romio/adio/ad_nfs/ad_nfs.h | 83 + .../romio314/romio/adio/ad_nfs/ad_nfs_done.c | 19 + .../romio314/romio/adio/ad_nfs/ad_nfs_fcntl.c | 65 + .../romio/adio/ad_nfs/ad_nfs_features.c | 24 + .../romio314/romio/adio/ad_nfs/ad_nfs_getsh.c | 105 + .../romio314/romio/adio/ad_nfs/ad_nfs_hints.c | 13 + .../romio314/romio/adio/ad_nfs/ad_nfs_iread.c | 37 + .../romio/adio/ad_nfs/ad_nfs_iwrite.c | 130 + .../romio314/romio/adio/ad_nfs/ad_nfs_open.c | 58 + .../romio314/romio/adio/ad_nfs/ad_nfs_read.c | 545 ++ .../romio/adio/ad_nfs/ad_nfs_resize.c | 35 + .../romio314/romio/adio/ad_nfs/ad_nfs_setsh.c | 74 + .../romio314/romio/adio/ad_nfs/ad_nfs_wait.c | 20 + .../romio314/romio/adio/ad_nfs/ad_nfs_write.c | 670 ++ .../io/romio314/romio/adio/ad_ntfs/ad_ntfs.c | 38 + .../io/romio314/romio/adio/ad_ntfs/ad_ntfs.h | 68 + .../romio/adio/ad_ntfs/ad_ntfs_close.c | 30 + .../romio/adio/ad_ntfs/ad_ntfs_done.c | 20 + .../romio/adio/ad_ntfs/ad_ntfs_fcntl.c | 76 + .../romio/adio/ad_ntfs/ad_ntfs_feature.c | 26 + .../romio/adio/ad_ntfs/ad_ntfs_flush.c | 32 + .../romio/adio/ad_ntfs/ad_ntfs_iread.c | 42 + .../romio/adio/ad_ntfs/ad_ntfs_iwrite.c | 303 + .../romio/adio/ad_ntfs/ad_ntfs_open.c | 101 + .../romio/adio/ad_ntfs/ad_ntfs_read.c | 259 + .../romio/adio/ad_ntfs/ad_ntfs_resize.c | 51 + .../romio/adio/ad_ntfs/ad_ntfs_wait.c | 20 + .../romio/adio/ad_ntfs/ad_ntfs_write.c | 222 + .../romio314/romio/adio/ad_panfs/Makefile.mk | 21 + .../romio314/romio/adio/ad_panfs/ad_panfs.c | 45 + .../romio314/romio/adio/ad_panfs/ad_panfs.h | 62 + .../romio/adio/ad_panfs/ad_panfs_hints.c | 72 + .../romio/adio/ad_panfs/ad_panfs_open.c | 348 + .../romio/adio/ad_panfs/ad_panfs_read.c | 68 + .../romio/adio/ad_panfs/ad_panfs_resize.c | 49 + .../romio/adio/ad_panfs/ad_panfs_write.c | 68 + .../io/romio314/romio/adio/ad_pfs/Makefile.mk | 26 + .../io/romio314/romio/adio/ad_pfs/ad_pfs.c | 36 + .../io/romio314/romio/adio/ad_pfs/ad_pfs.h | 62 + .../romio314/romio/adio/ad_pfs/ad_pfs_done.c | 57 + .../romio314/romio/adio/ad_pfs/ad_pfs_fcntl.c | 81 + .../romio314/romio/adio/ad_pfs/ad_pfs_flush.c | 38 + .../romio314/romio/adio/ad_pfs/ad_pfs_hints.c | 174 + .../romio314/romio/adio/ad_pfs/ad_pfs_iread.c | 81 + .../romio/adio/ad_pfs/ad_pfs_iwrite.c | 80 + .../romio314/romio/adio/ad_pfs/ad_pfs_open.c | 85 + .../romio314/romio/adio/ad_pfs/ad_pfs_read.c | 48 + .../romio314/romio/adio/ad_pfs/ad_pfs_wait.c | 62 + .../romio314/romio/adio/ad_pfs/ad_pfs_write.c | 49 + .../romio314/romio/adio/ad_piofs/Makefile.mk | 21 + .../io/romio314/romio/adio/ad_piofs/README | 1 + .../romio314/romio/adio/ad_piofs/ad_piofs.c | 37 + .../romio314/romio/adio/ad_piofs/ad_piofs.h | 40 + .../romio/adio/ad_piofs/ad_piofs_fcntl.c | 77 + .../romio/adio/ad_piofs/ad_piofs_features.c | 19 + .../romio/adio/ad_piofs/ad_piofs_hints.c | 118 + .../romio/adio/ad_piofs/ad_piofs_open.c | 79 + .../romio/adio/ad_piofs/ad_piofs_read.c | 56 + .../romio/adio/ad_piofs/ad_piofs_write.c | 344 + .../romio314/romio/adio/ad_pvfs/Makefile.mk | 26 + .../io/romio314/romio/adio/ad_pvfs/ad_pvfs.c | 37 + .../io/romio314/romio/adio/ad_pvfs/ad_pvfs.h | 54 + .../romio/adio/ad_pvfs/ad_pvfs_close.c | 31 + .../romio/adio/ad_pvfs/ad_pvfs_delete.c | 24 + .../romio/adio/ad_pvfs/ad_pvfs_fcntl.c | 72 + .../romio/adio/ad_pvfs/ad_pvfs_flush.c | 36 + .../romio/adio/ad_pvfs/ad_pvfs_hints.c | 146 + .../romio/adio/ad_pvfs/ad_pvfs_open.c | 90 + .../romio/adio/ad_pvfs/ad_pvfs_read.c | 788 ++ .../romio/adio/ad_pvfs/ad_pvfs_resize.c | 32 + .../romio/adio/ad_pvfs/ad_pvfs_write.c | 1175 +++ .../romio314/romio/adio/ad_pvfs2/Makefile.mk | 34 + .../romio314/romio/adio/ad_pvfs2/ad_pvfs2.c | 47 + .../romio314/romio/adio/ad_pvfs2/ad_pvfs2.h | 76 + .../romio/adio/ad_pvfs2/ad_pvfs2_aio.c | 230 + .../romio/adio/ad_pvfs2/ad_pvfs2_close.c | 28 + .../romio/adio/ad_pvfs2/ad_pvfs2_common.c | 150 + .../romio/adio/ad_pvfs2/ad_pvfs2_common.h | 35 + .../romio/adio/ad_pvfs2/ad_pvfs2_delete.c | 69 + .../romio/adio/ad_pvfs2/ad_pvfs2_fcntl.c | 59 + .../romio/adio/ad_pvfs2/ad_pvfs2_features.c | 23 + .../romio/adio/ad_pvfs2/ad_pvfs2_flush.c | 55 + .../romio/adio/ad_pvfs2/ad_pvfs2_hints.c | 120 + .../romio/adio/ad_pvfs2/ad_pvfs2_io.h | 79 + .../romio/adio/ad_pvfs2/ad_pvfs2_io_dtype.c | 739 ++ .../romio/adio/ad_pvfs2/ad_pvfs2_io_list.c | 665 ++ .../romio/adio/ad_pvfs2/ad_pvfs2_open.c | 246 + .../romio/adio/ad_pvfs2/ad_pvfs2_read.c | 169 + .../ad_pvfs2/ad_pvfs2_read_list_classic.c | 913 ++ .../romio/adio/ad_pvfs2/ad_pvfs2_resize.c | 56 + .../romio/adio/ad_pvfs2/ad_pvfs2_write.c | 182 + .../ad_pvfs2/ad_pvfs2_write_list_classic.c | 967 ++ .../io/romio314/romio/adio/ad_sfs/Makefile.mk | 19 + ompi/mca/io/romio314/romio/adio/ad_sfs/README | 1 + .../io/romio314/romio/adio/ad_sfs/ad_sfs.c | 36 + .../io/romio314/romio/adio/ad_sfs/ad_sfs.h | 21 + .../romio314/romio/adio/ad_sfs/ad_sfs_fcntl.c | 64 + .../romio314/romio/adio/ad_sfs/ad_sfs_flush.c | 27 + .../romio314/romio/adio/ad_sfs/ad_sfs_open.c | 57 + .../romio314/romio/adio/ad_testfs/Makefile.mk | 32 + .../romio314/romio/adio/ad_testfs/ad_testfs.c | 39 + .../romio314/romio/adio/ad_testfs/ad_testfs.h | 85 + .../romio/adio/ad_testfs/ad_testfs_close.c | 22 + .../romio/adio/ad_testfs/ad_testfs_delete.c | 21 + .../romio/adio/ad_testfs/ad_testfs_done.c | 39 + .../romio/adio/ad_testfs/ad_testfs_fcntl.c | 49 + .../romio/adio/ad_testfs/ad_testfs_flush.c | 21 + .../romio/adio/ad_testfs/ad_testfs_getsh.c | 23 + .../romio/adio/ad_testfs/ad_testfs_hints.c | 27 + .../romio/adio/ad_testfs/ad_testfs_iread.c | 62 + .../romio/adio/ad_testfs/ad_testfs_iwrite.c | 68 + .../romio/adio/ad_testfs/ad_testfs_open.c | 23 + .../romio/adio/ad_testfs/ad_testfs_rdcoll.c | 29 + .../romio/adio/ad_testfs/ad_testfs_read.c | 62 + .../romio/adio/ad_testfs/ad_testfs_resize.c | 21 + .../romio/adio/ad_testfs/ad_testfs_seek.c | 82 + .../romio/adio/ad_testfs/ad_testfs_setsh.c | 22 + .../romio/adio/ad_testfs/ad_testfs_wait.c | 39 + .../romio/adio/ad_testfs/ad_testfs_wrcoll.c | 29 + .../romio/adio/ad_testfs/ad_testfs_write.c | 63 + .../io/romio314/romio/adio/ad_ufs/Makefile.mk | 17 + .../io/romio314/romio/adio/ad_ufs/ad_ufs.c | 44 + .../io/romio314/romio/adio/ad_ufs/ad_ufs.h | 57 + .../romio314/romio/adio/ad_ufs/ad_ufs_open.c | 58 + .../io/romio314/romio/adio/ad_xfs/Makefile.mk | 22 + .../io/romio314/romio/adio/ad_xfs/ad_xfs.c | 44 + .../io/romio314/romio/adio/ad_xfs/ad_xfs.h | 39 + .../romio314/romio/adio/ad_xfs/ad_xfs_fcntl.c | 81 + .../romio314/romio/adio/ad_xfs/ad_xfs_hints.c | 97 + .../romio314/romio/adio/ad_xfs/ad_xfs_open.c | 109 + .../romio314/romio/adio/ad_xfs/ad_xfs_read.c | 152 + .../romio/adio/ad_xfs/ad_xfs_resize.c | 22 + .../romio314/romio/adio/ad_xfs/ad_xfs_write.c | 171 + .../romio314/romio/adio/ad_zoidfs/Makefile.mk | 27 + .../romio314/romio/adio/ad_zoidfs/ad_zoidfs.c | 42 + .../romio314/romio/adio/ad_zoidfs/ad_zoidfs.h | 44 + .../romio/adio/ad_zoidfs/ad_zoidfs_close.c | 25 + .../romio/adio/ad_zoidfs/ad_zoidfs_common.c | 126 + .../romio/adio/ad_zoidfs/ad_zoidfs_common.h | 43 + .../romio/adio/ad_zoidfs/ad_zoidfs_delete.c | 45 + .../romio/adio/ad_zoidfs/ad_zoidfs_fcntl.c | 60 + .../romio/adio/ad_zoidfs/ad_zoidfs_features.c | 22 + .../romio/adio/ad_zoidfs/ad_zoidfs_flush.c | 52 + .../romio/adio/ad_zoidfs/ad_zoidfs_io.c | 96 + .../romio/adio/ad_zoidfs/ad_zoidfs_open.c | 153 + .../adio/ad_zoidfs/ad_zoidfs_read_list.c | 830 ++ .../romio/adio/ad_zoidfs/ad_zoidfs_resize.c | 53 + .../adio/ad_zoidfs/ad_zoidfs_write_list.c | 861 ++ .../io/romio314/romio/adio/common/Makefile.mk | 73 + .../romio314/romio/adio/common/ad_aggregate.c | 515 + .../romio/adio/common/ad_aggregate_new.c | 284 + .../io/romio314/romio/adio/common/ad_close.c | 120 + .../romio/adio/common/ad_coll_build_req_new.c | 2084 ++++ .../romio/adio/common/ad_coll_exch_new.c | 509 + .../io/romio314/romio/adio/common/ad_darray.c | 295 + .../io/romio314/romio/adio/common/ad_delete.c | 24 + .../io/romio314/romio/adio/common/ad_done.c | 47 + .../romio314/romio/adio/common/ad_done_fake.c | 20 + .../io/romio314/romio/adio/common/ad_end.c | 85 + .../io/romio314/romio/adio/common/ad_fcntl.c | 64 + .../romio314/romio/adio/common/ad_features.c | 26 + .../io/romio314/romio/adio/common/ad_flush.c | 35 + .../io/romio314/romio/adio/common/ad_fstype.c | 876 ++ .../romio314/romio/adio/common/ad_get_sh_fp.c | 74 + .../io/romio314/romio/adio/common/ad_hints.c | 309 + .../io/romio314/romio/adio/common/ad_init.c | 134 + .../romio314/romio/adio/common/ad_io_coll.c | 1135 +++ .../io/romio314/romio/adio/common/ad_iopen.c | 21 + .../io/romio314/romio/adio/common/ad_iread.c | 91 + .../romio/adio/common/ad_iread_fake.c | 61 + .../io/romio314/romio/adio/common/ad_iwrite.c | 342 + .../romio/adio/common/ad_iwrite_fake.c | 65 + .../io/romio314/romio/adio/common/ad_open.c | 315 + .../romio314/romio/adio/common/ad_opencoll.c | 129 + .../romio/adio/common/ad_opencoll_failsafe.c | 88 + .../romio/adio/common/ad_opencoll_scalable.c | 55 + .../romio314/romio/adio/common/ad_prealloc.c | 91 + .../io/romio314/romio/adio/common/ad_read.c | 115 + .../romio314/romio/adio/common/ad_read_coll.c | 1069 +++ .../romio314/romio/adio/common/ad_read_str.c | 407 + .../romio/adio/common/ad_read_str_naive.c | 384 + .../io/romio314/romio/adio/common/ad_resize.c | 38 + .../io/romio314/romio/adio/common/ad_seek.c | 86 + .../romio314/romio/adio/common/ad_set_sh_fp.c | 45 + .../romio314/romio/adio/common/ad_set_view.c | 77 + .../romio314/romio/adio/common/ad_subarray.c | 98 + .../romio/adio/common/ad_threaded_io.c | 32 + .../io/romio314/romio/adio/common/ad_wait.c | 47 + .../romio314/romio/adio/common/ad_wait_fake.c | 20 + .../io/romio314/romio/adio/common/ad_write.c | 114 + .../romio/adio/common/ad_write_coll.c | 1088 +++ .../romio/adio/common/ad_write_nolock.c | 410 + .../romio314/romio/adio/common/ad_write_str.c | 490 + .../romio/adio/common/ad_write_str_naive.c | 383 + .../io/romio314/romio/adio/common/adi_close.c | 45 + .../romio314/romio/adio/common/async_list.c | 170 + .../romio314/romio/adio/common/byte_offset.c | 52 + .../romio/adio/common/cb_config_list.c | 755 ++ .../romio314/romio/adio/common/eof_offset.c | 78 + .../mca/io/romio314/romio/adio/common/error.c | 127 + .../io/romio314/romio/adio/common/flatten.c | 1168 +++ .../romio314/romio/adio/common/get_fp_posn.c | 60 + .../io/romio314/romio/adio/common/greq_fns.c | 31 + .../io/romio314/romio/adio/common/heap-sort.c | 133 + .../io/romio314/romio/adio/common/hint_fns.c | 184 + .../io/romio314/romio/adio/common/iscontig.c | 105 + ompi/mca/io/romio314/romio/adio/common/lock.c | 225 + .../io/romio314/romio/adio/common/malloc.c | 113 + .../romio/adio/common/p2p_aggregation.c | 910 ++ .../romio314/romio/adio/common/req_malloc.c | 83 + .../romio314/romio/adio/common/shfp_fname.c | 115 + .../romio314/romio/adio/common/status_setb.c | 37 + .../io/romio314/romio/adio/common/strfns.c | 315 + .../romio314/romio/adio/common/system_hints.c | 191 + .../mca/io/romio314/romio/adio/common/utils.c | 138 + .../romio/adio/include/BaseIOErrMsgs.msg | 51 + .../mca/io/romio314/romio/adio/include/adio.h | 455 + .../romio/adio/include/adio_cb_config_list.h | 27 + .../romio314/romio/adio/include/adio_extern.h | 31 + .../io/romio314/romio/adio/include/adioi.h | 925 ++ .../romio/adio/include/adioi_errmsg.h | 73 + .../romio314/romio/adio/include/adioi_error.h | 183 + .../romio/adio/include/adioi_fs_proto.h | 92 + .../romio314/romio/adio/include/heap-sort.h | 22 + .../io/romio314/romio/adio/include/hint_fns.h | 23 + .../romio314/romio/adio/include/mpio_error.h | 76 + .../io/romio314/romio/adio/include/mpipr.h | 385 + .../romio/adio/include/mpiu_external32.h | 22 + .../romio314/romio/adio/include/mpiu_greq.h | 15 + .../romio314/romio/adio/include/nopackage.h | 16 + .../romio/adio/include/romioconf-undefs.h | 45 + ompi/mca/io/romio314/romio/autogen.sh | 3 + .../io/romio314/romio/confdb/aclocal_am.m4 | 6 + .../romio314/romio/confdb/aclocal_atomic.m4 | 227 + .../romio/confdb/aclocal_attr_alias.m4 | 504 + .../romio314/romio/confdb/aclocal_bugfix.m4 | 75 + .../io/romio314/romio/confdb/aclocal_cache.m4 | 372 + .../io/romio314/romio/confdb/aclocal_cc.m4 | 1692 ++++ .../romio314/romio/confdb/aclocal_coverage.m4 | 90 + .../io/romio314/romio/confdb/aclocal_cxx.m4 | 187 + .../io/romio314/romio/confdb/aclocal_f77.m4 | 1487 +++ .../romio314/romio/confdb/aclocal_f77old.m4 | 389 + .../io/romio314/romio/confdb/aclocal_fc.m4 | 1225 +++ .../io/romio314/romio/confdb/aclocal_libs.m4 | 104 + .../io/romio314/romio/confdb/aclocal_make.m4 | 315 + .../io/romio314/romio/confdb/aclocal_mpi.m4 | 519 + .../io/romio314/romio/confdb/aclocal_romio.m4 | 858 ++ .../romio314/romio/confdb/aclocal_runlog.m4 | 218 + .../io/romio314/romio/confdb/aclocal_shl.m4 | 500 + .../io/romio314/romio/confdb/aclocal_shm.m4 | 49 + .../romio314/romio/confdb/aclocal_subcfg.m4 | 261 + .../io/romio314/romio/confdb/aclocal_util.m4 | 216 + .../romio/confdb/ax_prefix_config_h.m4 | 219 + ompi/mca/io/romio314/romio/confdb/ax_tls.m4 | 74 + ompi/mca/io/romio314/romio/configure.ac | 2001 ++++ ompi/mca/io/romio314/romio/doc/README | 35 + ompi/mca/io/romio314/romio/doc/makepubpage.sh | 28 + ompi/mca/io/romio314/romio/doc/pubs.bib | 465 + ompi/mca/io/romio314/romio/doc/romio.bib | 92 + .../io/romio314/romio/doc/source-guide.tex | 494 + .../mca/io/romio314/romio/doc/users-guide.pdf | Bin 0 -> 94872 bytes .../mca/io/romio314/romio/doc/users-guide.tex | 1143 +++ .../io/romio314/romio/include/io_romio_conv.h | 124 + ompi/mca/io/romio314/romio/include/mpio.h.in | 528 + ompi/mca/io/romio314/romio/include/mpiof.h.in | 46 + ompi/mca/io/romio314/romio/localdefs.in | 4 + ompi/mca/io/romio314/romio/mpi-io/Makefile.mk | 102 + ompi/mca/io/romio314/romio/mpi-io/close.c | 105 + ompi/mca/io/romio314/romio/mpi-io/delete.c | 95 + ompi/mca/io/romio314/romio/mpi-io/file_c2f.c | 41 + ompi/mca/io/romio314/romio/mpi-io/file_f2c.c | 41 + .../romio314/romio/mpi-io/fortran/Makefile.mk | 68 + .../io/romio314/romio/mpi-io/fortran/closef.c | 102 + .../romio314/romio/mpi-io/fortran/deletef.c | 144 + .../io/romio314/romio/mpi-io/fortran/fsyncf.c | 101 + .../romio/mpi-io/fortran/get_amodef.c | 101 + .../romio314/romio/mpi-io/fortran/get_atomf.c | 102 + .../romio/mpi-io/fortran/get_bytofff.c | 101 + .../romio314/romio/mpi-io/fortran/get_errhf.c | 103 + .../romio/mpi-io/fortran/get_extentf.c | 126 + .../romio/mpi-io/fortran/get_groupf.c | 116 + .../romio314/romio/mpi-io/fortran/get_infof.c | 104 + .../romio/mpi-io/fortran/get_posn_shf.c | 102 + .../romio314/romio/mpi-io/fortran/get_posnf.c | 101 + .../romio314/romio/mpi-io/fortran/get_sizef.c | 102 + .../romio314/romio/mpi-io/fortran/get_viewf.c | 187 + .../romio314/romio/mpi-io/fortran/iotestf.c | 101 + .../romio314/romio/mpi-io/fortran/iowaitf.c | 101 + .../romio314/romio/mpi-io/fortran/iread_atf.c | 130 + .../romio314/romio/mpi-io/fortran/iread_shf.c | 124 + .../io/romio314/romio/mpi-io/fortran/ireadf.c | 124 + .../romio/mpi-io/fortran/iwrite_atf.c | 129 + .../romio/mpi-io/fortran/iwrite_shf.c | 124 + .../romio314/romio/mpi-io/fortran/iwritef.c | 125 + .../io/romio314/romio/mpi-io/fortran/openf.c | 187 + .../romio314/romio/mpi-io/fortran/preallocf.c | 102 + .../romio/mpi-io/fortran/rd_atallbf.c | 121 + .../romio/mpi-io/fortran/rd_atallef.c | 102 + .../romio/mpi-io/fortran/read_allbf.c | 120 + .../romio/mpi-io/fortran/read_allef.c | 103 + .../romio314/romio/mpi-io/fortran/read_allf.c | 120 + .../romio/mpi-io/fortran/read_atallf.c | 125 + .../romio314/romio/mpi-io/fortran/read_atf.c | 121 + .../romio/mpi-io/fortran/read_ordbf.c | 120 + .../romio/mpi-io/fortran/read_ordef.c | 103 + .../romio314/romio/mpi-io/fortran/read_ordf.c | 120 + .../romio314/romio/mpi-io/fortran/read_shf.c | 119 + .../io/romio314/romio/mpi-io/fortran/readf.c | 121 + .../romio314/romio/mpi-io/fortran/seek_shf.c | 102 + .../io/romio314/romio/mpi-io/fortran/seekf.c | 101 + .../romio314/romio/mpi-io/fortran/set_atomf.c | 102 + .../romio314/romio/mpi-io/fortran/set_errhf.c | 105 + .../romio314/romio/mpi-io/fortran/set_infof.c | 104 + .../romio314/romio/mpi-io/fortran/set_sizef.c | 102 + .../romio314/romio/mpi-io/fortran/set_viewf.c | 182 + .../romio/mpi-io/fortran/wr_atallbf.c | 122 + .../romio/mpi-io/fortran/wr_atallef.c | 103 + .../romio/mpi-io/fortran/write_allbf.c | 117 + .../romio/mpi-io/fortran/write_allef.c | 101 + .../romio/mpi-io/fortran/write_allf.c | 119 + .../romio/mpi-io/fortran/write_atallf.c | 125 + .../romio314/romio/mpi-io/fortran/write_atf.c | 125 + .../romio/mpi-io/fortran/write_ordbf.c | 119 + .../romio/mpi-io/fortran/write_ordef.c | 102 + .../romio/mpi-io/fortran/write_ordf.c | 119 + .../romio314/romio/mpi-io/fortran/write_shf.c | 121 + .../io/romio314/romio/mpi-io/fortran/writef.c | 121 + ompi/mca/io/romio314/romio/mpi-io/fsync.c | 76 + ompi/mca/io/romio314/romio/mpi-io/get_amode.c | 55 + ompi/mca/io/romio314/romio/mpi-io/get_atom.c | 55 + .../mca/io/romio314/romio/mpi-io/get_bytoff.c | 71 + ompi/mca/io/romio314/romio/mpi-io/get_errh.c | 71 + .../mca/io/romio314/romio/mpi-io/get_extent.c | 59 + ompi/mca/io/romio314/romio/mpi-io/get_group.c | 64 + ompi/mca/io/romio314/romio/mpi-io/get_info.c | 62 + ompi/mca/io/romio314/romio/mpi-io/get_posn.c | 59 + .../io/romio314/romio/mpi-io/get_posn_sh.c | 64 + ompi/mca/io/romio314/romio/mpi-io/get_size.c | 86 + ompi/mca/io/romio314/romio/mpi-io/get_view.c | 102 + .../io/romio314/romio/mpi-io/glue/Makefile.mk | 15 + .../romio/mpi-io/glue/default/Makefile.mk | 13 + .../romio/mpi-io/glue/default/mpio_err.c | 88 + .../romio/mpi-io/glue/default/mpio_file.c | 90 + .../romio314/romio/mpi-io/glue/large_count.c | 26 + .../romio/mpi-io/glue/mpich/Makefile.mk | 12 + .../romio/mpi-io/glue/mpich/mpio_err.c | 119 + .../romio/mpi-io/glue/mpich/mpio_file.c | 92 + .../romio/mpi-io/glue/openmpi/Makefile.mk | 13 + .../romio/mpi-io/glue/openmpi/mpio_err.c | 52 + .../romio/mpi-io/glue/openmpi/mpio_file.c | 95 + ompi/mca/io/romio314/romio/mpi-io/ioreq_c2f.c | 82 + ompi/mca/io/romio314/romio/mpi-io/ioreq_f2c.c | 72 + ompi/mca/io/romio314/romio/mpi-io/iotest.c | 95 + ompi/mca/io/romio314/romio/mpi-io/iotestall.c | 77 + ompi/mca/io/romio314/romio/mpi-io/iotestany.c | 81 + .../mca/io/romio314/romio/mpi-io/iotestsome.c | 86 + ompi/mca/io/romio314/romio/mpi-io/iowait.c | 96 + ompi/mca/io/romio314/romio/mpi-io/iowaitall.c | 74 + ompi/mca/io/romio314/romio/mpi-io/iowaitany.c | 84 + .../mca/io/romio314/romio/mpi-io/iowaitsome.c | 81 + ompi/mca/io/romio314/romio/mpi-io/iread.c | 161 + ompi/mca/io/romio314/romio/mpi-io/iread_at.c | 75 + ompi/mca/io/romio314/romio/mpi-io/iread_sh.c | 140 + ompi/mca/io/romio314/romio/mpi-io/iwrite.c | 168 + ompi/mca/io/romio314/romio/mpi-io/iwrite_at.c | 80 + ompi/mca/io/romio314/romio/mpi-io/iwrite_sh.c | 120 + .../io/romio314/romio/mpi-io/mpich_fileutil.c | 60 + ompi/mca/io/romio314/romio/mpi-io/mpioimpl.h | 82 + ompi/mca/io/romio314/romio/mpi-io/mpioprof.h | 215 + .../io/romio314/romio/mpi-io/mpir-mpioinit.c | 56 + .../romio314/romio/mpi-io/mpiu_external32.c | 172 + ompi/mca/io/romio314/romio/mpi-io/mpiu_greq.c | 49 + ompi/mca/io/romio314/romio/mpi-io/open.c | 209 + ompi/mca/io/romio314/romio/mpi-io/prealloc.c | 107 + ompi/mca/io/romio314/romio/mpi-io/rd_atallb.c | 54 + ompi/mca/io/romio314/romio/mpi-io/rd_atalle.c | 50 + ompi/mca/io/romio314/romio/mpi-io/read.c | 187 + ompi/mca/io/romio314/romio/mpi-io/read_all.c | 142 + ompi/mca/io/romio314/romio/mpi-io/read_allb.c | 139 + ompi/mca/io/romio314/romio/mpi-io/read_alle.c | 90 + ompi/mca/io/romio314/romio/mpi-io/read_at.c | 66 + .../mca/io/romio314/romio/mpi-io/read_atall.c | 68 + ompi/mca/io/romio314/romio/mpi-io/read_ord.c | 111 + ompi/mca/io/romio314/romio/mpi-io/read_ordb.c | 137 + ompi/mca/io/romio314/romio/mpi-io/read_orde.c | 75 + ompi/mca/io/romio314/romio/mpi-io/read_sh.c | 155 + .../romio314/romio/mpi-io/register_datarep.c | 145 + ompi/mca/io/romio314/romio/mpi-io/seek.c | 139 + ompi/mca/io/romio314/romio/mpi-io/seek_sh.c | 184 + ompi/mca/io/romio314/romio/mpi-io/set_atom.c | 91 + ompi/mca/io/romio314/romio/mpi-io/set_errh.c | 76 + ompi/mca/io/romio314/romio/mpi-io/set_info.c | 66 + ompi/mca/io/romio314/romio/mpi-io/set_size.c | 105 + ompi/mca/io/romio314/romio/mpi-io/set_view.c | 204 + ompi/mca/io/romio314/romio/mpi-io/wr_atallb.c | 53 + ompi/mca/io/romio314/romio/mpi-io/wr_atalle.c | 48 + ompi/mca/io/romio314/romio/mpi-io/write.c | 186 + ompi/mca/io/romio314/romio/mpi-io/write_all.c | 134 + .../mca/io/romio314/romio/mpi-io/write_allb.c | 132 + .../mca/io/romio314/romio/mpi-io/write_alle.c | 95 + ompi/mca/io/romio314/romio/mpi-io/write_at.c | 66 + .../io/romio314/romio/mpi-io/write_atall.c | 67 + ompi/mca/io/romio314/romio/mpi-io/write_ord.c | 128 + .../mca/io/romio314/romio/mpi-io/write_ordb.c | 132 + .../mca/io/romio314/romio/mpi-io/write_orde.c | 75 + ompi/mca/io/romio314/romio/mpi-io/write_sh.c | 149 + .../romio/mpi2-other/array/Makefile.in | 80 + .../romio314/romio/mpi2-other/array/darray.c | 209 + .../mpi2-other/array/fortran/Makefile.in | 48 + .../romio/mpi2-other/array/fortran/darrayf.c | 130 + .../mpi2-other/array/fortran/subarrayf.c | 127 + .../romio/mpi2-other/array/subarray.c | 174 + .../romio/mpi2-other/info/Makefile.in | 105 + .../romio/mpi2-other/info/fortran/Makefile.in | 65 + .../mpi2-other/info/fortran/info_createf.c | 93 + .../mpi2-other/info/fortran/info_deletef.c | 120 + .../romio/mpi2-other/info/fortran/info_dupf.c | 94 + .../mpi2-other/info/fortran/info_freef.c | 95 + .../romio/mpi2-other/info/fortran/info_getf.c | 144 + .../mpi2-other/info/fortran/info_getnksf.c | 93 + .../mpi2-other/info/fortran/info_getnthf.c | 120 + .../mpi2-other/info/fortran/info_getvlnf.c | 120 + .../romio/mpi2-other/info/fortran/info_setf.c | 146 + .../romio314/romio/mpi2-other/info/info_c2f.c | 64 + .../romio/mpi2-other/info/info_create.c | 51 + .../romio/mpi2-other/info/info_delete.c | 83 + .../romio314/romio/mpi2-other/info/info_dup.c | 66 + .../romio314/romio/mpi2-other/info/info_f2c.c | 49 + .../romio/mpi2-other/info/info_free.c | 56 + .../romio314/romio/mpi2-other/info/info_get.c | 88 + .../romio/mpi2-other/info/info_getnks.c | 55 + .../romio/mpi2-other/info/info_getnth.c | 74 + .../romio/mpi2-other/info/info_getvln.c | 76 + .../romio314/romio/mpi2-other/info/info_set.c | 98 + .../romio314/romio/test-internal/Makefile.am | 26 + .../romio/test-internal/file_realms_test.c | 76 + .../romio314/romio/test-internal/heap_test.c | 459 + .../romio/test-internal/io_bounds_test.c | 302 + ompi/mca/io/romio314/romio/test/.codingcheck | 13 + ompi/mca/io/romio314/romio/test/Makefile.am | 43 + ompi/mca/io/romio314/romio/test/Mfile.in | 84 + ompi/mca/io/romio314/romio/test/README | 84 + .../mca/io/romio314/romio/test/aggregation1.c | 266 + .../mca/io/romio314/romio/test/aggregation2.c | 89 + .../io/romio314/romio/test/async-multiple.c | 139 + ompi/mca/io/romio314/romio/test/async.c | 138 + ompi/mca/io/romio314/romio/test/atomicity.c | 210 + ompi/mca/io/romio314/romio/test/big_extents.c | 212 + ompi/mca/io/romio314/romio/test/coll_perf.c | 151 + ompi/mca/io/romio314/romio/test/coll_test.c | 206 + ompi/mca/io/romio314/romio/test/creat_excl.c | 134 + ompi/mca/io/romio314/romio/test/darray_read.c | 124 + ompi/mca/io/romio314/romio/test/error.c | 106 + ompi/mca/io/romio314/romio/test/excl.c | 84 + ompi/mca/io/romio314/romio/test/external32.c | 97 + .../io/romio314/romio/test/fcoll_test.f.in | 176 + ompi/mca/io/romio314/romio/test/file_info.c | 421 + ompi/mca/io/romio314/romio/test/fmisc.f.in | 205 + ompi/mca/io/romio314/romio/test/fperf.f.in | 180 + ompi/mca/io/romio314/romio/test/hindexed.c | 260 + ompi/mca/io/romio314/romio/test/i_noncontig.c | 267 + ompi/mca/io/romio314/romio/test/large_array.c | 145 + .../io/romio314/romio/test/large_file.c.in | 107 + ompi/mca/io/romio314/romio/test/misc.c.in | 263 + ompi/mca/io/romio314/romio/test/noncontig.c | 267 + .../io/romio314/romio/test/noncontig_coll.c | 236 + .../io/romio314/romio/test/noncontig_coll2.c | 539 ++ ompi/mca/io/romio314/romio/test/ordered_fp.c | 144 + ompi/mca/io/romio314/romio/test/perf.c | 160 + .../io/romio314/romio/test/pfcoll_test.f.in | 177 + ompi/mca/io/romio314/romio/test/psimple.c | 103 + ompi/mca/io/romio314/romio/test/rtest.in | 131 + ompi/mca/io/romio314/romio/test/runtests.in | 479 + ompi/mca/io/romio314/romio/test/shared_fp.c | 122 + ompi/mca/io/romio314/romio/test/simple.c | 119 + ompi/mca/io/romio314/romio/test/split_coll.c | 160 + ompi/mca/io/romio314/romio/test/status.c | 93 + .../io/romio314/romio/test/types_with_zeros.c | 139 + ompi/mca/io/romio314/romio/util/nfslock.c | 72 + .../io/romio314/romio/util/romioinstall.in | 220 + ompi/mca/io/romio314/romio/util/tarch | 120 + ompi/mca/io/romio314/src/Makefile.extra | 47 + ompi/mca/io/romio314/src/io_romio314.h | 298 + .../io/romio314/src/io_romio314_component.c | 265 + .../io/romio314/src/io_romio314_file_open.c | 369 + .../io/romio314/src/io_romio314_file_read.c | 380 + .../io/romio314/src/io_romio314_file_write.c | 375 + ompi/mca/io/romio314/src/io_romio314_module.c | 159 + ompi/mca/mca.h | 39 + ompi/mca/mtl/Makefile.am | 38 + ompi/mca/mtl/base/Makefile.am | 24 + ompi/mca/mtl/base/base.h | 46 + ompi/mca/mtl/base/mtl_base_datatype.h | 119 + ompi/mca/mtl/base/mtl_base_frame.c | 118 + ompi/mca/mtl/base/owner.txt | 7 + ompi/mca/mtl/configure.m4 | 18 + ompi/mca/mtl/mtl.h | 458 + ompi/mca/mtl/mxm/Makefile.am | 51 + ompi/mca/mtl/mxm/configure.m4 | 39 + ompi/mca/mtl/mxm/help-mtl-mxm.txt | 67 + ompi/mca/mtl/mxm/mtl_mxm.c | 679 ++ ompi/mca/mtl/mxm/mtl_mxm.h | 117 + ompi/mca/mtl/mxm/mtl_mxm_cancel.c | 34 + ompi/mca/mtl/mxm/mtl_mxm_component.c | 316 + ompi/mca/mtl/mxm/mtl_mxm_debug.h | 34 + ompi/mca/mtl/mxm/mtl_mxm_endpoint.c | 42 + ompi/mca/mtl/mxm/mtl_mxm_endpoint.h | 41 + ompi/mca/mtl/mxm/mtl_mxm_probe.c | 115 + ompi/mca/mtl/mxm/mtl_mxm_recv.c | 197 + ompi/mca/mtl/mxm/mtl_mxm_request.h | 35 + ompi/mca/mtl/mxm/mtl_mxm_send.c | 238 + ompi/mca/mtl/mxm/mtl_mxm_types.h | 123 + ompi/mca/mtl/mxm/owner.txt | 7 + ompi/mca/mtl/ofi/Makefile.am | 56 + ompi/mca/mtl/ofi/configure.m4 | 32 + ompi/mca/mtl/ofi/help-mtl-ofi.txt | 18 + ompi/mca/mtl/ofi/mtl_ofi.c | 166 + ompi/mca/mtl/ofi/mtl_ofi.h | 983 ++ ompi/mca/mtl/ofi/mtl_ofi_compat.h | 68 + ompi/mca/mtl/ofi/mtl_ofi_component.c | 684 ++ ompi/mca/mtl/ofi/mtl_ofi_endpoint.c | 35 + ompi/mca/mtl/ofi/mtl_ofi_endpoint.h | 51 + ompi/mca/mtl/ofi/mtl_ofi_request.h | 88 + ompi/mca/mtl/ofi/mtl_ofi_types.h | 138 + ompi/mca/mtl/ofi/owner.txt | 7 + ompi/mca/mtl/ofi/post_configure.sh | 1 + ompi/mca/mtl/portals4/Makefile.am | 70 + ompi/mca/mtl/portals4/configure.m4 | 69 + ompi/mca/mtl/portals4/mtl_portals4.c | 602 ++ ompi/mca/mtl/portals4/mtl_portals4.h | 325 + ompi/mca/mtl/portals4/mtl_portals4_cancel.c | 65 + .../mca/mtl/portals4/mtl_portals4_component.c | 593 ++ ompi/mca/mtl/portals4/mtl_portals4_endpoint.h | 40 + ompi/mca/mtl/portals4/mtl_portals4_flowctl.c | 616 ++ ompi/mca/mtl/portals4/mtl_portals4_flowctl.h | 100 + ompi/mca/mtl/portals4/mtl_portals4_message.c | 26 + ompi/mca/mtl/portals4/mtl_portals4_message.h | 58 + ompi/mca/mtl/portals4/mtl_portals4_probe.c | 223 + ompi/mca/mtl/portals4/mtl_portals4_recv.c | 572 ++ .../mtl/portals4/mtl_portals4_recv_short.c | 300 + .../mtl/portals4/mtl_portals4_recv_short.h | 58 + ompi/mca/mtl/portals4/mtl_portals4_request.h | 139 + ompi/mca/mtl/portals4/mtl_portals4_send.c | 627 ++ ompi/mca/mtl/portals4/owner.txt | 7 + ompi/mca/mtl/portals4/post_configure.sh | 1 + ompi/mca/mtl/psm/Makefile.am | 62 + ompi/mca/mtl/psm/configure.m4 | 49 + ompi/mca/mtl/psm/help-mtl-psm.txt | 46 + ompi/mca/mtl/psm/mtl_psm.c | 482 + ompi/mca/mtl/psm/mtl_psm.h | 110 + ompi/mca/mtl/psm/mtl_psm_cancel.c | 54 + ompi/mca/mtl/psm/mtl_psm_component.c | 365 + ompi/mca/mtl/psm/mtl_psm_endpoint.c | 54 + ompi/mca/mtl/psm/mtl_psm_endpoint.h | 70 + ompi/mca/mtl/psm/mtl_psm_probe.c | 83 + ompi/mca/mtl/psm/mtl_psm_recv.c | 97 + ompi/mca/mtl/psm/mtl_psm_request.h | 43 + ompi/mca/mtl/psm/mtl_psm_send.c | 146 + ompi/mca/mtl/psm/mtl_psm_types.h | 97 + ompi/mca/mtl/psm/owner.txt | 7 + ompi/mca/mtl/psm/post_configure.sh | 1 + ompi/mca/mtl/psm2/Makefile.am | 63 + ompi/mca/mtl/psm2/configure.m4 | 49 + ompi/mca/mtl/psm2/help-mtl-psm2.txt | 63 + ompi/mca/mtl/psm2/mtl_psm2.c | 473 + ompi/mca/mtl/psm2/mtl_psm2.h | 112 + ompi/mca/mtl/psm2/mtl_psm2_cancel.c | 55 + ompi/mca/mtl/psm2/mtl_psm2_component.c | 301 + ompi/mca/mtl/psm2/mtl_psm2_endpoint.c | 54 + ompi/mca/mtl/psm2/mtl_psm2_endpoint.h | 68 + ompi/mca/mtl/psm2/mtl_psm2_probe.c | 134 + ompi/mca/mtl/psm2/mtl_psm2_recv.c | 138 + ompi/mca/mtl/psm2/mtl_psm2_request.h | 44 + ompi/mca/mtl/psm2/mtl_psm2_send.c | 143 + ompi/mca/mtl/psm2/mtl_psm2_types.h | 93 + ompi/mca/mtl/psm2/owner.txt | 7 + ompi/mca/mtl/psm2/post_configure.sh | 1 + ompi/mca/op/Makefile.am | 37 + ompi/mca/op/base/Makefile.include | 29 + ompi/mca/op/base/base.h | 99 + ompi/mca/op/base/functions.h | 43 + ompi/mca/op/base/op_base_find_available.c | 153 + ompi/mca/op/base/op_base_frame.c | 63 + ompi/mca/op/base/op_base_functions.c | 1544 +++ ompi/mca/op/base/op_base_op_select.c | 338 + ompi/mca/op/base/owner.txt | 7 + ompi/mca/op/example/.opal_ignore | 0 ompi/mca/op/example/Makefile.am | 83 + ompi/mca/op/example/README.txt | 125 + ompi/mca/op/example/configure.m4 | 71 + ompi/mca/op/example/op_example.h | 105 + ompi/mca/op/example/op_example_component.c | 308 + ompi/mca/op/example/op_example_module_bxor.c | 222 + ompi/mca/op/example/op_example_module_max.c | 258 + ompi/mca/op/example/owner.txt | 7 + ompi/mca/op/op.h | 417 + ompi/mca/osc/Makefile.am | 37 + ompi/mca/osc/base/Makefile.am | 24 + ompi/mca/osc/base/base.h | 54 + ompi/mca/osc/base/osc_base_frame.c | 79 + ompi/mca/osc/base/osc_base_init.c | 74 + ompi/mca/osc/base/osc_base_obj_convert.c | 251 + ompi/mca/osc/base/osc_base_obj_convert.h | 130 + ompi/mca/osc/base/owner.txt | 7 + ompi/mca/osc/osc.h | 431 + ompi/mca/osc/portals4/Makefile.am | 46 + ompi/mca/osc/portals4/configure.m4 | 42 + ompi/mca/osc/portals4/osc_portals4.h | 321 + .../osc/portals4/osc_portals4_active_target.c | 196 + ompi/mca/osc/portals4/osc_portals4_comm.c | 3684 +++++++ .../mca/osc/portals4/osc_portals4_component.c | 717 ++ .../portals4/osc_portals4_passive_target.c | 428 + ompi/mca/osc/portals4/osc_portals4_request.c | 56 + ompi/mca/osc/portals4/osc_portals4_request.h | 49 + ompi/mca/osc/portals4/owner.txt | 7 + ompi/mca/osc/pt2pt/Makefile.am | 60 + ompi/mca/osc/pt2pt/configure.m4 | 20 + ompi/mca/osc/pt2pt/osc_pt2pt.h | 964 ++ ompi/mca/osc/pt2pt/osc_pt2pt_active_target.c | 614 ++ ompi/mca/osc/pt2pt/osc_pt2pt_comm.c | 1148 +++ ompi/mca/osc/pt2pt/osc_pt2pt_component.c | 506 + ompi/mca/osc/pt2pt/osc_pt2pt_data_move.c | 1795 ++++ ompi/mca/osc/pt2pt/osc_pt2pt_data_move.h | 159 + ompi/mca/osc/pt2pt/osc_pt2pt_frag.c | 198 + ompi/mca/osc/pt2pt/osc_pt2pt_frag.h | 192 + ompi/mca/osc/pt2pt/osc_pt2pt_header.h | 432 + ompi/mca/osc/pt2pt/osc_pt2pt_module.c | 118 + ompi/mca/osc/pt2pt/osc_pt2pt_passive_target.c | 947 ++ ompi/mca/osc/pt2pt/osc_pt2pt_pending_frag.h | 68 + ompi/mca/osc/pt2pt/osc_pt2pt_request.c | 63 + ompi/mca/osc/pt2pt/osc_pt2pt_request.h | 77 + ompi/mca/osc/pt2pt/osc_pt2pt_sync.c | 93 + ompi/mca/osc/pt2pt/osc_pt2pt_sync.h | 189 + ompi/mca/osc/pt2pt/owner.txt | 7 + ompi/mca/osc/rdma/Makefile.am | 66 + ompi/mca/osc/rdma/configure.m4 | 26 + ompi/mca/osc/rdma/osc_rdma.h | 526 + ompi/mca/osc/rdma/osc_rdma_accumulate.c | 1219 +++ ompi/mca/osc/rdma/osc_rdma_accumulate.h | 45 + ompi/mca/osc/rdma/osc_rdma_active_target.c | 607 ++ ompi/mca/osc/rdma/osc_rdma_active_target.h | 42 + ompi/mca/osc/rdma/osc_rdma_comm.c | 962 ++ ompi/mca/osc/rdma/osc_rdma_comm.h | 137 + ompi/mca/osc/rdma/osc_rdma_component.c | 1255 +++ ompi/mca/osc/rdma/osc_rdma_dynamic.c | 397 + ompi/mca/osc/rdma/osc_rdma_dynamic.h | 60 + ompi/mca/osc/rdma/osc_rdma_frag.c | 16 + ompi/mca/osc/rdma/osc_rdma_frag.h | 123 + ompi/mca/osc/rdma/osc_rdma_lock.h | 378 + ompi/mca/osc/rdma/osc_rdma_module.c | 140 + ompi/mca/osc/rdma/osc_rdma_passive_target.c | 377 + ompi/mca/osc/rdma/osc_rdma_passive_target.h | 131 + ompi/mca/osc/rdma/osc_rdma_peer.c | 342 + ompi/mca/osc/rdma/osc_rdma_peer.h | 225 + ompi/mca/osc/rdma/osc_rdma_request.c | 80 + ompi/mca/osc/rdma/osc_rdma_request.h | 111 + ompi/mca/osc/rdma/osc_rdma_sync.c | 83 + ompi/mca/osc/rdma/osc_rdma_sync.h | 158 + ompi/mca/osc/rdma/osc_rdma_types.h | 223 + ompi/mca/osc/rdma/owner.txt | 7 + ompi/mca/osc/sm/Makefile.am | 44 + ompi/mca/osc/sm/osc_sm.h | 241 + ompi/mca/osc/sm/osc_sm_active_target.c | 328 + ompi/mca/osc/sm/osc_sm_comm.c | 441 + ompi/mca/osc/sm/osc_sm_component.c | 532 ++ ompi/mca/osc/sm/osc_sm_passive_target.c | 269 + ompi/mca/osc/sm/owner.txt | 7 + ompi/mca/pml/Makefile.am | 38 + ompi/mca/pml/base/Makefile.am | 35 + ompi/mca/pml/base/base.h | 76 + ompi/mca/pml/base/owner.txt | 7 + ompi/mca/pml/base/pml_base_bsend.c | 389 + ompi/mca/pml/base/pml_base_bsend.h | 47 + ompi/mca/pml/base/pml_base_frame.c | 240 + ompi/mca/pml/base/pml_base_ft.c | 79 + ompi/mca/pml/base/pml_base_recvreq.c | 53 + ompi/mca/pml/base/pml_base_recvreq.h | 127 + ompi/mca/pml/base/pml_base_request.c | 44 + ompi/mca/pml/base/pml_base_request.h | 87 + ompi/mca/pml/base/pml_base_request_dbg.h | 33 + ompi/mca/pml/base/pml_base_select.c | 383 + ompi/mca/pml/base/pml_base_sendreq.c | 49 + ompi/mca/pml/base/pml_base_sendreq.h | 157 + ompi/mca/pml/bfo/.opal_ignore | 0 ompi/mca/pml/bfo/Makefile.am | 78 + ompi/mca/pml/bfo/README | 340 + ompi/mca/pml/bfo/configure.m4 | 27 + ompi/mca/pml/bfo/help-mpi-pml-bfo.txt | 20 + ompi/mca/pml/bfo/owner.txt | 7 + ompi/mca/pml/bfo/pml_bfo.c | 873 ++ ompi/mca/pml/bfo/pml_bfo.h | 362 + ompi/mca/pml/bfo/pml_bfo_comm.c | 100 + ompi/mca/pml/bfo/pml_bfo_comm.h | 81 + ompi/mca/pml/bfo/pml_bfo_component.c | 274 + ompi/mca/pml/bfo/pml_bfo_component.h | 33 + ompi/mca/pml/bfo/pml_bfo_cuda.c | 157 + ompi/mca/pml/bfo/pml_bfo_failover.c | 2187 +++++ ompi/mca/pml/bfo/pml_bfo_failover.h | 398 + ompi/mca/pml/bfo/pml_bfo_hdr.h | 539 ++ ompi/mca/pml/bfo/pml_bfo_iprobe.c | 171 + ompi/mca/pml/bfo/pml_bfo_irecv.c | 308 + ompi/mca/pml/bfo/pml_bfo_isend.c | 129 + ompi/mca/pml/bfo/pml_bfo_progress.c | 78 + ompi/mca/pml/bfo/pml_bfo_rdma.c | 118 + ompi/mca/pml/bfo/pml_bfo_rdma.h | 42 + ompi/mca/pml/bfo/pml_bfo_rdmafrag.c | 30 + ompi/mca/pml/bfo/pml_bfo_rdmafrag.h | 75 + ompi/mca/pml/bfo/pml_bfo_recvfrag.c | 743 ++ ompi/mca/pml/bfo/pml_bfo_recvfrag.h | 172 + ompi/mca/pml/bfo/pml_bfo_recvreq.c | 1164 +++ ompi/mca/pml/bfo/pml_bfo_recvreq.h | 449 + ompi/mca/pml/bfo/pml_bfo_sendreq.c | 1400 +++ ompi/mca/pml/bfo/pml_bfo_sendreq.h | 499 + ompi/mca/pml/bfo/pml_bfo_start.c | 148 + ompi/mca/pml/bfo/post_configure.sh | 1 + ompi/mca/pml/cm/Makefile.am | 54 + ompi/mca/pml/cm/owner.txt | 7 + ompi/mca/pml/cm/pml_cm.c | 154 + ompi/mca/pml/cm/pml_cm.h | 561 ++ ompi/mca/pml/cm/pml_cm_cancel.c | 72 + ompi/mca/pml/cm/pml_cm_component.c | 170 + ompi/mca/pml/cm/pml_cm_component.h | 32 + ompi/mca/pml/cm/pml_cm_recvreq.c | 74 + ompi/mca/pml/cm/pml_cm_recvreq.h | 385 + ompi/mca/pml/cm/pml_cm_request.c | 37 + ompi/mca/pml/cm/pml_cm_request.h | 73 + ompi/mca/pml/cm/pml_cm_sendreq.c | 84 + ompi/mca/pml/cm/pml_cm_sendreq.h | 498 + ompi/mca/pml/cm/pml_cm_start.c | 101 + ompi/mca/pml/cm/post_configure.sh | 1 + ompi/mca/pml/configure.m4 | 18 + ompi/mca/pml/crcpw/Makefile.am | 44 + ompi/mca/pml/crcpw/configure.m4 | 28 + ompi/mca/pml/crcpw/owner.txt | 7 + ompi/mca/pml/crcpw/pml_crcpw.h | 149 + ompi/mca/pml/crcpw/pml_crcpw_component.c | 192 + ompi/mca/pml/crcpw/pml_crcpw_module.c | 842 ++ ompi/mca/pml/example/.opal_ignore | 0 ompi/mca/pml/example/Makefile.am | 61 + ompi/mca/pml/example/pml_example.c | 98 + ompi/mca/pml/example/pml_example.h | 155 + ompi/mca/pml/example/pml_example_cancel.c | 27 + ompi/mca/pml/example/pml_example_component.c | 94 + ompi/mca/pml/example/pml_example_iprobe.c | 47 + ompi/mca/pml/example/pml_example_irecv.c | 67 + ompi/mca/pml/example/pml_example_isend.c | 50 + ompi/mca/pml/example/pml_example_proc.c | 14 + ompi/mca/pml/example/pml_example_proc.h | 17 + ompi/mca/pml/example/pml_example_progress.c | 18 + ompi/mca/pml/example/pml_example_ptl.c | 14 + ompi/mca/pml/example/pml_example_ptl.h | 17 + ompi/mca/pml/example/pml_example_recvfrag.c | 21 + ompi/mca/pml/example/pml_example_recvfrag.h | 21 + ompi/mca/pml/example/pml_example_recvreq.c | 26 + ompi/mca/pml/example/pml_example_recvreq.h | 22 + ompi/mca/pml/example/pml_example_sendreq.c | 21 + ompi/mca/pml/example/pml_example_sendreq.h | 21 + ompi/mca/pml/example/pml_example_start.c | 18 + ompi/mca/pml/monitoring/Makefile.am | 40 + ompi/mca/pml/monitoring/README | 181 + ompi/mca/pml/monitoring/pml_monitoring.c | 258 + ompi/mca/pml/monitoring/pml_monitoring.h | 157 + ompi/mca/pml/monitoring/pml_monitoring_comm.c | 24 + .../pml/monitoring/pml_monitoring_component.c | 261 + .../pml/monitoring/pml_monitoring_iprobe.c | 57 + .../mca/pml/monitoring/pml_monitoring_irecv.c | 80 + .../mca/pml/monitoring/pml_monitoring_isend.c | 85 + .../mca/pml/monitoring/pml_monitoring_start.c | 57 + ompi/mca/pml/ob1/Makefile.am | 78 + ompi/mca/pml/ob1/configure.m4 | 27 + ompi/mca/pml/ob1/help-mpi-pml-ob1.txt | 44 + ompi/mca/pml/ob1/owner.txt | 7 + ompi/mca/pml/ob1/pml_ob1.c | 1000 ++ ompi/mca/pml/ob1/pml_ob1.h | 406 + ompi/mca/pml/ob1/pml_ob1_comm.c | 102 + ompi/mca/pml/ob1/pml_ob1_comm.h | 100 + ompi/mca/pml/ob1/pml_ob1_component.c | 368 + ompi/mca/pml/ob1/pml_ob1_component.h | 32 + ompi/mca/pml/ob1/pml_ob1_cuda.c | 216 + ompi/mca/pml/ob1/pml_ob1_hdr.h | 538 ++ ompi/mca/pml/ob1/pml_ob1_iprobe.c | 176 + ompi/mca/pml/ob1/pml_ob1_irecv.c | 364 + ompi/mca/pml/ob1/pml_ob1_isend.c | 275 + ompi/mca/pml/ob1/pml_ob1_progress.c | 129 + ompi/mca/pml/ob1/pml_ob1_rdma.c | 178 + ompi/mca/pml/ob1/pml_ob1_rdma.h | 47 + ompi/mca/pml/ob1/pml_ob1_rdmafrag.c | 36 + ompi/mca/pml/ob1/pml_ob1_rdmafrag.h | 86 + ompi/mca/pml/ob1/pml_ob1_recvfrag.c | 987 ++ ompi/mca/pml/ob1/pml_ob1_recvfrag.h | 186 + ompi/mca/pml/ob1/pml_ob1_recvreq.c | 1276 +++ ompi/mca/pml/ob1/pml_ob1_recvreq.h | 464 + ompi/mca/pml/ob1/pml_ob1_sendreq.c | 1239 +++ ompi/mca/pml/ob1/pml_ob1_sendreq.h | 518 + ompi/mca/pml/ob1/pml_ob1_start.c | 119 + ompi/mca/pml/ob1/post_configure.sh | 1 + ompi/mca/pml/pml.h | 561 ++ ompi/mca/pml/pml_constants.h | 46 + ompi/mca/pml/ucx/Makefile.am | 48 + ompi/mca/pml/ucx/configure.m4 | 30 + ompi/mca/pml/ucx/pml_ucx.c | 966 ++ ompi/mca/pml/ucx/pml_ucx.h | 153 + ompi/mca/pml/ucx/pml_ucx_component.c | 114 + ompi/mca/pml/ucx/pml_ucx_datatype.c | 157 + ompi/mca/pml/ucx/pml_ucx_datatype.h | 39 + ompi/mca/pml/ucx/pml_ucx_freelist.h | 30 + ompi/mca/pml/ucx/pml_ucx_request.c | 233 + ompi/mca/pml/ucx/pml_ucx_request.h | 201 + ompi/mca/pml/v/Makefile.am | 40 + ompi/mca/pml/v/configure.m4 | 19 + ompi/mca/pml/v/owner.txt | 7 + ompi/mca/pml/v/pml_v.h | 26 + ompi/mca/pml/v/pml_v_component.c | 270 + ompi/mca/pml/v/pml_v_output.c | 55 + ompi/mca/pml/v/pml_v_output.h | 101 + ompi/mca/pml/yalla/Makefile.am | 49 + ompi/mca/pml/yalla/configure.m4 | 30 + ompi/mca/pml/yalla/owner.txt | 7 + ompi/mca/pml/yalla/pml_yalla.c | 741 ++ ompi/mca/pml/yalla/pml_yalla.h | 150 + ompi/mca/pml/yalla/pml_yalla_component.c | 112 + ompi/mca/pml/yalla/pml_yalla_datatype.c | 166 + ompi/mca/pml/yalla/pml_yalla_datatype.h | 76 + ompi/mca/pml/yalla/pml_yalla_freelist.h | 34 + ompi/mca/pml/yalla/pml_yalla_request.c | 278 + ompi/mca/pml/yalla/pml_yalla_request.h | 218 + ompi/mca/rte/Makefile.am | 27 + ompi/mca/rte/base/Makefile.am | 15 + ompi/mca/rte/base/base.h | 32 + ompi/mca/rte/base/rte_base_frame.c | 57 + ompi/mca/rte/configure.m4 | 34 + ompi/mca/rte/orte/Makefile.am | 125 + ompi/mca/rte/orte/configure.m4 | 46 + ompi/mca/rte/orte/rte_orte.h | 124 + ompi/mca/rte/orte/rte_orte_component.c | 105 + ompi/mca/rte/orte/rte_orte_module.c | 237 + ompi/mca/rte/rte.h | 239 + ompi/mca/sharedfp/Makefile.am | 40 + ompi/mca/sharedfp/base/Makefile.am | 28 + ompi/mca/sharedfp/base/base.h | 63 + ompi/mca/sharedfp/base/owner.txt | 7 + .../sharedfp/base/sharedfp_base_file_select.c | 262 + .../base/sharedfp_base_file_unselect.c | 42 + .../base/sharedfp_base_find_available.c | 142 + ompi/mca/sharedfp/base/sharedfp_base_frame.c | 65 + ompi/mca/sharedfp/configure.m4 | 28 + ompi/mca/sharedfp/individual/Makefile.am | 58 + ompi/mca/sharedfp/individual/owner.txt | 7 + .../sharedfp/individual/sharedfp_individual.c | 172 + .../sharedfp/individual/sharedfp_individual.h | 165 + .../sharedfp_individual_collaborate_data.c | 437 + .../sharedfp_individual_component.c | 90 + .../sharedfp_individual_file_open.c | 265 + .../sharedfp_individual_get_position.c | 34 + .../individual/sharedfp_individual_gettime.c | 28 + .../sharedfp_individual_insert_metadata.c | 151 + .../individual/sharedfp_individual_iwrite.c | 226 + .../individual/sharedfp_individual_read.c | 68 + .../individual/sharedfp_individual_seek.c | 33 + .../individual/sharedfp_individual_write.c | 205 + ompi/mca/sharedfp/lockedfile/Makefile.am | 57 + ompi/mca/sharedfp/lockedfile/owner.txt | 7 + .../sharedfp/lockedfile/sharedfp_lockedfile.c | 190 + .../sharedfp/lockedfile/sharedfp_lockedfile.h | 131 + .../sharedfp_lockedfile_component.c | 89 + .../sharedfp_lockedfile_file_open.c | 198 + .../sharedfp_lockedfile_get_position.c | 61 + .../lockedfile/sharedfp_lockedfile_iread.c | 230 + .../lockedfile/sharedfp_lockedfile_iwrite.c | 230 + .../lockedfile/sharedfp_lockedfile_read.c | 203 + .../sharedfp_lockedfile_request_position.c | 131 + .../lockedfile/sharedfp_lockedfile_seek.c | 165 + .../lockedfile/sharedfp_lockedfile_write.c | 210 + ompi/mca/sharedfp/sharedfp.h | 237 + ompi/mca/sharedfp/sm/Makefile.am | 57 + ompi/mca/sharedfp/sm/configure.m4 | 38 + ompi/mca/sharedfp/sm/owner.txt | 7 + ompi/mca/sharedfp/sm/sharedfp_sm.c | 118 + ompi/mca/sharedfp/sm/sharedfp_sm.h | 140 + ompi/mca/sharedfp/sm/sharedfp_sm_component.c | 89 + ompi/mca/sharedfp/sm/sharedfp_sm_file_open.c | 301 + .../sharedfp/sm/sharedfp_sm_get_position.c | 62 + ompi/mca/sharedfp/sm/sharedfp_sm_iread.c | 228 + ompi/mca/sharedfp/sm/sharedfp_sm_iwrite.c | 231 + ompi/mca/sharedfp/sm/sharedfp_sm_read.c | 206 + .../sm/sharedfp_sm_request_position.c | 89 + ompi/mca/sharedfp/sm/sharedfp_sm_seek.c | 152 + ompi/mca/sharedfp/sm/sharedfp_sm_write.c | 213 + ompi/mca/topo/Makefile.am | 39 + ompi/mca/topo/base/Makefile.am | 44 + ompi/mca/topo/base/base.h | 202 + ompi/mca/topo/base/owner.txt | 7 + ompi/mca/topo/base/topo_base_cart_coords.c | 61 + ompi/mca/topo/base/topo_base_cart_create.c | 213 + ompi/mca/topo/base/topo_base_cart_get.c | 57 + ompi/mca/topo/base/topo_base_cart_map.c | 71 + ompi/mca/topo/base/topo_base_cart_rank.c | 81 + ompi/mca/topo/base/topo_base_cart_shift.c | 98 + ompi/mca/topo/base/topo_base_cart_sub.c | 164 + ompi/mca/topo/base/topo_base_cartdim_get.c | 40 + ompi/mca/topo/base/topo_base_comm_select.c | 311 + .../topo/base/topo_base_dist_graph_create.c | 343 + .../topo_base_dist_graph_create_adjacent.c | 108 + .../base/topo_base_dist_graph_neighbors.c | 56 + .../topo_base_dist_graph_neighbors_count.c | 32 + ompi/mca/topo/base/topo_base_find_available.c | 148 + ompi/mca/topo/base/topo_base_frame.c | 104 + ompi/mca/topo/base/topo_base_graph_create.c | 170 + ompi/mca/topo/base/topo_base_graph_get.c | 65 + ompi/mca/topo/base/topo_base_graph_map.c | 53 + .../mca/topo/base/topo_base_graph_neighbors.c | 64 + .../base/topo_base_graph_neighbors_count.c | 48 + ompi/mca/topo/base/topo_base_graphdims_get.c | 48 + ompi/mca/topo/base/topo_base_lazy_init.c | 59 + ompi/mca/topo/basic/Makefile.am | 45 + ompi/mca/topo/basic/owner.txt | 7 + ompi/mca/topo/basic/topo_basic.h | 32 + ompi/mca/topo/basic/topo_basic_component.c | 85 + ompi/mca/topo/example/.opal_ignore | 0 ompi/mca/topo/example/Makefile.am | 54 + ompi/mca/topo/example/owner.txt | 7 + ompi/mca/topo/example/topo_example.h | 86 + ompi/mca/topo/example/topo_example_cart_map.c | 79 + .../mca/topo/example/topo_example_component.c | 91 + .../mca/topo/example/topo_example_graph_map.c | 58 + ompi/mca/topo/example/topo_example_module.c | 58 + ompi/mca/topo/topo.h | 352 + ompi/mca/topo/treematch/Makefile.am | 64 + ompi/mca/topo/treematch/configure.m4 | 89 + ompi/mca/topo/treematch/topo_treematch.h | 82 + .../topo/treematch/topo_treematch_component.c | 97 + .../topo_treematch_dist_graph_create.c | 927 ++ .../topo/treematch/topo_treematch_module.c | 45 + ompi/mca/topo/treematch/treematch/COPYING | 8 + .../treematch/IntConstantInitializedVector.c | 61 + .../treematch/IntConstantInitializedVector.h | 16 + ompi/mca/topo/treematch/treematch/LICENSE | 515 + ompi/mca/topo/treematch/treematch/tgt_map.c | 56 + .../mca/topo/treematch/treematch/tgt_to_mat.c | 31 + ompi/mca/topo/treematch/treematch/tm_bucket.c | 669 ++ ompi/mca/topo/treematch/treematch/tm_bucket.h | 34 + ompi/mca/topo/treematch/treematch/tm_hwloc.c | 278 + ompi/mca/topo/treematch/treematch/tm_hwloc.h | 7 + .../treematch/treematch/tm_kpartitioning.c | 504 + .../treematch/treematch/tm_kpartitioning.h | 9 + ompi/mca/topo/treematch/treematch/tm_malloc.c | 158 + ompi/mca/topo/treematch/treematch/tm_malloc.h | 5 + .../mca/topo/treematch/treematch/tm_mapping.c | 1381 +++ .../mca/topo/treematch/treematch/tm_mapping.h | 43 + ompi/mca/topo/treematch/treematch/tm_mt.c | 198 + ompi/mca/topo/treematch/treematch/tm_mt.h | 11 + .../topo/treematch/treematch/tm_thread_pool.c | 349 + .../topo/treematch/treematch/tm_thread_pool.h | 45 + .../mca/topo/treematch/treematch/tm_timings.c | 32 + .../mca/topo/treematch/treematch/tm_timings.h | 47 + ompi/mca/topo/treematch/treematch/tm_tree.c | 1651 ++++ ompi/mca/topo/treematch/treematch/tm_tree.h | 94 + .../mca/topo/treematch/treematch/tm_verbose.c | 11 + .../mca/topo/treematch/treematch/tm_verbose.h | 11 + ompi/mca/topo/treematch/treematch/uthash.h | 905 ++ ompi/mca/vprotocol/Makefile.am | 31 + ompi/mca/vprotocol/base/Makefile.am | 20 + ompi/mca/vprotocol/base/base.h | 74 + ompi/mca/vprotocol/base/owner.txt | 7 + ompi/mca/vprotocol/base/vprotocol_base.c | 62 + .../vprotocol/base/vprotocol_base_parasite.c | 63 + .../vprotocol/base/vprotocol_base_request.c | 82 + .../vprotocol/base/vprotocol_base_request.h | 82 + .../vprotocol/base/vprotocol_base_select.c | 139 + ompi/mca/vprotocol/example/.opal_ignore | 0 ompi/mca/vprotocol/example/Makefile.am | 48 + ompi/mca/vprotocol/example/owner.txt | 7 + .../mca/vprotocol/example/vprotocol_example.c | 48 + .../mca/vprotocol/example/vprotocol_example.h | 96 + .../example/vprotocol_example_comm.c | 24 + .../example/vprotocol_example_component.c | 105 + .../example/vprotocol_example_probe.c | 29 + .../example/vprotocol_example_proc.c | 25 + .../example/vprotocol_example_progress.c | 24 + .../example/vprotocol_example_recv.c | 66 + .../example/vprotocol_example_send.c | 51 + .../example/vprotocol_example_start.c | 19 + .../example/vprotocol_example_start.h | 19 + .../example/vprotocol_example_wait.c | 31 + .../example/vprotocol_example_wait.h | 21 + ompi/mca/vprotocol/pessimist/Makefile.am | 57 + ompi/mca/vprotocol/pessimist/owner.txt | 7 + .../vprotocol/pessimist/vprotocol_pessimist.c | 55 + .../vprotocol/pessimist/vprotocol_pessimist.h | 114 + .../pessimist/vprotocol_pessimist_comm.c | 22 + .../pessimist/vprotocol_pessimist_component.c | 174 + .../pessimist/vprotocol_pessimist_event.c | 14 + .../pessimist/vprotocol_pessimist_event.h | 80 + .../pessimist/vprotocol_pessimist_eventlog.c | 163 + .../pessimist/vprotocol_pessimist_eventlog.h | 243 + .../vprotocol_pessimist_eventlog_protocol.h | 46 + .../pessimist/vprotocol_pessimist_probe.c | 95 + .../pessimist/vprotocol_pessimist_proc.c | 26 + .../pessimist/vprotocol_pessimist_progress.c | 29 + .../pessimist/vprotocol_pessimist_recv.c | 68 + .../pessimist/vprotocol_pessimist_request.c | 47 + .../pessimist/vprotocol_pessimist_request.h | 53 + .../pessimist/vprotocol_pessimist_send.c | 60 + .../vprotocol_pessimist_sender_based.c | 176 + .../vprotocol_pessimist_sender_based.h | 214 + .../vprotocol_pessimist_sender_based_types.h | 65 + .../pessimist/vprotocol_pessimist_start.c | 47 + .../pessimist/vprotocol_pessimist_start.h | 24 + .../pessimist/vprotocol_pessimist_wait.c | 172 + .../pessimist/vprotocol_pessimist_wait.h | 46 + ompi/mca/vprotocol/vprotocol.h | 100 + ompi/message/Makefile.am | 28 + ompi/message/message.c | 81 + ompi/message/message.h | 82 + ompi/mpi/Makefile.am | 26 + ompi/mpi/c/Makefile.am | 458 + ompi/mpi/c/abort.c | 61 + ompi/mpi/c/accumulate.c | 139 + ompi/mpi/c/add_error_class.c | 82 + ompi/mpi/c/add_error_code.c | 88 + ompi/mpi/c/add_error_string.c | 70 + ompi/mpi/c/address.c | 53 + ompi/mpi/c/allgather.c | 127 + ompi/mpi/c/allgatherv.c | 149 + ompi/mpi/c/alloc_mem.c | 96 + ompi/mpi/c/allreduce.c | 116 + ompi/mpi/c/alltoall.c | 112 + ompi/mpi/c/alltoallv.c | 131 + ompi/mpi/c/alltoallw.c | 126 + ompi/mpi/c/attr_delete.c | 65 + ompi/mpi/c/attr_fn.c | 156 + ompi/mpi/c/attr_get.c | 65 + ompi/mpi/c/attr_put.c | 64 + ompi/mpi/c/barrier.c | 77 + ompi/mpi/c/bcast.c | 114 + ompi/mpi/c/bindings.h | 98 + ompi/mpi/c/bsend.c | 83 + ompi/mpi/c/bsend_init.c | 98 + ompi/mpi/c/buffer_attach.c | 57 + ompi/mpi/c/buffer_detach.c | 56 + ompi/mpi/c/cancel.c | 68 + ompi/mpi/c/cart_coords.c | 82 + ompi/mpi/c/cart_create.c | 116 + ompi/mpi/c/cart_get.c | 76 + ompi/mpi/c/cart_map.c | 85 + ompi/mpi/c/cart_rank.c | 106 + ompi/mpi/c/cart_shift.c | 83 + ompi/mpi/c/cart_sub.c | 81 + ompi/mpi/c/cartdim_get.c | 77 + ompi/mpi/c/close_port.c | 61 + ompi/mpi/c/comm_accept.c | 127 + ompi/mpi/c/comm_c2f.c | 66 + ompi/mpi/c/comm_call_errhandler.c | 65 + ompi/mpi/c/comm_compare.c | 69 + ompi/mpi/c/comm_connect.c | 129 + ompi/mpi/c/comm_create.c | 69 + ompi/mpi/c/comm_create_errhandler.c | 70 + ompi/mpi/c/comm_create_group.c | 81 + ompi/mpi/c/comm_create_keyval.c | 66 + ompi/mpi/c/comm_delete_attr.c | 63 + ompi/mpi/c/comm_disconnect.c | 79 + ompi/mpi/c/comm_dup.c | 66 + ompi/mpi/c/comm_dup_with_info.c | 73 + ompi/mpi/c/comm_f2c.c | 61 + ompi/mpi/c/comm_free.c | 67 + ompi/mpi/c/comm_free_keyval.c | 58 + ompi/mpi/c/comm_get_attr.c | 71 + ompi/mpi/c/comm_get_errhandler.c | 82 + ompi/mpi/c/comm_get_info.c | 58 + ompi/mpi/c/comm_get_name.c | 88 + ompi/mpi/c/comm_get_parent.c | 60 + ompi/mpi/c/comm_group.c | 65 + ompi/mpi/c/comm_idup.c | 69 + ompi/mpi/c/comm_join.c | 254 + ompi/mpi/c/comm_rank.c | 63 + ompi/mpi/c/comm_remote_group.c | 73 + ompi/mpi/c/comm_remote_size.c | 63 + ompi/mpi/c/comm_set_attr.c | 62 + ompi/mpi/c/comm_set_errhandler.c | 80 + ompi/mpi/c/comm_set_info.c | 53 + ompi/mpi/c/comm_set_name.c | 78 + ompi/mpi/c/comm_size.c | 65 + ompi/mpi/c/comm_spawn.c | 166 + ompi/mpi/c/comm_spawn_multiple.c | 215 + ompi/mpi/c/comm_split.c | 72 + ompi/mpi/c/comm_split_type.c | 99 + ompi/mpi/c/comm_test_inter.c | 64 + ompi/mpi/c/compare_and_swap.c | 76 + ompi/mpi/c/dims_create.c | 255 + ompi/mpi/c/dist_graph_create.c | 95 + ompi/mpi/c/dist_graph_create_adjacent.c | 107 + ompi/mpi/c/dist_graph_neighbors.c | 73 + ompi/mpi/c/dist_graph_neighbors_count.c | 68 + ompi/mpi/c/errhandler_c2f.c | 57 + ompi/mpi/c/errhandler_create.c | 42 + ompi/mpi/c/errhandler_f2c.c | 64 + ompi/mpi/c/errhandler_free.c | 81 + ompi/mpi/c/errhandler_get.c | 55 + ompi/mpi/c/errhandler_set.c | 55 + ompi/mpi/c/error_class.c | 56 + ompi/mpi/c/error_string.c | 60 + ompi/mpi/c/exscan.c | 96 + ompi/mpi/c/fetch_and_op.c | 76 + ompi/mpi/c/file_c2f.c | 62 + ompi/mpi/c/file_call_errhandler.c | 60 + ompi/mpi/c/file_close.c | 62 + ompi/mpi/c/file_create_errhandler.c | 69 + ompi/mpi/c/file_delete.c | 83 + ompi/mpi/c/file_f2c.c | 62 + ompi/mpi/c/file_get_amode.c | 73 + ompi/mpi/c/file_get_atomicity.c | 73 + ompi/mpi/c/file_get_byte_offset.c | 74 + ompi/mpi/c/file_get_errhandler.c | 81 + ompi/mpi/c/file_get_group.c | 61 + ompi/mpi/c/file_get_info.c | 73 + ompi/mpi/c/file_get_position.c | 73 + ompi/mpi/c/file_get_position_shared.c | 73 + ompi/mpi/c/file_get_size.c | 73 + ompi/mpi/c/file_get_type_extent.c | 79 + ompi/mpi/c/file_get_view.c | 77 + ompi/mpi/c/file_iread.c | 84 + ompi/mpi/c/file_iread_all.c | 91 + ompi/mpi/c/file_iread_at.c | 86 + ompi/mpi/c/file_iread_at_all.c | 93 + ompi/mpi/c/file_iread_shared.c | 85 + ompi/mpi/c/file_iwrite.c | 88 + ompi/mpi/c/file_iwrite_all.c | 95 + ompi/mpi/c/file_iwrite_at.c | 91 + ompi/mpi/c/file_iwrite_at_all.c | 98 + ompi/mpi/c/file_iwrite_shared.c | 88 + ompi/mpi/c/file_open.c | 114 + ompi/mpi/c/file_preallocate.c | 71 + ompi/mpi/c/file_read.c | 82 + ompi/mpi/c/file_read_all.c | 82 + ompi/mpi/c/file_read_all_begin.c | 82 + ompi/mpi/c/file_read_all_end.c | 71 + ompi/mpi/c/file_read_at.c | 82 + ompi/mpi/c/file_read_at_all.c | 84 + ompi/mpi/c/file_read_at_all_begin.c | 82 + ompi/mpi/c/file_read_at_all_end.c | 71 + ompi/mpi/c/file_read_ordered.c | 77 + ompi/mpi/c/file_read_ordered_begin.c | 82 + ompi/mpi/c/file_read_ordered_end.c | 71 + ompi/mpi/c/file_read_shared.c | 82 + ompi/mpi/c/file_seek.c | 74 + ompi/mpi/c/file_seek_shared.c | 74 + ompi/mpi/c/file_set_atomicity.c | 71 + ompi/mpi/c/file_set_errhandler.c | 79 + ompi/mpi/c/file_set_info.c | 72 + ompi/mpi/c/file_set_size.c | 71 + ompi/mpi/c/file_set_view.c | 87 + ompi/mpi/c/file_sync.c | 71 + ompi/mpi/c/file_write.c | 86 + ompi/mpi/c/file_write_all.c | 86 + ompi/mpi/c/file_write_all_begin.c | 86 + ompi/mpi/c/file_write_all_end.c | 74 + ompi/mpi/c/file_write_at.c | 87 + ompi/mpi/c/file_write_at_all.c | 88 + ompi/mpi/c/file_write_at_all_begin.c | 87 + ompi/mpi/c/file_write_at_all_end.c | 74 + ompi/mpi/c/file_write_ordered.c | 86 + ompi/mpi/c/file_write_ordered_begin.c | 86 + ompi/mpi/c/file_write_ordered_end.c | 74 + ompi/mpi/c/file_write_shared.c | 86 + ompi/mpi/c/finalize.c | 48 + ompi/mpi/c/finalized.c | 83 + ompi/mpi/c/free_mem.c | 61 + ompi/mpi/c/gather.c | 185 + ompi/mpi/c/gatherv.c | 198 + ompi/mpi/c/get.c | 82 + ompi/mpi/c/get_accumulate.c | 149 + ompi/mpi/c/get_address.c | 54 + ompi/mpi/c/get_count.c | 85 + ompi/mpi/c/get_elements.c | 92 + ompi/mpi/c/get_elements_x.c | 92 + ompi/mpi/c/get_library_version.c | 124 + ompi/mpi/c/get_processor_name.c | 74 + ompi/mpi/c/get_version.c | 76 + ompi/mpi/c/graph_create.c | 116 + ompi/mpi/c/graph_get.c | 79 + ompi/mpi/c/graph_map.c | 84 + ompi/mpi/c/graph_neighbors.c | 84 + ompi/mpi/c/graph_neighbors_count.c | 81 + ompi/mpi/c/graphdims_get.c | 77 + ompi/mpi/c/grequest_complete.c | 64 + ompi/mpi/c/grequest_start.c | 60 + ompi/mpi/c/group_c2f.c | 53 + ompi/mpi/c/group_compare.c | 65 + ompi/mpi/c/group_difference.c | 61 + ompi/mpi/c/group_excl.c | 89 + ompi/mpi/c/group_f2c.c | 62 + ompi/mpi/c/group_free.c | 76 + ompi/mpi/c/group_incl.c | 89 + ompi/mpi/c/group_intersection.c | 62 + ompi/mpi/c/group_range_excl.c | 122 + ompi/mpi/c/group_range_incl.c | 123 + ompi/mpi/c/group_rank.c | 60 + ompi/mpi/c/group_size.c | 61 + ompi/mpi/c/group_translate_ranks.c | 76 + ompi/mpi/c/group_union.c | 62 + ompi/mpi/c/iallgather.c | 104 + ompi/mpi/c/iallgatherv.c | 128 + ompi/mpi/c/iallreduce.c | 118 + ompi/mpi/c/ialltoall.c | 102 + ompi/mpi/c/ialltoallv.c | 132 + ompi/mpi/c/ialltoallw.c | 129 + ompi/mpi/c/ibarrier.c | 65 + ompi/mpi/c/ibcast.c | 87 + ompi/mpi/c/ibsend.c | 88 + ompi/mpi/c/iexscan.c | 88 + ompi/mpi/c/igather.c | 174 + ompi/mpi/c/igatherv.c | 197 + ompi/mpi/c/improbe.c | 84 + ompi/mpi/c/imrecv.c | 72 + ompi/mpi/c/ineighbor_allgather.c | 126 + ompi/mpi/c/ineighbor_allgatherv.c | 149 + ompi/mpi/c/ineighbor_alltoall.c | 125 + ompi/mpi/c/ineighbor_alltoallv.c | 149 + ompi/mpi/c/ineighbor_alltoallw.c | 149 + ompi/mpi/c/info_c2f.c | 54 + ompi/mpi/c/info_create.c | 76 + ompi/mpi/c/info_delete.c | 92 + ompi/mpi/c/info_dup.c | 89 + ompi/mpi/c/info_f2c.c | 70 + ompi/mpi/c/info_free.c | 71 + ompi/mpi/c/info_get.c | 105 + ompi/mpi/c/info_get_nkeys.c | 74 + ompi/mpi/c/info_get_nthkey.c | 97 + ompi/mpi/c/info_get_valuelen.c | 95 + ompi/mpi/c/info_set.c | 109 + ompi/mpi/c/init.c | 87 + ompi/mpi/c/init_thread.c | 87 + ompi/mpi/c/initialized.c | 83 + ompi/mpi/c/intercomm_create.c | 236 + ompi/mpi/c/intercomm_merge.c | 154 + ompi/mpi/c/iprobe.c | 91 + ompi/mpi/c/irecv.c | 82 + ompi/mpi/c/ireduce.c | 142 + ompi/mpi/c/ireduce_scatter.c | 139 + ompi/mpi/c/ireduce_scatter_block.c | 106 + ompi/mpi/c/irsend.c | 92 + ompi/mpi/c/is_thread_main.c | 56 + ompi/mpi/c/iscan.c | 103 + ompi/mpi/c/iscatter.c | 157 + ompi/mpi/c/iscatterv.c | 197 + ompi/mpi/c/isend.c | 97 + ompi/mpi/c/issend.c | 90 + ompi/mpi/c/keyval_create.c | 67 + ompi/mpi/c/keyval_free.c | 55 + ompi/mpi/c/lookup_name.c | 146 + ompi/mpi/c/message_c2f.c | 77 + ompi/mpi/c/message_f2c.c | 62 + ompi/mpi/c/mprobe.c | 82 + ompi/mpi/c/mrecv.c | 80 + ompi/mpi/c/neighbor_allgather.c | 133 + ompi/mpi/c/neighbor_allgatherv.c | 148 + ompi/mpi/c/neighbor_alltoall.c | 134 + ompi/mpi/c/neighbor_alltoallv.c | 149 + ompi/mpi/c/neighbor_alltoallw.c | 145 + ompi/mpi/c/op_c2f.c | 53 + ompi/mpi/c/op_commutative.c | 66 + ompi/mpi/c/op_create.c | 67 + ompi/mpi/c/op_f2c.c | 63 + ompi/mpi/c/op_free.c | 63 + ompi/mpi/c/open_port.c | 74 + ompi/mpi/c/pack.c | 110 + ompi/mpi/c/pack_external.c | 80 + ompi/mpi/c/pack_external_size.c | 70 + ompi/mpi/c/pack_size.c | 78 + ompi/mpi/c/pcontrol.c | 56 + ompi/mpi/c/probe.c | 88 + ompi/mpi/c/profile/Makefile.am | 458 + ompi/mpi/c/publish_name.c | 180 + ompi/mpi/c/put.c | 85 + ompi/mpi/c/query_thread.c | 54 + ompi/mpi/c/raccumulate.c | 141 + ompi/mpi/c/recv.c | 81 + ompi/mpi/c/recv_init.c | 92 + ompi/mpi/c/reduce.c | 141 + ompi/mpi/c/reduce_local.c | 91 + ompi/mpi/c/reduce_scatter.c | 136 + ompi/mpi/c/reduce_scatter_block.c | 105 + ompi/mpi/c/register_datarep.c | 81 + ompi/mpi/c/request_c2f.c | 77 + ompi/mpi/c/request_f2c.c | 62 + ompi/mpi/c/request_free.c | 64 + ompi/mpi/c/request_get_status.c | 104 + ompi/mpi/c/rget.c | 85 + ompi/mpi/c/rget_accumulate.c | 151 + ompi/mpi/c/rput.c | 88 + ompi/mpi/c/rsend.c | 84 + ompi/mpi/c/rsend_init.c | 99 + ompi/mpi/c/scan.c | 110 + ompi/mpi/c/scatter.c | 168 + ompi/mpi/c/scatterv.c | 197 + ompi/mpi/c/send.c | 80 + ompi/mpi/c/send_init.c | 98 + ompi/mpi/c/sendrecv.c | 102 + ompi/mpi/c/sendrecv_replace.c | 144 + ompi/mpi/c/ssend.c | 83 + ompi/mpi/c/ssend_init.c | 99 + ompi/mpi/c/start.c | 92 + ompi/mpi/c/startall.c | 101 + ompi/mpi/c/status_c2f.c | 102 + ompi/mpi/c/status_f2c.c | 82 + ompi/mpi/c/status_set_cancelled.c | 67 + ompi/mpi/c/status_set_elements.c | 86 + ompi/mpi/c/status_set_elements_x.c | 86 + ompi/mpi/c/test.c | 77 + ompi/mpi/c/test_cancelled.c | 63 + ompi/mpi/c/testall.c | 94 + ompi/mpi/c/testany.c | 92 + ompi/mpi/c/testsome.c | 96 + ompi/mpi/c/topo_test.c | 69 + ompi/mpi/c/type_c2f.c | 59 + ompi/mpi/c/type_commit.c | 60 + ompi/mpi/c/type_contiguous.c | 76 + ompi/mpi/c/type_create_darray.c | 116 + ompi/mpi/c/type_create_f90_complex.c | 126 + ompi/mpi/c/type_create_f90_integer.c | 121 + ompi/mpi/c/type_create_f90_real.c | 124 + ompi/mpi/c/type_create_hindexed.c | 95 + ompi/mpi/c/type_create_hindexed_block.c | 79 + ompi/mpi/c/type_create_hvector.c | 85 + ompi/mpi/c/type_create_indexed_block.c | 87 + ompi/mpi/c/type_create_keyval.c | 69 + ompi/mpi/c/type_create_resized.c | 79 + ompi/mpi/c/type_create_struct.c | 102 + ompi/mpi/c/type_create_subarray.c | 92 + ompi/mpi/c/type_delete_attr.c | 64 + ompi/mpi/c/type_dup.c | 87 + ompi/mpi/c/type_extent.c | 62 + ompi/mpi/c/type_f2c.c | 67 + ompi/mpi/c/type_free.c | 69 + ompi/mpi/c/type_free_keyval.c | 60 + ompi/mpi/c/type_get_attr.c | 77 + ompi/mpi/c/type_get_contents.c | 95 + ompi/mpi/c/type_get_envelope.c | 69 + ompi/mpi/c/type_get_extent.c | 62 + ompi/mpi/c/type_get_extent_x.c | 68 + ompi/mpi/c/type_get_name.c | 76 + ompi/mpi/c/type_get_true_extent.c | 66 + ompi/mpi/c/type_get_true_extent_x.c | 72 + ompi/mpi/c/type_hindexed.c | 78 + ompi/mpi/c/type_hvector.c | 69 + ompi/mpi/c/type_indexed.c | 97 + ompi/mpi/c/type_lb.c | 62 + ompi/mpi/c/type_match_size.c | 69 + ompi/mpi/c/type_set_attr.c | 66 + ompi/mpi/c/type_set_name.c | 71 + ompi/mpi/c/type_size.c | 66 + ompi/mpi/c/type_size_x.c | 66 + ompi/mpi/c/type_struct.c | 44 + ompi/mpi/c/type_ub.c | 66 + ompi/mpi/c/type_vector.c | 82 + ompi/mpi/c/unpack.c | 115 + ompi/mpi/c/unpack_external.c | 76 + ompi/mpi/c/unpublish_name.c | 148 + ompi/mpi/c/wait.c | 91 + ompi/mpi/c/waitall.c | 90 + ompi/mpi/c/waitany.c | 90 + ompi/mpi/c/waitsome.c | 96 + ompi/mpi/c/win_allocate.c | 90 + ompi/mpi/c/win_allocate_shared.c | 91 + ompi/mpi/c/win_attach.c | 63 + ompi/mpi/c/win_c2f.c | 64 + ompi/mpi/c/win_call_errhandler.c | 58 + ompi/mpi/c/win_complete.c | 56 + ompi/mpi/c/win_create.c | 90 + ompi/mpi/c/win_create_dynamic.c | 85 + ompi/mpi/c/win_create_errhandler.c | 66 + ompi/mpi/c/win_create_keyval.c | 65 + ompi/mpi/c/win_delete_attr.c | 57 + ompi/mpi/c/win_detach.c | 63 + ompi/mpi/c/win_f2c.c | 60 + ompi/mpi/c/win_fence.c | 62 + ompi/mpi/c/win_flush.c | 61 + ompi/mpi/c/win_flush_all.c | 61 + ompi/mpi/c/win_flush_local.c | 61 + ompi/mpi/c/win_flush_local_all.c | 61 + ompi/mpi/c/win_free.c | 59 + ompi/mpi/c/win_free_keyval.c | 57 + ompi/mpi/c/win_get_attr.c | 70 + ompi/mpi/c/win_get_errhandler.c | 73 + ompi/mpi/c/win_get_group.c | 57 + ompi/mpi/c/win_get_info.c | 66 + ompi/mpi/c/win_get_name.c | 68 + ompi/mpi/c/win_lock.c | 71 + ompi/mpi/c/win_lock_all.c | 60 + ompi/mpi/c/win_post.c | 59 + ompi/mpi/c/win_set_attr.c | 57 + ompi/mpi/c/win_set_errhandler.c | 74 + ompi/mpi/c/win_set_info.c | 50 + ompi/mpi/c/win_set_name.c | 61 + ompi/mpi/c/win_shared_query.c | 56 + ompi/mpi/c/win_start.c | 58 + ompi/mpi/c/win_sync.c | 59 + ompi/mpi/c/win_test.c | 56 + ompi/mpi/c/win_unlock.c | 64 + ompi/mpi/c/win_unlock_all.c | 56 + ompi/mpi/c/win_wait.c | 56 + ompi/mpi/c/wtick.c | 83 + ompi/mpi/c/wtime.c | 77 + ompi/mpi/cxx/Makefile.am | 87 + ompi/mpi/cxx/comm.cc | 135 + ompi/mpi/cxx/comm.h | 465 + ompi/mpi/cxx/comm_inln.h | 689 ++ ompi/mpi/cxx/constants.h | 295 + ompi/mpi/cxx/cxx_glue.c | 158 + ompi/mpi/cxx/cxx_glue.h | 90 + ompi/mpi/cxx/datatype.cc | 103 + ompi/mpi/cxx/datatype.h | 258 + ompi/mpi/cxx/datatype_inln.h | 418 + ompi/mpi/cxx/errhandler.h | 63 + ompi/mpi/cxx/errhandler_inln.h | 49 + ompi/mpi/cxx/exception.h | 74 + ompi/mpi/cxx/file.cc | 185 + ompi/mpi/cxx/file.h | 317 + ompi/mpi/cxx/file_inln.h | 655 ++ ompi/mpi/cxx/functions.h | 156 + ompi/mpi/cxx/functions_inln.h | 295 + ompi/mpi/cxx/group.h | 124 + ompi/mpi/cxx/group_inln.h | 129 + ompi/mpi/cxx/info.h | 103 + ompi/mpi/cxx/info_inln.h | 83 + ompi/mpi/cxx/intercepts.cc | 517 + ompi/mpi/cxx/intercomm.h | 87 + ompi/mpi/cxx/intercomm_inln.h | 81 + ompi/mpi/cxx/intracomm.h | 166 + ompi/mpi/cxx/intracomm_inln.h | 240 + ompi/mpi/cxx/mpicxx.cc | 170 + ompi/mpi/cxx/mpicxx.h | 294 + ompi/mpi/cxx/op.h | 65 + ompi/mpi/cxx/op_inln.h | 149 + ompi/mpi/cxx/request.h | 235 + ompi/mpi/cxx/request_inln.h | 366 + ompi/mpi/cxx/status.h | 115 + ompi/mpi/cxx/status_inln.h | 105 + ompi/mpi/cxx/topology.h | 167 + ompi/mpi/cxx/topology_inln.h | 220 + ompi/mpi/cxx/win.cc | 113 + ompi/mpi/cxx/win.h | 212 + ompi/mpi/cxx/win_inln.h | 295 + ompi/mpi/fortran/base/Makefile.am | 54 + .../base/attr-fn-int-callback-interfaces.h | 157 + ompi/mpi/fortran/base/attr_fn_f.c | 308 + ompi/mpi/fortran/base/constants.h | 101 + .../base/conversion-fn-null-int-interface.h | 34 + ompi/mpi/fortran/base/conversion_fn_null_f.c | 72 + ompi/mpi/fortran/base/datarep.h | 107 + ompi/mpi/fortran/base/f90_accessors.c | 147 + ompi/mpi/fortran/base/fint_2_int.h | 244 + ompi/mpi/fortran/base/fortran_base_strings.h | 112 + ompi/mpi/fortran/base/gen-mpi-mangling.pl | 206 + ompi/mpi/fortran/base/gen-mpi-sizeof.pl | 257 + ompi/mpi/fortran/base/strings.c | 169 + ompi/mpi/fortran/base/test_constants_f.c | 85 + .../mpi/fortran/c_to_integer_kind_mapping.pdf | Bin 0 -> 57310 bytes ompi/mpi/fortran/common_sym_whitelist.txt | 65 + .../fortran/configure-fortran-output-bottom.h | 48 + .../mpi/fortran/configure-fortran-output.h.in | 112 + ompi/mpi/fortran/mpiext/Makefile.am | 109 + ompi/mpi/fortran/mpif-h/Makefile.am | 506 + ompi/mpi/fortran/mpif-h/abort_f.c | 77 + ompi/mpi/fortran/mpif-h/accumulate_f.c | 93 + ompi/mpi/fortran/mpif-h/add_error_class_f.c | 80 + ompi/mpi/fortran/mpif-h/add_error_code_f.c | 82 + ompi/mpi/fortran/mpif-h/add_error_string_f.c | 89 + ompi/mpi/fortran/mpif-h/address_f.c | 80 + ompi/mpi/fortran/mpif-h/aint_add_f.c | 73 + ompi/mpi/fortran/mpif-h/aint_diff_f.c | 73 + ompi/mpi/fortran/mpif-h/allgather_f.c | 94 + ompi/mpi/fortran/mpif-h/allgatherv_f.c | 104 + ompi/mpi/fortran/mpif-h/alloc_mem_f.c | 118 + ompi/mpi/fortran/mpif-h/allreduce_f.c | 91 + ompi/mpi/fortran/mpif-h/alltoall_f.c | 93 + ompi/mpi/fortran/mpif-h/alltoallv_f.c | 111 + ompi/mpi/fortran/mpif-h/alltoallw_f.c | 121 + ompi/mpi/fortran/mpif-h/attr_delete_f.c | 77 + ompi/mpi/fortran/mpif-h/attr_get_f.c | 87 + ompi/mpi/fortran/mpif-h/attr_put_f.c | 86 + ompi/mpi/fortran/mpif-h/barrier_f.c | 78 + ompi/mpi/fortran/mpif-h/bcast_f.c | 86 + ompi/mpi/fortran/mpif-h/bindings.h | 85 + ompi/mpi/fortran/mpif-h/bsend_f.c | 82 + ompi/mpi/fortran/mpif-h/bsend_init_f.c | 89 + ompi/mpi/fortran/mpif-h/buffer_attach_f.c | 73 + ompi/mpi/fortran/mpif-h/buffer_detach_f.c | 93 + ompi/mpi/fortran/mpif-h/cancel_f.c | 78 + ompi/mpi/fortran/mpif-h/cart_coords_f.c | 90 + ompi/mpi/fortran/mpif-h/cart_create_f.c | 100 + ompi/mpi/fortran/mpif-h/cart_get_f.c | 95 + ompi/mpi/fortran/mpif-h/cart_map_f.c | 94 + ompi/mpi/fortran/mpif-h/cart_rank_f.c | 94 + ompi/mpi/fortran/mpif-h/cart_shift_f.c | 91 + ompi/mpi/fortran/mpif-h/cart_sub_f.c | 105 + ompi/mpi/fortran/mpif-h/cartdim_get_f.c | 83 + ompi/mpi/fortran/mpif-h/close_port_f.c | 80 + ompi/mpi/fortran/mpif-h/comm_accept_f.c | 93 + .../fortran/mpif-h/comm_call_errhandler_f.c | 79 + ompi/mpi/fortran/mpif-h/comm_compare_f.c | 83 + ompi/mpi/fortran/mpif-h/comm_connect_f.c | 94 + .../fortran/mpif-h/comm_create_errhandler_f.c | 90 + ompi/mpi/fortran/mpif-h/comm_create_f.c | 81 + ompi/mpi/fortran/mpif-h/comm_create_group_f.c | 84 + .../mpi/fortran/mpif-h/comm_create_keyval_f.c | 103 + ompi/mpi/fortran/mpif-h/comm_delete_attr_f.c | 79 + ompi/mpi/fortran/mpif-h/comm_disconnect_f.c | 82 + ompi/mpi/fortran/mpif-h/comm_dup_f.c | 81 + .../mpi/fortran/mpif-h/comm_dup_with_info_f.c | 87 + ompi/mpi/fortran/mpif-h/comm_free_f.c | 80 + ompi/mpi/fortran/mpif-h/comm_free_keyval_f.c | 82 + ompi/mpi/fortran/mpif-h/comm_get_attr_f.c | 88 + .../fortran/mpif-h/comm_get_errhandler_f.c | 84 + ompi/mpi/fortran/mpif-h/comm_get_info_f.c | 73 + ompi/mpi/fortran/mpif-h/comm_get_name_f.c | 88 + ompi/mpi/fortran/mpif-h/comm_get_parent_f.c | 80 + ompi/mpi/fortran/mpif-h/comm_group_f.c | 81 + ompi/mpi/fortran/mpif-h/comm_idup_f.c | 86 + ompi/mpi/fortran/mpif-h/comm_join_f.c | 80 + ompi/mpi/fortran/mpif-h/comm_rank_f.c | 81 + ompi/mpi/fortran/mpif-h/comm_remote_group_f.c | 80 + ompi/mpi/fortran/mpif-h/comm_remote_size_f.c | 80 + ompi/mpi/fortran/mpif-h/comm_set_attr_f.c | 86 + .../fortran/mpif-h/comm_set_errhandler_f.c | 82 + ompi/mpi/fortran/mpif-h/comm_set_info_f.c | 69 + ompi/mpi/fortran/mpif-h/comm_set_name_f.c | 97 + ompi/mpi/fortran/mpif-h/comm_size_f.c | 83 + ompi/mpi/fortran/mpif-h/comm_spawn_f.c | 127 + .../fortran/mpif-h/comm_spawn_multiple_f.c | 156 + ompi/mpi/fortran/mpif-h/comm_split_f.c | 85 + ompi/mpi/fortran/mpif-h/comm_split_type_f.c | 90 + ompi/mpi/fortran/mpif-h/comm_test_inter_f.c | 81 + ompi/mpi/fortran/mpif-h/compare_and_swap_f.c | 89 + ompi/mpi/fortran/mpif-h/dims_create_f.c | 87 + .../mpif-h/dist_graph_create_adjacent_f.c | 129 + ompi/mpi/fortran/mpif-h/dist_graph_create_f.c | 114 + .../mpif-h/dist_graph_neighbors_count_f.c | 85 + .../fortran/mpif-h/dist_graph_neighbors_f.c | 114 + ompi/mpi/fortran/mpif-h/errhandler_create_f.c | 73 + ompi/mpi/fortran/mpif-h/errhandler_free_f.c | 82 + ompi/mpi/fortran/mpif-h/errhandler_get_f.c | 84 + ompi/mpi/fortran/mpif-h/errhandler_set_f.c | 81 + ompi/mpi/fortran/mpif-h/error_class_f.c | 82 + ompi/mpi/fortran/mpif-h/error_string_f.c | 100 + ompi/mpi/fortran/mpif-h/exscan_f.c | 91 + ompi/mpi/fortran/mpif-h/f_sync_reg_f.c | 74 + ompi/mpi/fortran/mpif-h/fetch_and_op_f.c | 89 + .../fortran/mpif-h/file_call_errhandler_f.c | 79 + ompi/mpi/fortran/mpif-h/file_close_f.c | 82 + .../fortran/mpif-h/file_create_errhandler_f.c | 89 + ompi/mpi/fortran/mpif-h/file_delete_f.c | 91 + ompi/mpi/fortran/mpif-h/file_get_amode_f.c | 82 + .../mpi/fortran/mpif-h/file_get_atomicity_f.c | 83 + .../fortran/mpif-h/file_get_byte_offset_f.c | 81 + .../fortran/mpif-h/file_get_errhandler_f.c | 83 + ompi/mpi/fortran/mpif-h/file_get_group_f.c | 81 + ompi/mpi/fortran/mpif-h/file_get_info_f.c | 81 + ompi/mpi/fortran/mpif-h/file_get_position_f.c | 81 + .../mpif-h/file_get_position_shared_f.c | 82 + ompi/mpi/fortran/mpif-h/file_get_size_f.c | 81 + .../fortran/mpif-h/file_get_type_extent_f.c | 80 + ompi/mpi/fortran/mpif-h/file_get_view_f.c | 91 + ompi/mpi/fortran/mpif-h/file_iread_all_f.c | 86 + ompi/mpi/fortran/mpif-h/file_iread_at_all_f.c | 89 + ompi/mpi/fortran/mpif-h/file_iread_at_f.c | 89 + ompi/mpi/fortran/mpif-h/file_iread_f.c | 86 + ompi/mpi/fortran/mpif-h/file_iread_shared_f.c | 89 + ompi/mpi/fortran/mpif-h/file_iwrite_all_f.c | 85 + .../mpi/fortran/mpif-h/file_iwrite_at_all_f.c | 88 + ompi/mpi/fortran/mpif-h/file_iwrite_at_f.c | 88 + ompi/mpi/fortran/mpif-h/file_iwrite_f.c | 85 + .../mpi/fortran/mpif-h/file_iwrite_shared_f.c | 89 + ompi/mpi/fortran/mpif-h/file_open_f.c | 98 + ompi/mpi/fortran/mpif-h/file_preallocate_f.c | 76 + .../fortran/mpif-h/file_read_all_begin_f.c | 82 + ompi/mpi/fortran/mpif-h/file_read_all_end_f.c | 85 + ompi/mpi/fortran/mpif-h/file_read_all_f.c | 88 + .../fortran/mpif-h/file_read_at_all_begin_f.c | 84 + .../fortran/mpif-h/file_read_at_all_end_f.c | 85 + ompi/mpi/fortran/mpif-h/file_read_at_all_f.c | 93 + ompi/mpi/fortran/mpif-h/file_read_at_f.c | 91 + ompi/mpi/fortran/mpif-h/file_read_f.c | 88 + .../mpif-h/file_read_ordered_begin_f.c | 81 + .../fortran/mpif-h/file_read_ordered_end_f.c | 85 + ompi/mpi/fortran/mpif-h/file_read_ordered_f.c | 91 + ompi/mpi/fortran/mpif-h/file_read_shared_f.c | 91 + ompi/mpi/fortran/mpif-h/file_seek_f.c | 78 + ompi/mpi/fortran/mpif-h/file_seek_shared_f.c | 78 + .../mpi/fortran/mpif-h/file_set_atomicity_f.c | 77 + .../fortran/mpif-h/file_set_errhandler_f.c | 79 + ompi/mpi/fortran/mpif-h/file_set_info_f.c | 77 + ompi/mpi/fortran/mpif-h/file_set_size_f.c | 76 + ompi/mpi/fortran/mpif-h/file_set_view_f.c | 97 + ompi/mpi/fortran/mpif-h/file_sync_f.c | 76 + .../fortran/mpif-h/file_write_all_begin_f.c | 82 + .../mpi/fortran/mpif-h/file_write_all_end_f.c | 85 + ompi/mpi/fortran/mpif-h/file_write_all_f.c | 88 + .../mpif-h/file_write_at_all_begin_f.c | 84 + .../fortran/mpif-h/file_write_at_all_end_f.c | 85 + ompi/mpi/fortran/mpif-h/file_write_at_all_f.c | 93 + ompi/mpi/fortran/mpif-h/file_write_at_f.c | 93 + ompi/mpi/fortran/mpif-h/file_write_f.c | 88 + .../mpif-h/file_write_ordered_begin_f.c | 82 + .../fortran/mpif-h/file_write_ordered_end_f.c | 85 + .../mpi/fortran/mpif-h/file_write_ordered_f.c | 91 + ompi/mpi/fortran/mpif-h/file_write_shared_f.c | 91 + ompi/mpi/fortran/mpif-h/finalize_f.c | 73 + ompi/mpi/fortran/mpif-h/finalized_f.c | 80 + ompi/mpi/fortran/mpif-h/free_mem_f.c | 73 + ompi/mpi/fortran/mpif-h/gather_f.c | 93 + ompi/mpi/fortran/mpif-h/gatherv_f.c | 101 + ompi/mpi/fortran/mpif-h/get_accumulate_f.c | 99 + ompi/mpi/fortran/mpif-h/get_address_f.c | 81 + ompi/mpi/fortran/mpif-h/get_count_f.c | 90 + ompi/mpi/fortran/mpif-h/get_elements_f.c | 90 + ompi/mpi/fortran/mpif-h/get_elements_x_f.c | 90 + ompi/mpi/fortran/mpif-h/get_f.c | 89 + .../fortran/mpif-h/get_library_version_f.c | 84 + .../mpi/fortran/mpif-h/get_processor_name_f.c | 101 + ompi/mpi/fortran/mpif-h/get_version_f.c | 83 + ompi/mpi/fortran/mpif-h/graph_create_f.c | 100 + ompi/mpi/fortran/mpif-h/graph_get_f.c | 96 + ompi/mpi/fortran/mpif-h/graph_map_f.c | 95 + .../fortran/mpif-h/graph_neighbors_count_f.c | 86 + ompi/mpi/fortran/mpif-h/graph_neighbors_f.c | 95 + ompi/mpi/fortran/mpif-h/graphdims_get_f.c | 89 + ompi/mpi/fortran/mpif-h/grequest_complete_f.c | 76 + ompi/mpi/fortran/mpif-h/grequest_start_f.c | 92 + ompi/mpi/fortran/mpif-h/group_compare_f.c | 96 + ompi/mpi/fortran/mpif-h/group_difference_f.c | 86 + ompi/mpi/fortran/mpif-h/group_excl_f.c | 92 + ompi/mpi/fortran/mpif-h/group_free_f.c | 87 + ompi/mpi/fortran/mpif-h/group_incl_f.c | 91 + .../mpi/fortran/mpif-h/group_intersection_f.c | 86 + ompi/mpi/fortran/mpif-h/group_range_excl_f.c | 92 + ompi/mpi/fortran/mpif-h/group_range_incl_f.c | 93 + ompi/mpi/fortran/mpif-h/group_rank_f.c | 85 + ompi/mpi/fortran/mpif-h/group_size_f.c | 85 + .../fortran/mpif-h/group_translate_ranks_f.c | 100 + ompi/mpi/fortran/mpif-h/group_union_f.c | 86 + ompi/mpi/fortran/mpif-h/iallgather_f.c | 97 + ompi/mpi/fortran/mpif-h/iallgatherv_f.c | 107 + ompi/mpi/fortran/mpif-h/iallreduce_f.c | 93 + ompi/mpi/fortran/mpif-h/ialltoall_f.c | 96 + ompi/mpi/fortran/mpif-h/ialltoallv_f.c | 113 + ompi/mpi/fortran/mpif-h/ialltoallw_f.c | 123 + ompi/mpi/fortran/mpif-h/ibarrier_f.c | 81 + ompi/mpi/fortran/mpif-h/ibcast_f.c | 90 + ompi/mpi/fortran/mpif-h/ibsend_f.c | 90 + ompi/mpi/fortran/mpif-h/iexscan_f.c | 93 + ompi/mpi/fortran/mpif-h/igather_f.c | 96 + ompi/mpi/fortran/mpif-h/igatherv_f.c | 103 + ompi/mpi/fortran/mpif-h/improbe_f.c | 103 + ompi/mpi/fortran/mpif-h/imrecv_f.c | 92 + .../fortran/mpif-h/ineighbor_allgather_f.c | 100 + .../fortran/mpif-h/ineighbor_allgatherv_f.c | 110 + .../mpi/fortran/mpif-h/ineighbor_alltoall_f.c | 99 + .../fortran/mpif-h/ineighbor_alltoallv_f.c | 116 + .../fortran/mpif-h/ineighbor_alltoallw_f.c | 120 + ompi/mpi/fortran/mpif-h/info_create_f.c | 80 + ompi/mpi/fortran/mpif-h/info_delete_f.c | 96 + ompi/mpi/fortran/mpif-h/info_dup_f.c | 82 + ompi/mpi/fortran/mpif-h/info_free_f.c | 82 + ompi/mpi/fortran/mpif-h/info_get_f.c | 120 + ompi/mpi/fortran/mpif-h/info_get_nkeys_f.c | 83 + ompi/mpi/fortran/mpif-h/info_get_nthkey_f.c | 98 + ompi/mpi/fortran/mpif-h/info_get_valuelen_f.c | 106 + ompi/mpi/fortran/mpif-h/info_set_f.c | 103 + ompi/mpi/fortran/mpif-h/init_f.c | 86 + ompi/mpi/fortran/mpif-h/init_thread_f.c | 84 + ompi/mpi/fortran/mpif-h/initialized_f.c | 79 + ompi/mpi/fortran/mpif-h/intercomm_create_f.c | 91 + ompi/mpi/fortran/mpif-h/intercomm_merge_f.c | 83 + ompi/mpi/fortran/mpif-h/iprobe_f.c | 95 + ompi/mpi/fortran/mpif-h/irecv_f.c | 89 + ompi/mpi/fortran/mpif-h/ireduce_f.c | 96 + .../fortran/mpif-h/ireduce_scatter_block_f.c | 97 + ompi/mpi/fortran/mpif-h/ireduce_scatter_f.c | 99 + ompi/mpi/fortran/mpif-h/irsend_f.c | 88 + ompi/mpi/fortran/mpif-h/is_thread_main_f.c | 80 + ompi/mpi/fortran/mpif-h/iscan_f.c | 94 + ompi/mpi/fortran/mpif-h/iscatter_f.c | 95 + ompi/mpi/fortran/mpif-h/iscatterv_f.c | 107 + ompi/mpi/fortran/mpif-h/isend_f.c | 88 + ompi/mpi/fortran/mpif-h/issend_f.c | 88 + ompi/mpi/fortran/mpif-h/keyval_create_f.c | 103 + ompi/mpi/fortran/mpif-h/keyval_free_f.c | 82 + ompi/mpi/fortran/mpif-h/lookup_name_f.c | 96 + ompi/mpi/fortran/mpif-h/mprobe_f.c | 99 + ompi/mpi/fortran/mpif-h/mrecv_f.c | 97 + .../mpi/fortran/mpif-h/neighbor_allgather_f.c | 97 + .../fortran/mpif-h/neighbor_allgatherv_f.c | 107 + ompi/mpi/fortran/mpif-h/neighbor_alltoall_f.c | 96 + .../mpi/fortran/mpif-h/neighbor_alltoallv_f.c | 114 + .../mpi/fortran/mpif-h/neighbor_alltoallw_f.c | 118 + ompi/mpi/fortran/mpif-h/op_commutative_f.c | 83 + ompi/mpi/fortran/mpif-h/op_create_f.c | 87 + ompi/mpi/fortran/mpif-h/op_free_f.c | 82 + ompi/mpi/fortran/mpif-h/open_port_f.c | 84 + ompi/mpi/fortran/mpif-h/pack_external_f.c | 100 + .../mpi/fortran/mpif-h/pack_external_size_f.c | 97 + ompi/mpi/fortran/mpif-h/pack_f.c | 93 + ompi/mpi/fortran/mpif-h/pack_size_f.c | 88 + ompi/mpi/fortran/mpif-h/pcontrol_f.c | 72 + ompi/mpi/fortran/mpif-h/probe_f.c | 89 + ompi/mpi/fortran/mpif-h/profile/Makefile.am | 471 + ompi/mpi/fortran/mpif-h/prototypes_mpi.h | 470 + ompi/mpi/fortran/mpif-h/publish_name_f.c | 87 + ompi/mpi/fortran/mpif-h/put_f.c | 89 + ompi/mpi/fortran/mpif-h/query_thread_f.c | 80 + ompi/mpi/fortran/mpif-h/raccumulate_f.c | 102 + ompi/mpi/fortran/mpif-h/recv_f.c | 92 + ompi/mpi/fortran/mpif-h/recv_init_f.c | 90 + ompi/mpi/fortran/mpif-h/reduce_f.c | 93 + ompi/mpi/fortran/mpif-h/reduce_local_f.c | 87 + .../fortran/mpif-h/reduce_scatter_block_f.c | 94 + ompi/mpi/fortran/mpif-h/reduce_scatter_f.c | 96 + ompi/mpi/fortran/mpif-h/register_datarep_f.c | 254 + ompi/mpi/fortran/mpif-h/request_free_f.c | 80 + .../mpi/fortran/mpif-h/request_get_status_f.c | 91 + ompi/mpi/fortran/mpif-h/rget_accumulate_f.c | 106 + ompi/mpi/fortran/mpif-h/rget_f.c | 98 + ompi/mpi/fortran/mpif-h/rput_f.c | 98 + ompi/mpi/fortran/mpif-h/rsend_f.c | 83 + ompi/mpi/fortran/mpif-h/rsend_init_f.c | 91 + ompi/mpi/fortran/mpif-h/scan_f.c | 92 + ompi/mpi/fortran/mpif-h/scatter_f.c | 92 + ompi/mpi/fortran/mpif-h/scatterv_f.c | 105 + ompi/mpi/fortran/mpif-h/send_f.c | 83 + ompi/mpi/fortran/mpif-h/send_init_f.c | 90 + ompi/mpi/fortran/mpif-h/sendrecv_f.c | 98 + ompi/mpi/fortran/mpif-h/sendrecv_replace_f.c | 96 + ompi/mpi/fortran/mpif-h/ssend_f.c | 84 + ompi/mpi/fortran/mpif-h/ssend_init_f.c | 90 + ompi/mpi/fortran/mpif-h/start_f.c | 88 + ompi/mpi/fortran/mpif-h/startall_f.c | 100 + ompi/mpi/fortran/mpif-h/status-conversion.h | 171 + .../fortran/mpif-h/status_set_cancelled_f.c | 89 + .../fortran/mpif-h/status_set_elements_f.c | 94 + .../fortran/mpif-h/status_set_elements_x_f.c | 95 + ompi/mpi/fortran/mpif-h/test_cancelled_f.c | 92 + ompi/mpi/fortran/mpif-h/test_f.c | 94 + ompi/mpi/fortran/mpif-h/testall_f.c | 123 + ompi/mpi/fortran/mpif-h/testany_f.c | 131 + ompi/mpi/fortran/mpif-h/testsome_f.c | 135 + ompi/mpi/fortran/mpif-h/topo_test_f.c | 84 + ompi/mpi/fortran/mpif-h/type_commit_f.c | 80 + ompi/mpi/fortran/mpif-h/type_contiguous_f.c | 82 + .../mpi/fortran/mpif-h/type_create_darray_f.c | 107 + .../mpif-h/type_create_f90_complex_f.c | 83 + .../mpif-h/type_create_f90_integer_f.c | 81 + .../fortran/mpif-h/type_create_f90_real_f.c | 83 + .../mpif-h/type_create_hindexed_block_f.c | 81 + .../fortran/mpif-h/type_create_hindexed_f.c | 94 + .../fortran/mpif-h/type_create_hvector_f.c | 85 + .../mpif-h/type_create_indexed_block_f.c | 93 + .../mpi/fortran/mpif-h/type_create_keyval_f.c | 101 + .../fortran/mpif-h/type_create_resized_f.c | 83 + .../mpi/fortran/mpif-h/type_create_struct_f.c | 111 + .../fortran/mpif-h/type_create_subarray_f.c | 102 + ompi/mpi/fortran/mpif-h/type_delete_attr_f.c | 77 + ompi/mpi/fortran/mpif-h/type_dup_f.c | 81 + ompi/mpi/fortran/mpif-h/type_extent_f.c | 81 + ompi/mpi/fortran/mpif-h/type_free_f.c | 82 + ompi/mpi/fortran/mpif-h/type_free_keyval_f.c | 82 + ompi/mpi/fortran/mpif-h/type_get_attr_f.c | 88 + ompi/mpi/fortran/mpif-h/type_get_contents_f.c | 131 + ompi/mpi/fortran/mpif-h/type_get_envelope_f.c | 94 + ompi/mpi/fortran/mpif-h/type_get_extent_f.c | 77 + ompi/mpi/fortran/mpif-h/type_get_extent_x_f.c | 79 + ompi/mpi/fortran/mpif-h/type_get_name_f.c | 84 + .../fortran/mpif-h/type_get_true_extent_f.c | 76 + .../fortran/mpif-h/type_get_true_extent_x_f.c | 78 + ompi/mpi/fortran/mpif-h/type_hindexed_f.c | 108 + ompi/mpi/fortran/mpif-h/type_hvector_f.c | 87 + ompi/mpi/fortran/mpif-h/type_indexed_f.c | 94 + ompi/mpi/fortran/mpif-h/type_lb_f.c | 81 + ompi/mpi/fortran/mpif-h/type_match_size_f.c | 111 + ompi/mpi/fortran/mpif-h/type_set_attr_f.c | 85 + ompi/mpi/fortran/mpif-h/type_set_name_f.c | 100 + ompi/mpi/fortran/mpif-h/type_size_f.c | 81 + ompi/mpi/fortran/mpif-h/type_size_x_f.c | 79 + ompi/mpi/fortran/mpif-h/type_struct_f.c | 114 + ompi/mpi/fortran/mpif-h/type_ub_f.c | 81 + ompi/mpi/fortran/mpif-h/type_vector_f.c | 88 + ompi/mpi/fortran/mpif-h/unpack_external_f.c | 103 + ompi/mpi/fortran/mpif-h/unpack_f.c | 92 + ompi/mpi/fortran/mpif-h/unpublish_name_f.c | 89 + ompi/mpi/fortran/mpif-h/wait_f.c | 85 + ompi/mpi/fortran/mpif-h/waitall_f.c | 117 + ompi/mpi/fortran/mpif-h/waitany_f.c | 124 + ompi/mpi/fortran/mpif-h/waitsome_f.c | 138 + ompi/mpi/fortran/mpif-h/win_allocate_f.c | 140 + .../fortran/mpif-h/win_allocate_shared_f.c | 140 + ompi/mpi/fortran/mpif-h/win_attach_f.c | 67 + .../fortran/mpif-h/win_call_errhandler_f.c | 79 + ompi/mpi/fortran/mpif-h/win_complete_f.c | 78 + .../mpi/fortran/mpif-h/win_create_dynamic_f.c | 75 + .../fortran/mpif-h/win_create_errhandler_f.c | 87 + ompi/mpi/fortran/mpif-h/win_create_f.c | 89 + ompi/mpi/fortran/mpif-h/win_create_keyval_f.c | 100 + ompi/mpi/fortran/mpif-h/win_delete_attr_f.c | 77 + ompi/mpi/fortran/mpif-h/win_detach_f.c | 67 + ompi/mpi/fortran/mpif-h/win_fence_f.c | 76 + ompi/mpi/fortran/mpif-h/win_flush_all_f.c | 79 + ompi/mpi/fortran/mpif-h/win_flush_f.c | 79 + .../fortran/mpif-h/win_flush_local_all_f.c | 79 + ompi/mpi/fortran/mpif-h/win_flush_local_f.c | 79 + ompi/mpi/fortran/mpif-h/win_free_f.c | 80 + ompi/mpi/fortran/mpif-h/win_free_keyval_f.c | 82 + ompi/mpi/fortran/mpif-h/win_get_attr_f.c | 86 + .../mpi/fortran/mpif-h/win_get_errhandler_f.c | 82 + ompi/mpi/fortran/mpif-h/win_get_group_f.c | 81 + ompi/mpi/fortran/mpif-h/win_get_info_f.c | 68 + ompi/mpi/fortran/mpif-h/win_get_name_f.c | 88 + ompi/mpi/fortran/mpif-h/win_lock_all_f.c | 77 + ompi/mpi/fortran/mpif-h/win_lock_f.c | 80 + ompi/mpi/fortran/mpif-h/win_post_f.c | 80 + ompi/mpi/fortran/mpif-h/win_set_attr_f.c | 87 + .../mpi/fortran/mpif-h/win_set_errhandler_f.c | 79 + ompi/mpi/fortran/mpif-h/win_set_info_f.c | 68 + ompi/mpi/fortran/mpif-h/win_set_name_f.c | 99 + ompi/mpi/fortran/mpif-h/win_shared_query_f.c | 139 + ompi/mpi/fortran/mpif-h/win_start_f.c | 80 + ompi/mpi/fortran/mpif-h/win_sync_f.c | 76 + ompi/mpi/fortran/mpif-h/win_test_f.c | 81 + ompi/mpi/fortran/mpif-h/win_unlock_all_f.c | 76 + ompi/mpi/fortran/mpif-h/win_unlock_f.c | 76 + ompi/mpi/fortran/mpif-h/win_wait_f.c | 76 + ompi/mpi/fortran/mpif-h/wtick_f.c | 74 + ompi/mpi/fortran/mpif-h/wtime_f.c | 74 + ompi/mpi/fortran/use-mpi-f08/Makefile.am | 872 ++ ompi/mpi/fortran/use-mpi-f08/abort_f08.F90 | 20 + .../fortran/use-mpi-f08/accumulate_f08.F90 | 31 + .../use-mpi-f08/add_error_class_f08.F90 | 18 + .../use-mpi-f08/add_error_code_f08.F90 | 19 + .../use-mpi-f08/add_error_string_f08.F90 | 19 + ompi/mpi/fortran/use-mpi-f08/aint_add_f08.F90 | 18 + .../mpi/fortran/use-mpi-f08/aint_diff_f08.F90 | 18 + .../mpi/fortran/use-mpi-f08/allgather_f08.F90 | 26 + .../fortran/use-mpi-f08/allgatherv_f08.F90 | 28 + .../mpi/fortran/use-mpi-f08/alloc_mem_f08.F90 | 22 + .../mpi/fortran/use-mpi-f08/allreduce_f08.F90 | 26 + ompi/mpi/fortran/use-mpi-f08/alltoall_f08.F90 | 27 + .../mpi/fortran/use-mpi-f08/alltoallv_f08.F90 | 27 + .../mpi/fortran/use-mpi-f08/alltoallw_f08.F90 | 37 + ompi/mpi/fortran/use-mpi-f08/barrier_f08.F90 | 19 + ompi/mpi/fortran/use-mpi-f08/bcast_f08.F90 | 24 + ompi/mpi/fortran/use-mpi-f08/bsend_f08.F90 | 24 + .../fortran/use-mpi-f08/bsend_init_f08.F90 | 26 + .../fortran/use-mpi-f08/buffer_attach_f08.F90 | 21 + ompi/mpi/fortran/use-mpi-f08/buffer_detach.c | 77 + .../fortran/use-mpi-f08/buffer_detach_f08.F90 | 22 + ompi/mpi/fortran/use-mpi-f08/cancel_f08.F90 | 19 + .../fortran/use-mpi-f08/cart_coords_f08.F90 | 21 + .../fortran/use-mpi-f08/cart_create_f08.F90 | 25 + ompi/mpi/fortran/use-mpi-f08/cart_get_f08.F90 | 23 + ompi/mpi/fortran/use-mpi-f08/cart_map_f08.F90 | 23 + .../mpi/fortran/use-mpi-f08/cart_rank_f08.F90 | 21 + .../fortran/use-mpi-f08/cart_shift_f08.F90 | 21 + ompi/mpi/fortran/use-mpi-f08/cart_sub_f08.F90 | 22 + .../fortran/use-mpi-f08/cartdim_get_f08.F90 | 20 + .../fortran/use-mpi-f08/close_port_f08.F90 | 18 + .../fortran/use-mpi-f08/comm_accept_f08.F90 | 24 + .../use-mpi-f08/comm_call_errhandler_f08.F90 | 20 + .../fortran/use-mpi-f08/comm_compare_f08.F90 | 21 + .../fortran/use-mpi-f08/comm_connect_f08.F90 | 24 + .../comm_create_errhandler_f08.F90 | 26 + .../fortran/use-mpi-f08/comm_create_f08.F90 | 21 + .../use-mpi-f08/comm_create_group_f08.F90 | 22 + .../use-mpi-f08/comm_create_keyval_f08.F90 | 32 + .../use-mpi-f08/comm_delete_attr_f08.F90 | 20 + .../use-mpi-f08/comm_disconnect_f08.F90 | 19 + ompi/mpi/fortran/use-mpi-f08/comm_dup_f08.F90 | 20 + .../use-mpi-f08/comm_dup_with_info_f08.F90 | 21 + .../mpi/fortran/use-mpi-f08/comm_free_f08.F90 | 19 + .../use-mpi-f08/comm_free_keyval_f08.F90 | 18 + .../fortran/use-mpi-f08/comm_get_attr_f08.F90 | 23 + .../use-mpi-f08/comm_get_errhandler_f08.F90 | 20 + .../fortran/use-mpi-f08/comm_get_info_f08.F90 | 20 + .../fortran/use-mpi-f08/comm_get_name_f08.F90 | 21 + .../use-mpi-f08/comm_get_parent_f08.F90 | 19 + .../fortran/use-mpi-f08/comm_group_f08.F90 | 20 + .../mpi/fortran/use-mpi-f08/comm_idup_f08.F90 | 21 + .../mpi/fortran/use-mpi-f08/comm_join_f08.F90 | 20 + .../mpi/fortran/use-mpi-f08/comm_rank_f08.F90 | 20 + .../use-mpi-f08/comm_remote_group_f08.F90 | 20 + .../use-mpi-f08/comm_remote_size_f08.F90 | 20 + .../fortran/use-mpi-f08/comm_set_attr_f08.F90 | 21 + .../use-mpi-f08/comm_set_errhandler_f08.F90 | 20 + .../fortran/use-mpi-f08/comm_set_info_f08.F90 | 20 + .../fortran/use-mpi-f08/comm_set_name_f08.F90 | 20 + .../mpi/fortran/use-mpi-f08/comm_size_f08.F90 | 20 + .../fortran/use-mpi-f08/comm_spawn_f08.F90 | 28 + .../use-mpi-f08/comm_spawn_multiple_f08.F90 | 36 + .../fortran/use-mpi-f08/comm_split_f08.F90 | 21 + .../use-mpi-f08/comm_split_type_f08.F90 | 23 + .../use-mpi-f08/comm_test_inter_f08.F90 | 21 + .../use-mpi-f08/compare_and_swap_f08.F90 | 29 + ompi/mpi/fortran/use-mpi-f08/constants.c | 104 + .../fortran/use-mpi-f08/dims_create_f08.F90 | 19 + .../dist_graph_create_adjacent_f08.F90 | 30 + .../use-mpi-f08/dist_graph_create_f08.F90 | 31 + .../dist_graph_neighbors_count_f08.F90 | 22 + .../use-mpi-f08/dist_graph_neighbors_f08.F90 | 24 + .../use-mpi-f08/errhandler_free_f08.F90 | 19 + .../fortran/use-mpi-f08/error_class_f08.F90 | 19 + .../fortran/use-mpi-f08/error_string_f08.F90 | 20 + ompi/mpi/fortran/use-mpi-f08/exscan_f08.F90 | 26 + .../fortran/use-mpi-f08/f_sync_reg_f08.F90 | 18 + .../fortran/use-mpi-f08/fetch_and_op_f08.F90 | 29 + .../use-mpi-f08/file_call_errhandler_f08.F90 | 20 + .../fortran/use-mpi-f08/file_close_f08.F90 | 19 + .../file_create_errhandler_f08.F90 | 26 + .../fortran/use-mpi-f08/file_delete_f08.F90 | 20 + .../use-mpi-f08/file_get_amode_f08.F90 | 20 + .../use-mpi-f08/file_get_atomicity_f08.F90 | 21 + .../use-mpi-f08/file_get_byte_offset_f08.F90 | 21 + .../use-mpi-f08/file_get_errhandler_f08.F90 | 20 + .../use-mpi-f08/file_get_group_f08.F90 | 20 + .../fortran/use-mpi-f08/file_get_info_f08.F90 | 20 + .../use-mpi-f08/file_get_position_f08.F90 | 20 + .../file_get_position_shared_f08.F90 | 20 + .../fortran/use-mpi-f08/file_get_size_f08.F90 | 20 + .../use-mpi-f08/file_get_type_extent_f08.F90 | 21 + .../fortran/use-mpi-f08/file_get_view_f08.F90 | 24 + .../use-mpi-f08/file_iread_all_f08.F90 | 25 + .../use-mpi-f08/file_iread_at_all_f08.F90 | 27 + .../fortran/use-mpi-f08/file_iread_at_f08.F90 | 27 + .../fortran/use-mpi-f08/file_iread_f08.F90 | 25 + .../use-mpi-f08/file_iread_shared_f08.F90 | 26 + .../use-mpi-f08/file_iwrite_all_f08.F90 | 26 + .../use-mpi-f08/file_iwrite_at_all_f08.F90 | 27 + .../use-mpi-f08/file_iwrite_at_f08.F90 | 27 + .../fortran/use-mpi-f08/file_iwrite_f08.F90 | 26 + .../use-mpi-f08/file_iwrite_shared_f08.F90 | 26 + .../mpi/fortran/use-mpi-f08/file_open_f08.F90 | 24 + .../use-mpi-f08/file_preallocate_f08.F90 | 20 + .../use-mpi-f08/file_read_all_begin_f08.F90 | 24 + .../use-mpi-f08/file_read_all_end_f08.F90 | 23 + .../fortran/use-mpi-f08/file_read_all_f08.F90 | 25 + .../file_read_at_all_begin_f08.F90 | 26 + .../use-mpi-f08/file_read_at_all_end_f08.F90 | 23 + .../use-mpi-f08/file_read_at_all_f08.F90 | 27 + .../fortran/use-mpi-f08/file_read_at_f08.F90 | 26 + .../mpi/fortran/use-mpi-f08/file_read_f08.F90 | 25 + .../file_read_ordered_begin_f08.F90 | 24 + .../use-mpi-f08/file_read_ordered_end_f08.F90 | 23 + .../use-mpi-f08/file_read_ordered_f08.F90 | 26 + .../use-mpi-f08/file_read_shared_f08.F90 | 25 + .../mpi/fortran/use-mpi-f08/file_seek_f08.F90 | 21 + .../use-mpi-f08/file_seek_shared_f08.F90 | 21 + .../use-mpi-f08/file_set_atomicity_f08.F90 | 21 + .../use-mpi-f08/file_set_errhandler_f08.F90 | 20 + .../fortran/use-mpi-f08/file_set_info_f08.F90 | 20 + .../fortran/use-mpi-f08/file_set_size_f08.F90 | 20 + .../fortran/use-mpi-f08/file_set_view_f08.F90 | 25 + .../mpi/fortran/use-mpi-f08/file_sync_f08.F90 | 19 + .../use-mpi-f08/file_write_all_begin_f08.F90 | 24 + .../use-mpi-f08/file_write_all_end_f08.F90 | 23 + .../use-mpi-f08/file_write_all_f08.F90 | 26 + .../file_write_at_all_begin_f08.F90 | 26 + .../use-mpi-f08/file_write_at_all_end_f08.F90 | 23 + .../use-mpi-f08/file_write_at_all_f08.F90 | 27 + .../fortran/use-mpi-f08/file_write_at_f08.F90 | 27 + .../fortran/use-mpi-f08/file_write_f08.F90 | 26 + .../file_write_ordered_begin_f08.F90 | 24 + .../file_write_ordered_end_f08.F90 | 23 + .../use-mpi-f08/file_write_ordered_f08.F90 | 26 + .../use-mpi-f08/file_write_shared_f08.F90 | 26 + ompi/mpi/fortran/use-mpi-f08/finalize_f08.F90 | 17 + .../mpi/fortran/use-mpi-f08/finalized_f08.F90 | 19 + ompi/mpi/fortran/use-mpi-f08/free_mem_f08.F90 | 20 + ompi/mpi/fortran/use-mpi-f08/gather_f08.F90 | 27 + ompi/mpi/fortran/use-mpi-f08/gatherv_f08.F90 | 28 + .../use-mpi-f08/get_accumulate_f08.F90 | 35 + .../fortran/use-mpi-f08/get_address_f08.F90 | 22 + .../mpi/fortran/use-mpi-f08/get_count_f08.F90 | 21 + .../fortran/use-mpi-f08/get_elements_f08.F90 | 21 + .../use-mpi-f08/get_elements_x_f08.F90 | 21 + ompi/mpi/fortran/use-mpi-f08/get_f08.F90 | 28 + .../use-mpi-f08/get_library_version_f08.F90 | 20 + .../use-mpi-f08/get_processor_name_f08.F90 | 19 + .../fortran/use-mpi-f08/get_version_f08.F90 | 18 + .../fortran/use-mpi-f08/graph_create_f08.F90 | 25 + .../mpi/fortran/use-mpi-f08/graph_get_f08.F90 | 21 + .../mpi/fortran/use-mpi-f08/graph_map_f08.F90 | 22 + .../use-mpi-f08/graph_neighbors_count_f08.F90 | 21 + .../use-mpi-f08/graph_neighbors_f08.F90 | 21 + .../fortran/use-mpi-f08/graphdims_get_f08.F90 | 20 + .../use-mpi-f08/grequest_complete_f08.F90 | 19 + .../use-mpi-f08/grequest_start_f08.F90 | 35 + .../fortran/use-mpi-f08/group_compare_f08.F90 | 21 + .../use-mpi-f08/group_difference_f08.F90 | 21 + .../fortran/use-mpi-f08/group_excl_f08.F90 | 22 + .../fortran/use-mpi-f08/group_free_f08.F90 | 19 + .../fortran/use-mpi-f08/group_incl_f08.F90 | 22 + .../use-mpi-f08/group_intersection_f08.F90 | 21 + .../use-mpi-f08/group_range_excl_f08.F90 | 22 + .../use-mpi-f08/group_range_incl_f08.F90 | 22 + .../fortran/use-mpi-f08/group_rank_f08.F90 | 20 + .../fortran/use-mpi-f08/group_size_f08.F90 | 20 + .../use-mpi-f08/group_translate_ranks_f08.F90 | 22 + .../fortran/use-mpi-f08/group_union_f08.F90 | 20 + .../fortran/use-mpi-f08/iallgather_f08.F90 | 27 + .../fortran/use-mpi-f08/iallgatherv_f08.F90 | 29 + .../fortran/use-mpi-f08/iallreduce_f08.F90 | 27 + .../mpi/fortran/use-mpi-f08/ialltoall_f08.F90 | 28 + .../fortran/use-mpi-f08/ialltoallv_f08.F90 | 28 + .../fortran/use-mpi-f08/ialltoallw_f08.F90 | 38 + ompi/mpi/fortran/use-mpi-f08/ibarrier_f08.F90 | 20 + ompi/mpi/fortran/use-mpi-f08/ibcast_f08.F90 | 25 + ompi/mpi/fortran/use-mpi-f08/ibsend_f08.F90 | 25 + ompi/mpi/fortran/use-mpi-f08/iexscan_f08.F90 | 27 + ompi/mpi/fortran/use-mpi-f08/igather_f08.F90 | 28 + ompi/mpi/fortran/use-mpi-f08/igatherv_f08.F90 | 29 + ompi/mpi/fortran/use-mpi-f08/improbe_f08.F90 | 36 + ompi/mpi/fortran/use-mpi-f08/imrecv_f08.F90 | 25 + .../use-mpi-f08/ineighbor_allgather_f08.F90 | 27 + .../use-mpi-f08/ineighbor_allgatherv_f08.F90 | 29 + .../use-mpi-f08/ineighbor_alltoall_f08.F90 | 28 + .../use-mpi-f08/ineighbor_alltoallv_f08.F90 | 29 + .../use-mpi-f08/ineighbor_alltoallw_f08.F90 | 31 + .../fortran/use-mpi-f08/info_create_f08.F90 | 19 + .../fortran/use-mpi-f08/info_delete_f08.F90 | 20 + ompi/mpi/fortran/use-mpi-f08/info_dup_f08.F90 | 20 + .../mpi/fortran/use-mpi-f08/info_free_f08.F90 | 19 + ompi/mpi/fortran/use-mpi-f08/info_get_f08.F90 | 24 + .../use-mpi-f08/info_get_nkeys_f08.F90 | 20 + .../use-mpi-f08/info_get_nthkey_f08.F90 | 21 + .../use-mpi-f08/info_get_valuelen_f08.F90 | 23 + ompi/mpi/fortran/use-mpi-f08/info_set_f08.F90 | 20 + ompi/mpi/fortran/use-mpi-f08/init_f08.F90 | 17 + .../fortran/use-mpi-f08/init_thread_f08.F90 | 19 + .../fortran/use-mpi-f08/initialized_f08.F90 | 19 + .../use-mpi-f08/intercomm_create_f08.F90 | 23 + .../use-mpi-f08/intercomm_merge_f08.F90 | 22 + ompi/mpi/fortran/use-mpi-f08/iprobe_f08.F90 | 36 + ompi/mpi/fortran/use-mpi-f08/irecv_f08.F90 | 25 + ompi/mpi/fortran/use-mpi-f08/ireduce_f08.F90 | 27 + .../use-mpi-f08/ireduce_scatter_block_f08.F90 | 27 + .../use-mpi-f08/ireduce_scatter_f08.F90 | 27 + ompi/mpi/fortran/use-mpi-f08/irsend_f08.F90 | 25 + .../use-mpi-f08/is_thread_main_f08.F90 | 19 + ompi/mpi/fortran/use-mpi-f08/iscan_f08.F90 | 27 + ompi/mpi/fortran/use-mpi-f08/iscatter_f08.F90 | 28 + .../mpi/fortran/use-mpi-f08/iscatterv_f08.F90 | 29 + ompi/mpi/fortran/use-mpi-f08/isend_f08.F90 | 25 + ompi/mpi/fortran/use-mpi-f08/issend_f08.F90 | 25 + .../fortran/use-mpi-f08/lookup_name_f08.F90 | 22 + ompi/mpi/fortran/use-mpi-f08/mod/Makefile.am | 102 + .../use-mpi-f08/mod/mpi-f08-callbacks.F90 | 142 + .../mod/mpi-f08-interfaces-callbacks.F90 | 220 + .../use-mpi-f08/mod/mpi-f08-interfaces.F90 | 4749 +++++++++ .../fortran/use-mpi-f08/mod/mpi-f08-types.F90 | 314 + .../use-mpi-f08/mod/pmpi-f08-interfaces.F90 | 4749 +++++++++ .../use-mpi-f08/mpi-f-interfaces-bind.h | 3478 +++++++ ompi/mpi/fortran/use-mpi-f08/mpi-f08.F90 | 46 + ompi/mpi/fortran/use-mpi-f08/mprobe_f08.F90 | 22 + ompi/mpi/fortran/use-mpi-f08/mrecv_f08.F90 | 25 + .../use-mpi-f08/neighbor_allgather_f08.F90 | 26 + .../use-mpi-f08/neighbor_allgatherv_f08.F90 | 28 + .../use-mpi-f08/neighbor_alltoall_f08.F90 | 27 + .../use-mpi-f08/neighbor_alltoallv_f08.F90 | 28 + .../use-mpi-f08/neighbor_alltoallw_f08.F90 | 30 + .../use-mpi-f08/op_commutative_f08.F90 | 21 + .../mpi/fortran/use-mpi-f08/op_create_f08.F90 | 25 + ompi/mpi/fortran/use-mpi-f08/op_free_f08.F90 | 19 + .../mpi/fortran/use-mpi-f08/open_port_f08.F90 | 20 + .../fortran/use-mpi-f08/pack_external_f08.F90 | 28 + .../use-mpi-f08/pack_external_size_f08.F90 | 22 + ompi/mpi/fortran/use-mpi-f08/pack_f08.F90 | 26 + .../mpi/fortran/use-mpi-f08/pack_size_f08.F90 | 22 + ompi/mpi/fortran/use-mpi-f08/pcontrol_f08.F90 | 15 + .../use-mpi-f08/pmpi-f-interfaces-bind.h | 3261 +++++++ ompi/mpi/fortran/use-mpi-f08/probe_f08.F90 | 21 + .../use-mpi-f08/profile/pabort_f08.F90 | 20 + .../use-mpi-f08/profile/paccumulate_f08.F90 | 31 + .../profile/padd_error_class_f08.F90 | 18 + .../profile/padd_error_code_f08.F90 | 19 + .../profile/padd_error_string_f08.F90 | 19 + .../use-mpi-f08/profile/paint_add_f08.F90 | 18 + .../use-mpi-f08/profile/paint_diff_f08.F90 | 18 + .../use-mpi-f08/profile/pallgather_f08.F90 | 26 + .../use-mpi-f08/profile/pallgatherv_f08.F90 | 28 + .../use-mpi-f08/profile/palloc_mem_f08.F90 | 22 + .../use-mpi-f08/profile/pallreduce_f08.F90 | 26 + .../use-mpi-f08/profile/palltoall_f08.F90 | 27 + .../use-mpi-f08/profile/palltoallv_f08.F90 | 27 + .../use-mpi-f08/profile/palltoallw_f08.F90 | 27 + .../use-mpi-f08/profile/pbarrier_f08.F90 | 19 + .../use-mpi-f08/profile/pbcast_f08.F90 | 24 + .../use-mpi-f08/profile/pbsend_f08.F90 | 24 + .../use-mpi-f08/profile/pbsend_init_f08.F90 | 26 + .../profile/pbuffer_attach_f08.F90 | 21 + .../profile/pbuffer_detach_f08.F90 | 22 + .../use-mpi-f08/profile/pcancel_f08.F90 | 19 + .../use-mpi-f08/profile/pcart_coords_f08.F90 | 21 + .../use-mpi-f08/profile/pcart_create_f08.F90 | 25 + .../use-mpi-f08/profile/pcart_get_f08.F90 | 23 + .../use-mpi-f08/profile/pcart_map_f08.F90 | 23 + .../use-mpi-f08/profile/pcart_rank_f08.F90 | 21 + .../use-mpi-f08/profile/pcart_shift_f08.F90 | 21 + .../use-mpi-f08/profile/pcart_sub_f08.F90 | 22 + .../use-mpi-f08/profile/pcartdim_get_f08.F90 | 20 + .../use-mpi-f08/profile/pclose_port_f08.F90 | 18 + .../use-mpi-f08/profile/pcomm_accept_f08.F90 | 24 + .../profile/pcomm_call_errhandler_f08.F90 | 20 + .../use-mpi-f08/profile/pcomm_compare_f08.F90 | 21 + .../use-mpi-f08/profile/pcomm_connect_f08.F90 | 24 + .../profile/pcomm_create_errhandler_f08.F90 | 26 + .../use-mpi-f08/profile/pcomm_create_f08.F90 | 21 + .../profile/pcomm_create_group_f08.F90 | 22 + .../profile/pcomm_create_keyval_f08.F90 | 32 + .../profile/pcomm_delete_attr_f08.F90 | 20 + .../profile/pcomm_disconnect_f08.F90 | 19 + .../use-mpi-f08/profile/pcomm_dup_f08.F90 | 20 + .../profile/pcomm_dup_with_info_f08.F90 | 21 + .../use-mpi-f08/profile/pcomm_free_f08.F90 | 19 + .../profile/pcomm_free_keyval_f08.F90 | 18 + .../profile/pcomm_get_attr_f08.F90 | 23 + .../profile/pcomm_get_errhandler_f08.F90 | 20 + .../profile/pcomm_get_info_f08.F90 | 20 + .../profile/pcomm_get_name_f08.F90 | 21 + .../profile/pcomm_get_parent_f08.F90 | 19 + .../use-mpi-f08/profile/pcomm_group_f08.F90 | 20 + .../use-mpi-f08/profile/pcomm_idup_f08.F90 | 21 + .../use-mpi-f08/profile/pcomm_join_f08.F90 | 20 + .../use-mpi-f08/profile/pcomm_rank_f08.F90 | 20 + .../profile/pcomm_remote_group_f08.F90 | 20 + .../profile/pcomm_remote_size_f08.F90 | 20 + .../profile/pcomm_set_attr_f08.F90 | 21 + .../profile/pcomm_set_errhandler_f08.F90 | 20 + .../profile/pcomm_set_info_f08.F90 | 20 + .../profile/pcomm_set_name_f08.F90 | 20 + .../use-mpi-f08/profile/pcomm_size_f08.F90 | 20 + .../use-mpi-f08/profile/pcomm_spawn_f08.F90 | 28 + .../profile/pcomm_spawn_multiple_f08.F90 | 37 + .../use-mpi-f08/profile/pcomm_split_f08.F90 | 21 + .../profile/pcomm_split_type_f08.F90 | 23 + .../profile/pcomm_test_inter_f08.F90 | 21 + .../profile/pcompare_and_swap_f08.F90 | 29 + .../use-mpi-f08/profile/pdims_create_f08.F90 | 19 + .../pdist_graph_create_adjacent_f08.F90 | 30 + .../profile/pdist_graph_create_f08.F90 | 31 + .../pdist_graph_neighbors_count_f08.F90 | 22 + .../profile/pdist_graph_neighbors_f08.F90 | 24 + .../profile/perrhandler_free_f08.F90 | 19 + .../use-mpi-f08/profile/perror_class_f08.F90 | 19 + .../use-mpi-f08/profile/perror_string_f08.F90 | 20 + .../use-mpi-f08/profile/pexscan_f08.F90 | 26 + .../use-mpi-f08/profile/pf_sync_reg_f08.F90 | 18 + .../use-mpi-f08/profile/pfetch_and_op_f08.F90 | 29 + .../profile/pfile_call_errhandler_f08.F90 | 20 + .../use-mpi-f08/profile/pfile_close_f08.F90 | 19 + .../profile/pfile_create_errhandler_f08.F90 | 26 + .../use-mpi-f08/profile/pfile_delete_f08.F90 | 20 + .../profile/pfile_get_amode_f08.F90 | 20 + .../profile/pfile_get_atomicity_f08.F90 | 21 + .../profile/pfile_get_byte_offset_f08.F90 | 21 + .../profile/pfile_get_errhandler_f08.F90 | 20 + .../profile/pfile_get_group_f08.F90 | 20 + .../profile/pfile_get_info_f08.F90 | 20 + .../profile/pfile_get_position_f08.F90 | 20 + .../profile/pfile_get_position_shared_f08.F90 | 20 + .../profile/pfile_get_size_f08.F90 | 20 + .../profile/pfile_get_type_extent_f08.F90 | 21 + .../profile/pfile_get_view_f08.F90 | 24 + .../profile/pfile_iread_all_f08.F90 | 26 + .../profile/pfile_iread_at_all_f08.F90 | 28 + .../profile/pfile_iread_at_f08.F90 | 27 + .../use-mpi-f08/profile/pfile_iread_f08.F90 | 25 + .../profile/pfile_iread_shared_f08.F90 | 26 + .../profile/pfile_iwrite_all_f08.F90 | 27 + .../profile/pfile_iwrite_at_all_f08.F90 | 28 + .../profile/pfile_iwrite_at_f08.F90 | 27 + .../use-mpi-f08/profile/pfile_iwrite_f08.F90 | 26 + .../profile/pfile_iwrite_shared_f08.F90 | 26 + .../use-mpi-f08/profile/pfile_open_f08.F90 | 24 + .../profile/pfile_preallocate_f08.F90 | 20 + .../profile/pfile_read_all_begin_f08.F90 | 24 + .../profile/pfile_read_all_end_f08.F90 | 23 + .../profile/pfile_read_all_f08.F90 | 25 + .../profile/pfile_read_at_all_begin_f08.F90 | 26 + .../profile/pfile_read_at_all_end_f08.F90 | 23 + .../profile/pfile_read_at_all_f08.F90 | 27 + .../use-mpi-f08/profile/pfile_read_at_f08.F90 | 26 + .../use-mpi-f08/profile/pfile_read_f08.F90 | 25 + .../profile/pfile_read_ordered_begin_f08.F90 | 24 + .../profile/pfile_read_ordered_end_f08.F90 | 23 + .../profile/pfile_read_ordered_f08.F90 | 26 + .../profile/pfile_read_shared_f08.F90 | 25 + .../use-mpi-f08/profile/pfile_seek_f08.F90 | 21 + .../profile/pfile_seek_shared_f08.F90 | 21 + .../profile/pfile_set_atomicity_f08.F90 | 21 + .../profile/pfile_set_errhandler_f08.F90 | 20 + .../profile/pfile_set_info_f08.F90 | 20 + .../profile/pfile_set_size_f08.F90 | 20 + .../profile/pfile_set_view_f08.F90 | 25 + .../use-mpi-f08/profile/pfile_sync_f08.F90 | 19 + .../profile/pfile_write_all_begin_f08.F90 | 24 + .../profile/pfile_write_all_end_f08.F90 | 23 + .../profile/pfile_write_all_f08.F90 | 26 + .../profile/pfile_write_at_all_begin_f08.F90 | 26 + .../profile/pfile_write_at_all_end_f08.F90 | 23 + .../profile/pfile_write_at_all_f08.F90 | 27 + .../profile/pfile_write_at_f08.F90 | 27 + .../use-mpi-f08/profile/pfile_write_f08.F90 | 26 + .../profile/pfile_write_ordered_begin_f08.F90 | 24 + .../profile/pfile_write_ordered_end_f08.F90 | 23 + .../profile/pfile_write_ordered_f08.F90 | 26 + .../profile/pfile_write_shared_f08.F90 | 26 + .../use-mpi-f08/profile/pfinalize_f08.F90 | 17 + .../use-mpi-f08/profile/pfinalized_f08.F90 | 19 + .../use-mpi-f08/profile/pfree_mem_f08.F90 | 22 + .../use-mpi-f08/profile/pgather_f08.F90 | 27 + .../use-mpi-f08/profile/pgatherv_f08.F90 | 28 + .../profile/pget_accumulate_f08.F90 | 35 + .../use-mpi-f08/profile/pget_address_f08.F90 | 22 + .../use-mpi-f08/profile/pget_count_f08.F90 | 21 + .../use-mpi-f08/profile/pget_elements_f08.F90 | 21 + .../profile/pget_elements_x_f08.F90 | 21 + .../fortran/use-mpi-f08/profile/pget_f08.F90 | 28 + .../profile/pget_library_version_f08.F90 | 20 + .../profile/pget_processor_name_f08.F90 | 20 + .../use-mpi-f08/profile/pget_version_f08.F90 | 18 + .../use-mpi-f08/profile/pgraph_create_f08.F90 | 25 + .../use-mpi-f08/profile/pgraph_get_f08.F90 | 21 + .../use-mpi-f08/profile/pgraph_map_f08.F90 | 22 + .../profile/pgraph_neighbors_count_f08.F90 | 21 + .../profile/pgraph_neighbors_f08.F90 | 21 + .../profile/pgraphdims_get_f08.F90 | 20 + .../profile/pgrequest_complete_f08.F90 | 19 + .../profile/pgrequest_start_f08.F90 | 35 + .../profile/pgroup_compare_f08.F90 | 21 + .../profile/pgroup_difference_f08.F90 | 21 + .../use-mpi-f08/profile/pgroup_excl_f08.F90 | 22 + .../use-mpi-f08/profile/pgroup_free_f08.F90 | 19 + .../use-mpi-f08/profile/pgroup_incl_f08.F90 | 22 + .../profile/pgroup_intersection_f08.F90 | 21 + .../profile/pgroup_range_excl_f08.F90 | 22 + .../profile/pgroup_range_incl_f08.F90 | 22 + .../use-mpi-f08/profile/pgroup_rank_f08.F90 | 20 + .../use-mpi-f08/profile/pgroup_size_f08.F90 | 20 + .../profile/pgroup_translate_ranks_f08.F90 | 22 + .../use-mpi-f08/profile/pgroup_union_f08.F90 | 20 + .../use-mpi-f08/profile/piallgather_f08.F90 | 27 + .../use-mpi-f08/profile/piallgatherv_f08.F90 | 29 + .../use-mpi-f08/profile/piallreduce_f08.F90 | 27 + .../use-mpi-f08/profile/pialltoall_f08.F90 | 28 + .../use-mpi-f08/profile/pialltoallv_f08.F90 | 28 + .../use-mpi-f08/profile/pialltoallw_f08.F90 | 28 + .../use-mpi-f08/profile/pibarrier_f08.F90 | 20 + .../use-mpi-f08/profile/pibcast_f08.F90 | 25 + .../use-mpi-f08/profile/pibsend_f08.F90 | 25 + .../use-mpi-f08/profile/piexscan_f08.F90 | 27 + .../use-mpi-f08/profile/pigather_f08.F90 | 28 + .../use-mpi-f08/profile/pigatherv_f08.F90 | 29 + .../use-mpi-f08/profile/pimprobe_f08.F90 | 37 + .../use-mpi-f08/profile/pimrecv_f08.F90 | 25 + .../profile/pineighbor_allgather_f08.F90 | 27 + .../profile/pineighbor_allgatherv_f08.F90 | 29 + .../profile/pineighbor_alltoall_f08.F90 | 28 + .../profile/pineighbor_alltoallv_f08.F90 | 29 + .../profile/pineighbor_alltoallw_f08.F90 | 30 + .../use-mpi-f08/profile/pinfo_create_f08.F90 | 19 + .../use-mpi-f08/profile/pinfo_delete_f08.F90 | 20 + .../use-mpi-f08/profile/pinfo_dup_f08.F90 | 20 + .../use-mpi-f08/profile/pinfo_free_f08.F90 | 19 + .../use-mpi-f08/profile/pinfo_get_f08.F90 | 24 + .../profile/pinfo_get_nkeys_f08.F90 | 20 + .../profile/pinfo_get_nthkey_f08.F90 | 21 + .../profile/pinfo_get_valuelen_f08.F90 | 23 + .../use-mpi-f08/profile/pinfo_set_f08.F90 | 20 + .../fortran/use-mpi-f08/profile/pinit_f08.F90 | 17 + .../use-mpi-f08/profile/pinit_thread_f08.F90 | 19 + .../use-mpi-f08/profile/pinitialized_f08.F90 | 19 + .../profile/pintercomm_create_f08.F90 | 23 + .../profile/pintercomm_merge_f08.F90 | 22 + .../use-mpi-f08/profile/piprobe_f08.F90 | 34 + .../use-mpi-f08/profile/pirecv_f08.F90 | 25 + .../use-mpi-f08/profile/pireduce_f08.F90 | 27 + .../profile/pireduce_scatter_block_f08.F90 | 27 + .../profile/pireduce_scatter_f08.F90 | 27 + .../use-mpi-f08/profile/pirsend_f08.F90 | 25 + .../profile/pis_thread_main_f08.F90 | 19 + .../use-mpi-f08/profile/piscan_f08.F90 | 27 + .../use-mpi-f08/profile/piscatter_f08.F90 | 28 + .../use-mpi-f08/profile/piscatterv_f08.F90 | 29 + .../use-mpi-f08/profile/pisend_f08.F90 | 25 + .../use-mpi-f08/profile/pissend_f08.F90 | 25 + .../use-mpi-f08/profile/plookup_name_f08.F90 | 22 + .../use-mpi-f08/profile/pmprobe_f08.F90 | 22 + .../use-mpi-f08/profile/pmrecv_f08.F90 | 25 + .../profile/pneighbor_allgather_f08.F90 | 26 + .../profile/pneighbor_allgatherv_f08.F90 | 28 + .../profile/pneighbor_alltoall_f08.F90 | 27 + .../profile/pneighbor_alltoallv_f08.F90 | 28 + .../profile/pneighbor_alltoallw_f08.F90 | 29 + .../profile/pop_commutative_f08.F90 | 21 + .../use-mpi-f08/profile/pop_create_f08.F90 | 25 + .../use-mpi-f08/profile/pop_free_f08.F90 | 19 + .../use-mpi-f08/profile/popen_port_f08.F90 | 20 + .../profile/ppack_external_f08.F90 | 28 + .../profile/ppack_external_size_f08.F90 | 22 + .../fortran/use-mpi-f08/profile/ppack_f08.F90 | 26 + .../use-mpi-f08/profile/ppack_size_f08.F90 | 22 + .../use-mpi-f08/profile/ppcontrol_f08.F90 | 15 + .../use-mpi-f08/profile/pprobe_f08.F90 | 21 + .../use-mpi-f08/profile/ppublish_name_f08.F90 | 21 + .../fortran/use-mpi-f08/profile/pput_f08.F90 | 28 + .../use-mpi-f08/profile/pquery_thread_f08.F90 | 18 + .../use-mpi-f08/profile/praccumulate_f08.F90 | 32 + .../fortran/use-mpi-f08/profile/precv_f08.F90 | 25 + .../use-mpi-f08/profile/precv_init_f08.F90 | 25 + .../use-mpi-f08/profile/preduce_f08.F90 | 26 + .../use-mpi-f08/profile/preduce_local_f08.F90 | 24 + .../profile/preduce_scatter_block_f08.F90 | 26 + .../profile/preduce_scatter_f08.F90 | 26 + .../profile/pregister_datarep_f08.F90 | 34 + .../use-mpi-f08/profile/prequest_free_f08.F90 | 19 + .../profile/prequest_get_status_f08.F90 | 31 + .../profile/prget_accumulate_f08.F90 | 36 + .../fortran/use-mpi-f08/profile/prget_f08.F90 | 30 + .../fortran/use-mpi-f08/profile/prput_f08.F90 | 30 + .../use-mpi-f08/profile/prsend_f08.F90 | 24 + .../use-mpi-f08/profile/prsend_init_f08.F90 | 25 + .../fortran/use-mpi-f08/profile/pscan_f08.F90 | 26 + .../use-mpi-f08/profile/pscatter_f08.F90 | 27 + .../use-mpi-f08/profile/pscatterv_f08.F90 | 28 + .../fortran/use-mpi-f08/profile/psend_f08.F90 | 24 + .../use-mpi-f08/profile/psend_init_f08.F90 | 26 + .../use-mpi-f08/profile/psendrecv_f08.F90 | 28 + .../profile/psendrecv_replace_f08.F90 | 27 + .../use-mpi-f08/profile/pssend_f08.F90 | 24 + .../use-mpi-f08/profile/pssend_init_f08.F90 | 26 + .../use-mpi-f08/profile/pstart_f08.F90 | 19 + .../use-mpi-f08/profile/pstartall_f08.F90 | 20 + .../profile/pstatus_set_cancelled_f08.F90 | 29 + .../profile/pstatus_set_elements_f08.F90 | 21 + .../profile/pstatus_set_elements_x_f08.F90 | 21 + .../profile/ptest_cancelled_f08.F90 | 29 + .../fortran/use-mpi-f08/profile/ptest_f08.F90 | 31 + .../use-mpi-f08/profile/ptestall_f08.F90 | 33 + .../use-mpi-f08/profile/ptestany_f08.F90 | 36 + .../use-mpi-f08/profile/ptestsome_f08.F90 | 38 + .../use-mpi-f08/profile/ptopo_test_f08.F90 | 20 + .../use-mpi-f08/profile/ptype_commit_f08.F90 | 19 + .../profile/ptype_contiguous_f08.F90 | 21 + .../profile/ptype_create_darray_f08.F90 | 26 + .../profile/ptype_create_f90_complex_f08.F90 | 20 + .../profile/ptype_create_f90_integer_f08.F90 | 20 + .../profile/ptype_create_f90_real_f08.F90 | 20 + .../ptype_create_hindexed_block_f08.F90 | 26 + .../profile/ptype_create_hindexed_f08.F90 | 26 + .../profile/ptype_create_hvector_f08.F90 | 23 + .../ptype_create_indexed_block_f08.F90 | 24 + .../profile/ptype_create_keyval_f08.F90 | 32 + .../profile/ptype_create_resized_f08.F90 | 21 + .../profile/ptype_create_struct_f08.F90 | 25 + .../profile/ptype_create_subarray_f08.F90 | 25 + .../profile/ptype_delete_attr_f08.F90 | 20 + .../use-mpi-f08/profile/ptype_dup_f08.F90 | 20 + .../use-mpi-f08/profile/ptype_free_f08.F90 | 19 + .../profile/ptype_free_keyval_f08.F90 | 18 + .../profile/ptype_get_attr_f08.F90 | 23 + .../profile/ptype_get_contents_f08.F90 | 27 + .../profile/ptype_get_envelope_f08.F90 | 22 + .../profile/ptype_get_extent_f08.F90 | 20 + .../profile/ptype_get_extent_x_f08.F90 | 20 + .../profile/ptype_get_name_f08.F90 | 21 + .../profile/ptype_get_true_extent_f08.F90 | 20 + .../profile/ptype_get_true_extent_x_f08.F90 | 20 + .../use-mpi-f08/profile/ptype_indexed_f08.F90 | 24 + .../profile/ptype_match_size_f08.F90 | 20 + .../profile/ptype_set_attr_f08.F90 | 21 + .../profile/ptype_set_name_f08.F90 | 20 + .../use-mpi-f08/profile/ptype_size_f08.F90 | 20 + .../use-mpi-f08/profile/ptype_size_x_f08.F90 | 22 + .../use-mpi-f08/profile/ptype_vector_f08.F90 | 22 + .../profile/punpack_external_f08.F90 | 27 + .../use-mpi-f08/profile/punpack_f08.F90 | 26 + .../profile/punpublish_name_f08.F90 | 21 + .../fortran/use-mpi-f08/profile/pwait_f08.F90 | 20 + .../use-mpi-f08/profile/pwaitall_f08.F90 | 21 + .../use-mpi-f08/profile/pwaitany_f08.F90 | 22 + .../use-mpi-f08/profile/pwaitsome_f08.F90 | 25 + .../use-mpi-f08/profile/pwin_allocate_f08.F90 | 28 + .../profile/pwin_allocate_shared_f08.F90 | 26 + .../use-mpi-f08/profile/pwin_attach_f08.F90 | 22 + .../profile/pwin_call_errhandler_f08.F90 | 20 + .../use-mpi-f08/profile/pwin_complete_f08.F90 | 19 + .../profile/pwin_create_dynamic_f08.F90 | 23 + .../profile/pwin_create_errhandler_f08.F90 | 26 + .../use-mpi-f08/profile/pwin_create_f08.F90 | 27 + .../profile/pwin_create_keyval_f08.F90 | 32 + .../profile/pwin_delete_attr_f08.F90 | 20 + .../use-mpi-f08/profile/pwin_detach_f08.F90 | 21 + .../use-mpi-f08/profile/pwin_fence_f08.F90 | 20 + .../profile/pwin_flush_all_f08.F90 | 19 + .../use-mpi-f08/profile/pwin_flush_f08.F90 | 20 + .../profile/pwin_flush_local_all_f08.F90 | 19 + .../profile/pwin_flush_local_f08.F90 | 20 + .../use-mpi-f08/profile/pwin_free_f08.F90 | 19 + .../profile/pwin_free_keyval_f08.F90 | 18 + .../use-mpi-f08/profile/pwin_get_attr_f08.F90 | 23 + .../profile/pwin_get_errhandler_f08.F90 | 20 + .../profile/pwin_get_group_f08.F90 | 20 + .../use-mpi-f08/profile/pwin_get_info_f08.F90 | 19 + .../use-mpi-f08/profile/pwin_get_name_f08.F90 | 22 + .../use-mpi-f08/profile/pwin_lock_all_f08.F90 | 20 + .../use-mpi-f08/profile/pwin_lock_f08.F90 | 20 + .../use-mpi-f08/profile/pwin_post_f08.F90 | 21 + .../use-mpi-f08/profile/pwin_set_attr_f08.F90 | 21 + .../profile/pwin_set_errhandler_f08.F90 | 20 + .../use-mpi-f08/profile/pwin_set_info_f08.F90 | 19 + .../use-mpi-f08/profile/pwin_set_name_f08.F90 | 20 + .../profile/pwin_shared_query_f08.F90 | 25 + .../use-mpi-f08/profile/pwin_start_f08.F90 | 21 + .../use-mpi-f08/profile/pwin_sync_f08.F90 | 19 + .../use-mpi-f08/profile/pwin_test_f08.F90 | 21 + .../profile/pwin_unlock_all_f08.F90 | 19 + .../use-mpi-f08/profile/pwin_unlock_f08.F90 | 20 + .../use-mpi-f08/profile/pwin_wait_f08.F90 | 19 + .../fortran/use-mpi-f08/publish_name_f08.F90 | 21 + ompi/mpi/fortran/use-mpi-f08/put_f08.F90 | 28 + .../fortran/use-mpi-f08/query_thread_f08.F90 | 18 + .../fortran/use-mpi-f08/raccumulate_f08.F90 | 32 + ompi/mpi/fortran/use-mpi-f08/recv_f08.F90 | 25 + .../mpi/fortran/use-mpi-f08/recv_init_f08.F90 | 25 + ompi/mpi/fortran/use-mpi-f08/reduce_f08.F90 | 26 + .../fortran/use-mpi-f08/reduce_local_f08.F90 | 24 + .../use-mpi-f08/reduce_scatter_block_f08.F90 | 26 + .../use-mpi-f08/reduce_scatter_f08.F90 | 26 + .../use-mpi-f08/register_datarep_f08.F90 | 34 + .../fortran/use-mpi-f08/request_free_f08.F90 | 19 + .../use-mpi-f08/request_get_status_f08.F90 | 31 + .../use-mpi-f08/rget_accumulate_f08.F90 | 36 + ompi/mpi/fortran/use-mpi-f08/rget_f08.F90 | 30 + ompi/mpi/fortran/use-mpi-f08/rput_f08.F90 | 30 + ompi/mpi/fortran/use-mpi-f08/rsend_f08.F90 | 24 + .../fortran/use-mpi-f08/rsend_init_f08.F90 | 25 + ompi/mpi/fortran/use-mpi-f08/scan_f08.F90 | 26 + ompi/mpi/fortran/use-mpi-f08/scatter_f08.F90 | 27 + ompi/mpi/fortran/use-mpi-f08/scatterv_f08.F90 | 28 + ompi/mpi/fortran/use-mpi-f08/send_f08.F90 | 24 + .../mpi/fortran/use-mpi-f08/send_init_f08.F90 | 26 + ompi/mpi/fortran/use-mpi-f08/sendrecv_f08.F90 | 28 + .../use-mpi-f08/sendrecv_replace_f08.F90 | 27 + ompi/mpi/fortran/use-mpi-f08/ssend_f08.F90 | 24 + .../fortran/use-mpi-f08/ssend_init_f08.F90 | 26 + ompi/mpi/fortran/use-mpi-f08/start_f08.F90 | 19 + ompi/mpi/fortran/use-mpi-f08/startall_f08.F90 | 20 + .../use-mpi-f08/status_set_cancelled_f08.F90 | 27 + .../use-mpi-f08/status_set_elements_f08.F90 | 21 + .../use-mpi-f08/status_set_elements_x_f08.F90 | 21 + .../use-mpi-f08/test_cancelled_f08.F90 | 29 + ompi/mpi/fortran/use-mpi-f08/test_f08.F90 | 31 + ompi/mpi/fortran/use-mpi-f08/testall_f08.F90 | 33 + ompi/mpi/fortran/use-mpi-f08/testany_f08.F90 | 36 + ompi/mpi/fortran/use-mpi-f08/tests/contig.f90 | 22 + .../fortran/use-mpi-f08/tests/print_array.c | 10 + ompi/mpi/fortran/use-mpi-f08/testsome_f08.F90 | 38 + .../mpi/fortran/use-mpi-f08/topo_test_f08.F90 | 20 + .../fortran/use-mpi-f08/type_commit_f08.F90 | 19 + .../use-mpi-f08/type_contiguous_f08.F90 | 21 + .../use-mpi-f08/type_create_darray_f08.F90 | 26 + .../type_create_f90_complex_f08.F90 | 20 + .../type_create_f90_integer_f08.F90 | 20 + .../use-mpi-f08/type_create_f90_real_f08.F90 | 20 + .../type_create_hindexed_block_f08.F90 | 26 + .../use-mpi-f08/type_create_hindexed_f08.F90 | 26 + .../use-mpi-f08/type_create_hvector_f08.F90 | 23 + .../type_create_indexed_block_f08.F90 | 24 + .../use-mpi-f08/type_create_keyval_f08.F90 | 32 + .../use-mpi-f08/type_create_resized_f08.F90 | 21 + .../use-mpi-f08/type_create_struct_f08.F90 | 25 + .../use-mpi-f08/type_create_subarray_f08.F90 | 25 + .../use-mpi-f08/type_delete_attr_f08.F90 | 20 + ompi/mpi/fortran/use-mpi-f08/type_dup_f08.F90 | 20 + .../mpi/fortran/use-mpi-f08/type_free_f08.F90 | 19 + .../use-mpi-f08/type_free_keyval_f08.F90 | 18 + .../fortran/use-mpi-f08/type_get_attr_f08.F90 | 23 + .../use-mpi-f08/type_get_contents_f08.F90 | 27 + .../use-mpi-f08/type_get_envelope_f08.F90 | 22 + .../use-mpi-f08/type_get_extent_f08.F90 | 20 + .../use-mpi-f08/type_get_extent_x_f08.F90 | 20 + .../fortran/use-mpi-f08/type_get_name_f08.F90 | 21 + .../use-mpi-f08/type_get_true_extent_f08.F90 | 20 + .../type_get_true_extent_x_f08.F90 | 20 + .../fortran/use-mpi-f08/type_indexed_f08.F90 | 24 + .../use-mpi-f08/type_match_size_f08.F90 | 20 + .../fortran/use-mpi-f08/type_set_attr_f08.F90 | 21 + .../fortran/use-mpi-f08/type_set_name_f08.F90 | 20 + .../mpi/fortran/use-mpi-f08/type_size_f08.F90 | 20 + .../fortran/use-mpi-f08/type_size_x_f08.F90 | 22 + .../fortran/use-mpi-f08/type_vector_f08.F90 | 22 + .../use-mpi-f08/unpack_external_f08.F90 | 27 + ompi/mpi/fortran/use-mpi-f08/unpack_f08.F90 | 26 + .../use-mpi-f08/unpublish_name_f08.F90 | 21 + ompi/mpi/fortran/use-mpi-f08/wait_f08.F90 | 20 + ompi/mpi/fortran/use-mpi-f08/waitall_f08.F90 | 21 + ompi/mpi/fortran/use-mpi-f08/waitany_f08.F90 | 22 + ompi/mpi/fortran/use-mpi-f08/waitsome_f08.F90 | 25 + .../fortran/use-mpi-f08/win_allocate_f08.F90 | 28 + .../use-mpi-f08/win_allocate_shared_f08.F90 | 26 + .../fortran/use-mpi-f08/win_attach_f08.F90 | 22 + .../use-mpi-f08/win_call_errhandler_f08.F90 | 20 + .../fortran/use-mpi-f08/win_complete_f08.F90 | 19 + .../use-mpi-f08/win_create_dynamic_f08.F90 | 23 + .../use-mpi-f08/win_create_errhandler_f08.F90 | 26 + .../fortran/use-mpi-f08/win_create_f08.F90 | 27 + .../use-mpi-f08/win_create_keyval_f08.F90 | 32 + .../use-mpi-f08/win_delete_attr_f08.F90 | 20 + .../fortran/use-mpi-f08/win_detach_f08.F90 | 21 + .../mpi/fortran/use-mpi-f08/win_fence_f08.F90 | 20 + .../fortran/use-mpi-f08/win_flush_all_f08.F90 | 19 + .../mpi/fortran/use-mpi-f08/win_flush_f08.F90 | 20 + .../use-mpi-f08/win_flush_local_all_f08.F90 | 19 + .../use-mpi-f08/win_flush_local_f08.F90 | 20 + ompi/mpi/fortran/use-mpi-f08/win_free_f08.F90 | 19 + .../use-mpi-f08/win_free_keyval_f08.F90 | 18 + .../fortran/use-mpi-f08/win_get_attr_f08.F90 | 23 + .../use-mpi-f08/win_get_errhandler_f08.F90 | 20 + .../fortran/use-mpi-f08/win_get_group_f08.F90 | 20 + .../fortran/use-mpi-f08/win_get_info_f08.F90 | 19 + .../fortran/use-mpi-f08/win_get_name_f08.F90 | 22 + .../fortran/use-mpi-f08/win_lock_all_f08.F90 | 20 + ompi/mpi/fortran/use-mpi-f08/win_lock_f08.F90 | 20 + ompi/mpi/fortran/use-mpi-f08/win_post_f08.F90 | 21 + .../fortran/use-mpi-f08/win_set_attr_f08.F90 | 21 + .../use-mpi-f08/win_set_errhandler_f08.F90 | 20 + .../fortran/use-mpi-f08/win_set_info_f08.F90 | 19 + .../fortran/use-mpi-f08/win_set_name_f08.F90 | 20 + .../use-mpi-f08/win_shared_query_f08.F90 | 25 + .../mpi/fortran/use-mpi-f08/win_start_f08.F90 | 21 + ompi/mpi/fortran/use-mpi-f08/win_sync_f08.F90 | 19 + ompi/mpi/fortran/use-mpi-f08/win_test_f08.F90 | 21 + .../use-mpi-f08/win_unlock_all_f08.F90 | 19 + .../fortran/use-mpi-f08/win_unlock_f08.F90 | 20 + ompi/mpi/fortran/use-mpi-f08/win_wait_f08.F90 | 19 + .../fortran/use-mpi-ignore-tkr/Makefile.am | 120 + .../mpi-ignore-tkr-file-interfaces.h.in | 1645 ++++ .../mpi-ignore-tkr-interfaces.h.in | 8490 +++++++++++++++++ .../use-mpi-ignore-tkr/mpi-ignore-tkr.F90 | 51 + ompi/mpi/fortran/use-mpi-tkr/Makefile.am | 174 + .../fortran/use-mpi-tkr/fortran_kinds.sh.in | 84 + .../fortran/use-mpi-tkr/fortran_sizes.h.in | 56 + .../use-mpi-tkr/mpi-f90-cptr-interfaces.h | 106 + .../use-mpi-tkr/mpi-f90-file-interfaces.h | 321 + .../fortran/use-mpi-tkr/mpi-f90-interfaces.h | 2618 +++++ ompi/mpi/fortran/use-mpi-tkr/mpi.F90 | 65 + .../fortran/use-mpi-tkr/mpi_aint_add_f90.f90 | 31 + .../fortran/use-mpi-tkr/mpi_aint_diff_f90.f90 | 31 + .../mpi_comm_spawn_multiple_f90.f90 | 60 + .../fortran/use-mpi-tkr/mpi_testall_f90.f90 | 43 + .../fortran/use-mpi-tkr/mpi_testsome_f90.f90 | 47 + .../fortran/use-mpi-tkr/mpi_waitall_f90.f90 | 39 + .../fortran/use-mpi-tkr/mpi_waitsome_f90.f90 | 47 + .../mpi/fortran/use-mpi-tkr/mpi_wtick_f90.f90 | 27 + .../mpi/fortran/use-mpi-tkr/mpi_wtime_f90.f90 | 27 + .../use-mpi-tkr/pmpi-f90-cptr-interfaces.h | 108 + .../use-mpi-tkr/pmpi-f90-file-interfaces.h | 321 + .../fortran/use-mpi-tkr/pmpi-f90-interfaces.h | 2618 +++++ ompi/mpi/fortran/use-mpi-tkr/test/align_c.c | 73 + .../fortran/use-mpi-tkr/test/print_align.f90 | 108 + .../fortran/use-mpi-tkr/test/print_ikinds.f90 | 37 + .../use-mpi-tkr/test/print_prec_range.f90 | 48 + .../fortran/use-mpi-tkr/test/print_rkinds.f90 | 41 + ompi/mpi/fortran/use-mpi-tkr/test/send_t.c | 71 + .../fortran/use-mpi-tkr/test/test_send.f90 | 54 + ompi/mpi/help-mpi-api.txt | 27 + ompi/mpi/java/Makefile.am | 12 + ompi/mpi/java/README | 53 + ompi/mpi/java/c/Makefile.am | 53 + ompi/mpi/java/c/mpiJava.h | 177 + ompi/mpi/java/c/mpi_CartComm.c | 194 + ompi/mpi/java/c/mpi_Comm.c | 2258 +++++ ompi/mpi/java/c/mpi_Constant.c | 179 + ompi/mpi/java/c/mpi_Count.c | 52 + ompi/mpi/java/c/mpi_Datatype.c | 365 + ompi/mpi/java/c/mpi_Errhandler.c | 65 + ompi/mpi/java/c/mpi_File.c | 654 ++ ompi/mpi/java/c/mpi_GraphComm.c | 169 + ompi/mpi/java/c/mpi_Group.c | 239 + ompi/mpi/java/c/mpi_Info.c | 141 + ompi/mpi/java/c/mpi_Intercomm.c | 124 + ompi/mpi/java/c/mpi_Intracomm.c | 584 ++ ompi/mpi/java/c/mpi_MPI.c | 1170 +++ ompi/mpi/java/c/mpi_Message.c | 103 + ompi/mpi/java/c/mpi_Op.c | 171 + ompi/mpi/java/c/mpi_Prequest.c | 49 + ompi/mpi/java/c/mpi_Request.c | 425 + ompi/mpi/java/c/mpi_Status.c | 206 + ompi/mpi/java/c/mpi_Win.c | 498 + ompi/mpi/java/java/CartComm.java | 245 + ompi/mpi/java/java/CartParms.java | 116 + ompi/mpi/java/java/Comm.java | 3409 +++++++ ompi/mpi/java/java/Constant.java | 121 + ompi/mpi/java/java/Count.java | 96 + ompi/mpi/java/java/Datatype.java | 579 ++ ompi/mpi/java/java/DistGraphNeighbors.java | 109 + ompi/mpi/java/java/DoubleComplex.java | 150 + ompi/mpi/java/java/DoubleInt.java | 115 + ompi/mpi/java/java/Errhandler.java | 65 + ompi/mpi/java/java/File.java | 1249 +++ ompi/mpi/java/java/FileView.java | 83 + ompi/mpi/java/java/FloatComplex.java | 150 + ompi/mpi/java/java/FloatInt.java | 115 + ompi/mpi/java/java/Freeable.java | 59 + ompi/mpi/java/java/GraphComm.java | 196 + ompi/mpi/java/java/GraphParms.java | 117 + ompi/mpi/java/java/Group.java | 274 + ompi/mpi/java/java/Info.java | 179 + ompi/mpi/java/java/Int2.java | 127 + ompi/mpi/java/java/Intercomm.java | 181 + ompi/mpi/java/java/Intracomm.java | 885 ++ ompi/mpi/java/java/LongInt.java | 134 + ompi/mpi/java/java/MPI.java | 1001 ++ ompi/mpi/java/java/MPIException.java | 103 + ompi/mpi/java/java/Makefile.am | 209 + ompi/mpi/java/java/Message.java | 163 + ompi/mpi/java/java/Op.java | 133 + ompi/mpi/java/java/Prequest.java | 96 + ompi/mpi/java/java/Request.java | 520 + ompi/mpi/java/java/ShiftParms.java | 82 + ompi/mpi/java/java/ShortInt.java | 137 + ompi/mpi/java/java/Status.java | 277 + ompi/mpi/java/java/Struct.java | 802 ++ ompi/mpi/java/java/UserFunction.java | 211 + ompi/mpi/java/java/Version.java | 68 + ompi/mpi/java/java/Win.java | 907 ++ ompi/mpi/man/make_manpage.pl | 82 + ompi/mpi/man/man3/MPI.3in | 194 + ompi/mpi/man/man3/MPI_Abort.3in | 75 + ompi/mpi/man/man3/MPI_Accumulate.3in | 173 + ompi/mpi/man/man3/MPI_Add_error_class.3in | 99 + ompi/mpi/man/man3/MPI_Add_error_code.3in | 92 + ompi/mpi/man/man3/MPI_Add_error_string.3in | 96 + ompi/mpi/man/man3/MPI_Address.3in | 93 + ompi/mpi/man/man3/MPI_Aint_add.3in | 94 + ompi/mpi/man/man3/MPI_Aint_diff.3in | 1 + ompi/mpi/man/man3/MPI_Allgather.3in | 177 + ompi/mpi/man/man3/MPI_Allgatherv.3in | 163 + ompi/mpi/man/man3/MPI_Alloc_mem.3in | 113 + ompi/mpi/man/man3/MPI_Allreduce.3in | 183 + ompi/mpi/man/man3/MPI_Alltoall.3in | 179 + ompi/mpi/man/man3/MPI_Alltoallv.3in | 212 + ompi/mpi/man/man3/MPI_Alltoallw.3in | 216 + ompi/mpi/man/man3/MPI_Attr_delete.3in | 69 + ompi/mpi/man/man3/MPI_Attr_get.3in | 70 + ompi/mpi/man/man3/MPI_Attr_put.3in | 72 + ompi/mpi/man/man3/MPI_Barrier.3in | 82 + ompi/mpi/man/man3/MPI_Bcast.3in | 120 + ompi/mpi/man/man3/MPI_Bsend.3in | 123 + ompi/mpi/man/man3/MPI_Bsend_init.3in | 102 + ompi/mpi/man/man3/MPI_Buffer_attach.3in | 92 + ompi/mpi/man/man3/MPI_Buffer_detach.3in | 110 + ompi/mpi/man/man3/MPI_Cancel.3in | 89 + ompi/mpi/man/man3/MPI_Cart_coords.3in | 75 + ompi/mpi/man/man3/MPI_Cart_create.3in | 87 + ompi/mpi/man/man3/MPI_Cart_get.3in | 86 + ompi/mpi/man/man3/MPI_Cart_map.3in | 88 + ompi/mpi/man/man3/MPI_Cart_rank.3in | 74 + ompi/mpi/man/man3/MPI_Cart_shift.3in | 107 + ompi/mpi/man/man3/MPI_Cart_sub.3in | 87 + ompi/mpi/man/man3/MPI_Cartdim_get.3in | 73 + ompi/mpi/man/man3/MPI_Close_port.3in | 63 + ompi/mpi/man/man3/MPI_Comm_accept.3in | 90 + ompi/mpi/man/man3/MPI_Comm_c2f.3in | 1 + .../mpi/man/man3/MPI_Comm_call_errhandler.3in | 89 + ompi/mpi/man/man3/MPI_Comm_compare.3in | 70 + ompi/mpi/man/man3/MPI_Comm_connect.3in | 95 + ompi/mpi/man/man3/MPI_Comm_create.3in | 97 + .../man/man3/MPI_Comm_create_errhandler.3in | 102 + ompi/mpi/man/man3/MPI_Comm_create_group.3in | 94 + ompi/mpi/man/man3/MPI_Comm_create_keyval.3in | 152 + ompi/mpi/man/man3/MPI_Comm_delete_attr.3in | 81 + ompi/mpi/man/man3/MPI_Comm_disconnect.3in | 78 + ompi/mpi/man/man3/MPI_Comm_dup.3in | 87 + ompi/mpi/man/man3/MPI_Comm_dup_with_info.3in | 84 + ompi/mpi/man/man3/MPI_Comm_f2c.3in | 48 + ompi/mpi/man/man3/MPI_Comm_free.3in | 74 + ompi/mpi/man/man3/MPI_Comm_free_keyval.3in | 68 + ompi/mpi/man/man3/MPI_Comm_get_attr.3in | 92 + ompi/mpi/man/man3/MPI_Comm_get_errhandler.3in | 70 + ompi/mpi/man/man3/MPI_Comm_get_info.3in | 76 + ompi/mpi/man/man3/MPI_Comm_get_name.3in | 79 + ompi/mpi/man/man3/MPI_Comm_get_parent.3in | 74 + ompi/mpi/man/man3/MPI_Comm_group.3in | 66 + ompi/mpi/man/man3/MPI_Comm_idup.3in | 85 + ompi/mpi/man/man3/MPI_Comm_join.3in | 112 + ompi/mpi/man/man3/MPI_Comm_rank.3in | 78 + ompi/mpi/man/man3/MPI_Comm_remote_group.3in | 77 + ompi/mpi/man/man3/MPI_Comm_remote_size.3in | 77 + ompi/mpi/man/man3/MPI_Comm_set_attr.3in | 97 + ompi/mpi/man/man3/MPI_Comm_set_errhandler.3in | 67 + ompi/mpi/man/man3/MPI_Comm_set_info.3in | 78 + ompi/mpi/man/man3/MPI_Comm_set_name.3in | 88 + ompi/mpi/man/man3/MPI_Comm_size.3in | 88 + ompi/mpi/man/man3/MPI_Comm_spawn.3in | 245 + ompi/mpi/man/man3/MPI_Comm_spawn_multiple.3in | 272 + ompi/mpi/man/man3/MPI_Comm_split.3in | 108 + ompi/mpi/man/man3/MPI_Comm_split_type.3in | 165 + ompi/mpi/man/man3/MPI_Comm_test_inter.3in | 92 + ompi/mpi/man/man3/MPI_Compare_and_swap.3in | 112 + ompi/mpi/man/man3/MPI_Dims_create.3in | 91 + ompi/mpi/man/man3/MPI_Dist_graph_create.3in | 137 + .../man3/MPI_Dist_graph_create_adjacent.3in | 132 + .../mpi/man/man3/MPI_Dist_graph_neighbors.3in | 95 + .../man3/MPI_Dist_graph_neighbors_count.3in | 74 + ompi/mpi/man/man3/MPI_Errhandler_create.3in | 80 + ompi/mpi/man/man3/MPI_Errhandler_free.3in | 73 + ompi/mpi/man/man3/MPI_Errhandler_get.3in | 67 + ompi/mpi/man/man3/MPI_Errhandler_set.3in | 63 + ompi/mpi/man/man3/MPI_Error_class.3in | 72 + ompi/mpi/man/man3/MPI_Error_string.3in | 80 + ompi/mpi/man/man3/MPI_Exscan.3in | 175 + ompi/mpi/man/man3/MPI_Fetch_and_op.3in | 124 + ompi/mpi/man/man3/MPI_File_c2f.3in | 1 + .../mpi/man/man3/MPI_File_call_errhandler.3in | 85 + ompi/mpi/man/man3/MPI_File_close.3in | 71 + .../man/man3/MPI_File_create_errhandler.3in | 104 + ompi/mpi/man/man3/MPI_File_delete.3in | 74 + ompi/mpi/man/man3/MPI_File_f2c.3in | 2 + ompi/mpi/man/man3/MPI_File_get_amode.3in | 72 + ompi/mpi/man/man3/MPI_File_get_atomicity.3in | 77 + .../mpi/man/man3/MPI_File_get_byte_offset.3in | 92 + ompi/mpi/man/man3/MPI_File_get_errhandler.3in | 69 + ompi/mpi/man/man3/MPI_File_get_group.3in | 74 + ompi/mpi/man/man3/MPI_File_get_info.3in | 110 + ompi/mpi/man/man3/MPI_File_get_position.3in | 86 + .../man/man3/MPI_File_get_position_shared.3in | 85 + ompi/mpi/man/man3/MPI_File_get_size.3in | 90 + .../mpi/man/man3/MPI_File_get_type_extent.3in | 94 + ompi/mpi/man/man3/MPI_File_get_view.3in | 108 + ompi/mpi/man/man3/MPI_File_iread.3in | 102 + ompi/mpi/man/man3/MPI_File_iread_all.3in | 95 + ompi/mpi/man/man3/MPI_File_iread_at.3in | 129 + ompi/mpi/man/man3/MPI_File_iread_at_all.3in | 122 + ompi/mpi/man/man3/MPI_File_iread_shared.3in | 88 + ompi/mpi/man/man3/MPI_File_iwrite.3in | 107 + ompi/mpi/man/man3/MPI_File_iwrite_all.3in | 100 + ompi/mpi/man/man3/MPI_File_iwrite_at.3in | 131 + ompi/mpi/man/man3/MPI_File_iwrite_at_all.3in | 124 + ompi/mpi/man/man3/MPI_File_iwrite_shared.3in | 90 + ompi/mpi/man/man3/MPI_File_open.3in | 197 + ompi/mpi/man/man3/MPI_File_preallocate.3in | 95 + ompi/mpi/man/man3/MPI_File_read.3in | 103 + ompi/mpi/man/man3/MPI_File_read_all.3in | 104 + ompi/mpi/man/man3/MPI_File_read_all_begin.3in | 96 + ompi/mpi/man/man3/MPI_File_read_all_end.3in | 91 + ompi/mpi/man/man3/MPI_File_read_at.3in | 131 + ompi/mpi/man/man3/MPI_File_read_at_all.3in | 127 + .../man/man3/MPI_File_read_at_all_begin.3in | 120 + .../mpi/man/man3/MPI_File_read_at_all_end.3in | 87 + ompi/mpi/man/man3/MPI_File_read_ordered.3in | 108 + .../man/man3/MPI_File_read_ordered_begin.3in | 103 + .../man/man3/MPI_File_read_ordered_end.3in | 88 + ompi/mpi/man/man3/MPI_File_read_shared.3in | 92 + ompi/mpi/man/man3/MPI_File_seek.3in | 110 + ompi/mpi/man/man3/MPI_File_seek_shared.3in | 120 + ompi/mpi/man/man3/MPI_File_set_atomicity.3in | 84 + ompi/mpi/man/man3/MPI_File_set_errhandler.3in | 70 + ompi/mpi/man/man3/MPI_File_set_info.3in | 110 + ompi/mpi/man/man3/MPI_File_set_size.3in | 95 + ompi/mpi/man/man3/MPI_File_set_view.3in | 185 + ompi/mpi/man/man3/MPI_File_sync.3in | 75 + ompi/mpi/man/man3/MPI_File_write.3in | 110 + ompi/mpi/man/man3/MPI_File_write_all.3in | 106 + .../mpi/man/man3/MPI_File_write_all_begin.3in | 101 + ompi/mpi/man/man3/MPI_File_write_all_end.3in | 92 + ompi/mpi/man/man3/MPI_File_write_at.3in | 140 + ompi/mpi/man/man3/MPI_File_write_at_all.3in | 128 + .../man/man3/MPI_File_write_at_all_begin.3in | 121 + .../man/man3/MPI_File_write_at_all_end.3in | 92 + ompi/mpi/man/man3/MPI_File_write_ordered.3in | 114 + .../man/man3/MPI_File_write_ordered_begin.3in | 110 + .../man/man3/MPI_File_write_ordered_end.3in | 91 + ompi/mpi/man/man3/MPI_File_write_shared.3in | 92 + ompi/mpi/man/man3/MPI_Finalize.3in | 72 + ompi/mpi/man/man3/MPI_Finalized.3in | 70 + ompi/mpi/man/man3/MPI_Free_mem.3in | 66 + ompi/mpi/man/man3/MPI_Gather.3in | 213 + ompi/mpi/man/man3/MPI_Gatherv.3in | 375 + ompi/mpi/man/man3/MPI_Get.3in | 144 + ompi/mpi/man/man3/MPI_Get_accumulate.3in | 191 + ompi/mpi/man/man3/MPI_Get_address.3in | 91 + ompi/mpi/man/man3/MPI_Get_count.3in | 100 + ompi/mpi/man/man3/MPI_Get_elements.3in | 122 + ompi/mpi/man/man3/MPI_Get_elements_x.3in | 1 + ompi/mpi/man/man3/MPI_Get_library_version.3in | 95 + ompi/mpi/man/man3/MPI_Get_processor_name.3in | 74 + ompi/mpi/man/man3/MPI_Get_version.3in | 70 + ompi/mpi/man/man3/MPI_Graph_create.3in | 126 + ompi/mpi/man/man3/MPI_Graph_get.3in | 89 + ompi/mpi/man/man3/MPI_Graph_map.3in | 84 + ompi/mpi/man/man3/MPI_Graph_neighbors.3in | 112 + .../man/man3/MPI_Graph_neighbors_count.3in | 76 + ompi/mpi/man/man3/MPI_Graphdims_get.3in | 78 + ompi/mpi/man/man3/MPI_Grequest_complete.3in | 64 + ompi/mpi/man/man3/MPI_Grequest_start.3in | 184 + ompi/mpi/man/man3/MPI_Group_c2f.3in | 1 + ompi/mpi/man/man3/MPI_Group_compare.3in | 69 + ompi/mpi/man/man3/MPI_Group_difference.3in | 88 + ompi/mpi/man/man3/MPI_Group_excl.3in | 86 + ompi/mpi/man/man3/MPI_Group_f2c.3in | 1 + ompi/mpi/man/man3/MPI_Group_free.3in | 64 + ompi/mpi/man/man3/MPI_Group_incl.3in | 89 + ompi/mpi/man/man3/MPI_Group_intersection.3in | 90 + ompi/mpi/man/man3/MPI_Group_range_excl.3in | 85 + ompi/mpi/man/man3/MPI_Group_range_incl.3in | 106 + ompi/mpi/man/man3/MPI_Group_rank.3in | 66 + ompi/mpi/man/man3/MPI_Group_size.3in | 66 + .../man/man3/MPI_Group_translate_ranks.3in | 80 + ompi/mpi/man/man3/MPI_Group_union.3in | 90 + ompi/mpi/man/man3/MPI_Iallgather.3in | 1 + ompi/mpi/man/man3/MPI_Iallgatherv.3in | 1 + ompi/mpi/man/man3/MPI_Iallreduce.3in | 1 + ompi/mpi/man/man3/MPI_Ialltoall.3in | 1 + ompi/mpi/man/man3/MPI_Ialltoallv.3in | 1 + ompi/mpi/man/man3/MPI_Ialltoallw.3in | 1 + ompi/mpi/man/man3/MPI_Ibarrier.3in | 1 + ompi/mpi/man/man3/MPI_Ibcast.3in | 1 + ompi/mpi/man/man3/MPI_Ibsend.3in | 96 + ompi/mpi/man/man3/MPI_Iexscan.3in | 1 + ompi/mpi/man/man3/MPI_Igather.3in | 1 + ompi/mpi/man/man3/MPI_Igatherv.3in | 1 + ompi/mpi/man/man3/MPI_Improbe.3in | 122 + ompi/mpi/man/man3/MPI_Imrecv.3in | 121 + ompi/mpi/man/man3/MPI_Ineighbor_allgather.3in | 1 + .../mpi/man/man3/MPI_Ineighbor_allgatherv.3in | 1 + ompi/mpi/man/man3/MPI_Ineighbor_alltoall.3in | 1 + ompi/mpi/man/man3/MPI_Ineighbor_alltoallv.3in | 1 + ompi/mpi/man/man3/MPI_Ineighbor_alltoallw.3in | 1 + ompi/mpi/man/man3/MPI_Info_c2f.3in | 1 + ompi/mpi/man/man3/MPI_Info_create.3in | 72 + ompi/mpi/man/man3/MPI_Info_delete.3in | 83 + ompi/mpi/man/man3/MPI_Info_dup.3in | 79 + ompi/mpi/man/man3/MPI_Info_env.3in | 66 + ompi/mpi/man/man3/MPI_Info_f2c.3in | 1 + ompi/mpi/man/man3/MPI_Info_free.3in | 74 + ompi/mpi/man/man3/MPI_Info_get.3in | 106 + ompi/mpi/man/man3/MPI_Info_get_nkeys.3in | 75 + ompi/mpi/man/man3/MPI_Info_get_nthkey.3in | 81 + ompi/mpi/man/man3/MPI_Info_get_valuelen.3in | 92 + ompi/mpi/man/man3/MPI_Info_set.3in | 86 + ompi/mpi/man/man3/MPI_Init.3in | 113 + ompi/mpi/man/man3/MPI_Init_thread.3in | 207 + ompi/mpi/man/man3/MPI_Initialized.3in | 70 + ompi/mpi/man/man3/MPI_Intercomm_create.3in | 118 + ompi/mpi/man/man3/MPI_Intercomm_merge.3in | 80 + ompi/mpi/man/man3/MPI_Iprobe.3in | 103 + ompi/mpi/man/man3/MPI_Irecv.3in | 101 + ompi/mpi/man/man3/MPI_Ireduce.3in | 1 + ompi/mpi/man/man3/MPI_Ireduce_scatter.3in | 1 + .../man/man3/MPI_Ireduce_scatter_block.3in | 1 + ompi/mpi/man/man3/MPI_Irsend.3in | 92 + ompi/mpi/man/man3/MPI_Is_thread_main.3in | 79 + ompi/mpi/man/man3/MPI_Iscan.3in | 1 + ompi/mpi/man/man3/MPI_Iscatter.3in | 1 + ompi/mpi/man/man3/MPI_Iscatterv.3in | 1 + ompi/mpi/man/man3/MPI_Isend.3in | 100 + ompi/mpi/man/man3/MPI_Issend.3in | 95 + ompi/mpi/man/man3/MPI_Keyval_create.3in | 121 + ompi/mpi/man/man3/MPI_Keyval_free.3in | 64 + ompi/mpi/man/man3/MPI_Lookup_name.3in | 142 + ompi/mpi/man/man3/MPI_Message_c2f.3in | 1 + ompi/mpi/man/man3/MPI_Message_f2c.3in | 1 + ompi/mpi/man/man3/MPI_Mprobe.3in | 115 + ompi/mpi/man/man3/MPI_Mrecv.3in | 104 + ompi/mpi/man/man3/MPI_Neighbor_allgather.3in | 148 + ompi/mpi/man/man3/MPI_Neighbor_allgatherv.3in | 145 + ompi/mpi/man/man3/MPI_Neighbor_alltoall.3in | 193 + ompi/mpi/man/man3/MPI_Neighbor_alltoallv.3in | 219 + ompi/mpi/man/man3/MPI_Neighbor_alltoallw.3in | 215 + ompi/mpi/man/man3/MPI_Op_c2f.3in | 1 + ompi/mpi/man/man3/MPI_Op_commutative.3in | 68 + ompi/mpi/man/man3/MPI_Op_create.3in | 195 + ompi/mpi/man/man3/MPI_Op_f2c.3in | 1 + ompi/mpi/man/man3/MPI_Op_free.3in | 72 + ompi/mpi/man/man3/MPI_Open_port.3in | 76 + ompi/mpi/man/man3/MPI_Pack.3in | 125 + ompi/mpi/man/man3/MPI_Pack_external.3in | 216 + ompi/mpi/man/man3/MPI_Pack_external_size.3in | 114 + ompi/mpi/man/man3/MPI_Pack_size.3in | 86 + ompi/mpi/man/man3/MPI_Pcontrol.3in | 76 + ompi/mpi/man/man3/MPI_Probe.3in | 136 + ompi/mpi/man/man3/MPI_Publish_name.3in | 176 + ompi/mpi/man/man3/MPI_Put.3in | 163 + ompi/mpi/man/man3/MPI_Query_thread.3in | 103 + ompi/mpi/man/man3/MPI_Raccumulate.3in | 1 + ompi/mpi/man/man3/MPI_Recv.3in | 125 + ompi/mpi/man/man3/MPI_Recv_init.3in | 111 + ompi/mpi/man/man3/MPI_Reduce.3in | 479 + ompi/mpi/man/man3/MPI_Reduce_local.3in | 293 + ompi/mpi/man/man3/MPI_Reduce_scatter.3in | 143 + .../mpi/man/man3/MPI_Reduce_scatter_block.3in | 137 + ompi/mpi/man/man3/MPI_Register_datarep.3in | 111 + ompi/mpi/man/man3/MPI_Request_c2f.3in | 1 + ompi/mpi/man/man3/MPI_Request_f2c.3in | 1 + ompi/mpi/man/man3/MPI_Request_free.3in | 143 + ompi/mpi/man/man3/MPI_Request_get_status.3in | 72 + ompi/mpi/man/man3/MPI_Rget.3in | 1 + ompi/mpi/man/man3/MPI_Rget_accumulate.3in | 1 + ompi/mpi/man/man3/MPI_Rput.3in | 1 + ompi/mpi/man/man3/MPI_Rsend.3in | 85 + ompi/mpi/man/man3/MPI_Rsend_init.3in | 108 + ompi/mpi/man/man3/MPI_Scan.3in | 243 + ompi/mpi/man/man3/MPI_Scatter.3in | 194 + ompi/mpi/man/man3/MPI_Scatterv.3in | 239 + ompi/mpi/man/man3/MPI_Send.3in | 94 + ompi/mpi/man/man3/MPI_Send_init.3in | 110 + ompi/mpi/man/man3/MPI_Sendrecv.3in | 131 + ompi/mpi/man/man3/MPI_Sendrecv_replace.3in | 118 + ompi/mpi/man/man3/MPI_Sizeof.3in | 75 + ompi/mpi/man/man3/MPI_Ssend.3in | 83 + ompi/mpi/man/man3/MPI_Ssend_init.3in | 109 + ompi/mpi/man/man3/MPI_Start.3in | 83 + ompi/mpi/man/man3/MPI_Startall.3in | 100 + ompi/mpi/man/man3/MPI_Status_c2f.3in | 1 + ompi/mpi/man/man3/MPI_Status_f2c.3in | 30 + .../mpi/man/man3/MPI_Status_set_cancelled.3in | 73 + ompi/mpi/man/man3/MPI_Status_set_elements.3in | 97 + .../man/man3/MPI_Status_set_elements_x.3in | 1 + ompi/mpi/man/man3/MPI_T_category_changed.3in | 38 + .../man3/MPI_T_category_get_categories.3in | 49 + .../mpi/man/man3/MPI_T_category_get_cvars.3in | 49 + ompi/mpi/man/man3/MPI_T_category_get_info.3in | 81 + ompi/mpi/man/man3/MPI_T_category_get_num.3in | 36 + .../mpi/man/man3/MPI_T_category_get_pvars.3in | 50 + ompi/mpi/man/man3/MPI_T_cvar_get_info.3in | 170 + ompi/mpi/man/man3/MPI_T_cvar_get_num.3in | 39 + ompi/mpi/man/man3/MPI_T_cvar_handle_alloc.3in | 68 + ompi/mpi/man/man3/MPI_T_cvar_handle_free.3in | 1 + ompi/mpi/man/man3/MPI_T_cvar_read.3in | 51 + ompi/mpi/man/man3/MPI_T_cvar_write.3in | 59 + ompi/mpi/man/man3/MPI_T_enum_get_info.3in | 66 + ompi/mpi/man/man3/MPI_T_enum_get_item.3in | 69 + ompi/mpi/man/man3/MPI_T_finalize.3in | 44 + ompi/mpi/man/man3/MPI_T_init_thread.3in | 90 + ompi/mpi/man/man3/MPI_T_pvar_get_info.3in | 204 + ompi/mpi/man/man3/MPI_T_pvar_get_num.3in | 38 + ompi/mpi/man/man3/MPI_T_pvar_handle_alloc.3in | 60 + ompi/mpi/man/man3/MPI_T_pvar_handle_free.3in | 1 + ompi/mpi/man/man3/MPI_T_pvar_read.3in | 59 + ompi/mpi/man/man3/MPI_T_pvar_readreset.3in | 69 + ompi/mpi/man/man3/MPI_T_pvar_reset.3in | 60 + .../man/man3/MPI_T_pvar_session_create.3in | 50 + ompi/mpi/man/man3/MPI_T_pvar_session_free.3in | 1 + ompi/mpi/man/man3/MPI_T_pvar_start.3in | 62 + ompi/mpi/man/man3/MPI_T_pvar_stop.3in | 1 + ompi/mpi/man/man3/MPI_T_pvar_write.3in | 62 + ompi/mpi/man/man3/MPI_Test.3in | 123 + ompi/mpi/man/man3/MPI_Test_cancelled.3in | 74 + ompi/mpi/man/man3/MPI_Testall.3in | 135 + ompi/mpi/man/man3/MPI_Testany.3in | 130 + ompi/mpi/man/man3/MPI_Testsome.3in | 157 + ompi/mpi/man/man3/MPI_Topo_test.3in | 82 + ompi/mpi/man/man3/MPI_Type_c2f.3in | 1 + ompi/mpi/man/man3/MPI_Type_commit.3in | 73 + ompi/mpi/man/man3/MPI_Type_contiguous.3in | 99 + ompi/mpi/man/man3/MPI_Type_create_darray.3in | 158 + .../man/man3/MPI_Type_create_f90_complex.3in | 148 + .../man/man3/MPI_Type_create_f90_integer.3in | 141 + .../mpi/man/man3/MPI_Type_create_f90_real.3in | 147 + .../mpi/man/man3/MPI_Type_create_hindexed.3in | 1 + .../man3/MPI_Type_create_hindexed_block.3in | 1 + ompi/mpi/man/man3/MPI_Type_create_hvector.3in | 102 + .../man3/MPI_Type_create_indexed_block.3in | 105 + ompi/mpi/man/man3/MPI_Type_create_keyval.3in | 148 + ompi/mpi/man/man3/MPI_Type_create_resized.3in | 98 + ompi/mpi/man/man3/MPI_Type_create_struct.3in | 108 + .../mpi/man/man3/MPI_Type_create_subarray.3in | 144 + ompi/mpi/man/man3/MPI_Type_delete_attr.3in | 77 + ompi/mpi/man/man3/MPI_Type_dup.3in | 80 + ompi/mpi/man/man3/MPI_Type_extent.3in | 93 + ompi/mpi/man/man3/MPI_Type_f2c.3in | 1 + ompi/mpi/man/man3/MPI_Type_free.3in | 65 + ompi/mpi/man/man3/MPI_Type_free_keyval.3in | 66 + ompi/mpi/man/man3/MPI_Type_get_attr.3in | 92 + ompi/mpi/man/man3/MPI_Type_get_contents.3in | 124 + ompi/mpi/man/man3/MPI_Type_get_envelope.3in | 123 + ompi/mpi/man/man3/MPI_Type_get_extent.3in | 110 + ompi/mpi/man/man3/MPI_Type_get_extent_x.3in | 1 + ompi/mpi/man/man3/MPI_Type_get_name.3in | 78 + .../mpi/man/man3/MPI_Type_get_true_extent.3in | 109 + .../man/man3/MPI_Type_get_true_extent_x.3in | 1 + ompi/mpi/man/man3/MPI_Type_hindexed.3in | 100 + ompi/mpi/man/man3/MPI_Type_hvector.3in | 98 + ompi/mpi/man/man3/MPI_Type_indexed.3in | 170 + ompi/mpi/man/man3/MPI_Type_lb.3in | 92 + ompi/mpi/man/man3/MPI_Type_match_size.3in | 105 + ompi/mpi/man/man3/MPI_Type_set_attr.3in | 92 + ompi/mpi/man/man3/MPI_Type_set_name.3in | 77 + ompi/mpi/man/man3/MPI_Type_size.3in | 88 + ompi/mpi/man/man3/MPI_Type_size_x.3in | 1 + ompi/mpi/man/man3/MPI_Type_struct.3in | 118 + ompi/mpi/man/man3/MPI_Type_ub.3in | 95 + ompi/mpi/man/man3/MPI_Type_vector.3in | 132 + ompi/mpi/man/man3/MPI_Unpack.3in | 118 + ompi/mpi/man/man3/MPI_Unpack_external.3in | 193 + ompi/mpi/man/man3/MPI_Unpublish_name.3in | 140 + ompi/mpi/man/man3/MPI_Wait.3in | 129 + ompi/mpi/man/man3/MPI_Waitall.3in | 124 + ompi/mpi/man/man3/MPI_Waitany.3in | 150 + ompi/mpi/man/man3/MPI_Waitsome.3in | 168 + ompi/mpi/man/man3/MPI_Win_allocate.3in | 121 + ompi/mpi/man/man3/MPI_Win_allocate_shared.3in | 146 + ompi/mpi/man/man3/MPI_Win_attach.3in | 81 + ompi/mpi/man/man3/MPI_Win_c2f.3in | 1 + ompi/mpi/man/man3/MPI_Win_call_errhandler.3in | 89 + ompi/mpi/man/man3/MPI_Win_complete.3in | 65 + ompi/mpi/man/man3/MPI_Win_create.3in | 160 + ompi/mpi/man/man3/MPI_Win_create_dynamic.3in | 92 + .../man/man3/MPI_Win_create_errhandler.3in | 95 + ompi/mpi/man/man3/MPI_Win_create_keyval.3in | 146 + ompi/mpi/man/man3/MPI_Win_delete_attr.3in | 71 + ompi/mpi/man/man3/MPI_Win_detach.3in | 1 + ompi/mpi/man/man3/MPI_Win_f2c.3in | 1 + ompi/mpi/man/man3/MPI_Win_fence.3in | 82 + ompi/mpi/man/man3/MPI_Win_flush.3in | 76 + ompi/mpi/man/man3/MPI_Win_flush_all.3in | 1 + ompi/mpi/man/man3/MPI_Win_flush_local.3in | 76 + ompi/mpi/man/man3/MPI_Win_flush_local_all.3in | 1 + ompi/mpi/man/man3/MPI_Win_free.3in | 67 + ompi/mpi/man/man3/MPI_Win_free_keyval.3in | 57 + ompi/mpi/man/man3/MPI_Win_get_attr.3in | 88 + ompi/mpi/man/man3/MPI_Win_get_errhandler.3in | 66 + ompi/mpi/man/man3/MPI_Win_get_group.3in | 65 + ompi/mpi/man/man3/MPI_Win_get_info.3in | 75 + ompi/mpi/man/man3/MPI_Win_get_name.3in | 70 + ompi/mpi/man/man3/MPI_Win_lock.3in | 92 + ompi/mpi/man/man3/MPI_Win_lock_all.3in | 79 + ompi/mpi/man/man3/MPI_Win_post.3in | 77 + ompi/mpi/man/man3/MPI_Win_set_attr.3in | 85 + ompi/mpi/man/man3/MPI_Win_set_errhandler.3in | 69 + ompi/mpi/man/man3/MPI_Win_set_info.3in | 77 + ompi/mpi/man/man3/MPI_Win_set_name.3in | 70 + ompi/mpi/man/man3/MPI_Win_shared_query.3in | 101 + ompi/mpi/man/man3/MPI_Win_start.3in | 85 + ompi/mpi/man/man3/MPI_Win_sync.3in | 55 + ompi/mpi/man/man3/MPI_Win_test.3in | 78 + ompi/mpi/man/man3/MPI_Win_unlock.3in | 74 + ompi/mpi/man/man3/MPI_Win_unlock_all.3in | 62 + ompi/mpi/man/man3/MPI_Win_wait.3in | 71 + ompi/mpi/man/man3/MPI_Wtick.3in | 57 + ompi/mpi/man/man3/MPI_Wtime.3in | 93 + ompi/mpi/man/man3/Makefile.extra | 433 + ompi/mpi/man/man3/OpenMPI.3in | 1 + ompi/mpi/tool/Makefile.am | 48 + ompi/mpi/tool/category_changed.c | 35 + ompi/mpi/tool/category_get_categories.c | 55 + ompi/mpi/tool/category_get_cvars.c | 55 + ompi/mpi/tool/category_get_index.c | 44 + ompi/mpi/tool/category_get_info.c | 63 + ompi/mpi/tool/category_get_num.c | 39 + ompi/mpi/tool/category_get_pvars.c | 55 + ompi/mpi/tool/cvar_get_index.c | 44 + ompi/mpi/tool/cvar_get_info.c | 75 + ompi/mpi/tool/cvar_get_num.c | 38 + ompi/mpi/tool/cvar_handle_alloc.c | 74 + ompi/mpi/tool/cvar_handle_free.c | 34 + ompi/mpi/tool/cvar_read.c | 84 + ompi/mpi/tool/cvar_write.c | 59 + ompi/mpi/tool/enum_get_info.c | 49 + ompi/mpi/tool/enum_get_item.c | 60 + ompi/mpi/tool/finalize.c | 55 + ompi/mpi/tool/init_thread.c | 66 + ompi/mpi/tool/mpit-internal.h | 73 + ompi/mpi/tool/mpit_common.c | 97 + ompi/mpi/tool/profile/Makefile.am | 106 + ompi/mpi/tool/profile/defines.h | 63 + ompi/mpi/tool/pvar_get_index.c | 44 + ompi/mpi/tool/pvar_get_info.c | 94 + ompi/mpi/tool/pvar_get_num.c | 36 + ompi/mpi/tool/pvar_handle_alloc.c | 58 + ompi/mpi/tool/pvar_handle_free.c | 55 + ompi/mpi/tool/pvar_read.c | 44 + ompi/mpi/tool/pvar_readreset.c | 33 + ompi/mpi/tool/pvar_reset.c | 50 + ompi/mpi/tool/pvar_session_create.c | 42 + ompi/mpi/tool/pvar_session_free.c | 41 + ompi/mpi/tool/pvar_start.c | 59 + ompi/mpi/tool/pvar_stop.c | 61 + ompi/mpi/tool/pvar_write.c | 44 + ompi/mpiext/Makefile.am | 20 + ompi/mpiext/README.txt | 124 + ompi/mpiext/affinity/Makefile.am | 23 + ompi/mpiext/affinity/README.txt | 29 + ompi/mpiext/affinity/c/Makefile.am | 53 + ompi/mpiext/affinity/c/OMPI_Affinity_str.3in | 202 + ompi/mpiext/affinity/c/example.c | 32 + ompi/mpiext/affinity/c/mpiext_affinity_c.h | 24 + ompi/mpiext/affinity/c/mpiext_affinity_str.c | 421 + ompi/mpiext/affinity/configure.m4 | 25 + ompi/mpiext/cr/Makefile.am | 21 + ompi/mpiext/cr/c/Makefile.am | 45 + ompi/mpiext/cr/c/checkpoint.c | 89 + ompi/mpiext/cr/c/inc_register_callback.c | 40 + ompi/mpiext/cr/c/migrate.c | 121 + ompi/mpiext/cr/c/mpiext_cr_c.h | 83 + ompi/mpiext/cr/c/quiesce_checkpoint.c | 70 + ompi/mpiext/cr/c/quiesce_end.c | 75 + ompi/mpiext/cr/c/quiesce_start.c | 214 + ompi/mpiext/cr/c/restart.c | 67 + ompi/mpiext/cr/c/self_register_checkpoint.c | 40 + ompi/mpiext/cr/c/self_register_continue.c | 40 + ompi/mpiext/cr/c/self_register_restart.c | 40 + ompi/mpiext/cr/configure.m4 | 40 + ompi/mpiext/cuda/Makefile.am | 24 + ompi/mpiext/cuda/README.txt | 11 + .../mpiext/cuda/c/MPIX_Query_cuda_support.3in | 34 + ompi/mpiext/cuda/c/Makefile.am | 48 + ompi/mpiext/cuda/c/mpiext_cuda.c | 31 + ompi/mpiext/cuda/c/mpiext_cuda_c.h.in | 16 + ompi/mpiext/cuda/configure.m4 | 31 + ompi/mpiext/example/.opal_ignore | 0 ompi/mpiext/example/Makefile.am | 20 + ompi/mpiext/example/README.txt | 138 + ompi/mpiext/example/c/Makefile.am | 38 + ompi/mpiext/example/c/mpiext_example_c.h | 21 + ompi/mpiext/example/c/mpiext_example_module.c | 56 + .../example/c/mpiext_example_progress.c | 55 + ompi/mpiext/example/c/progress.c | 54 + ompi/mpiext/example/configure.m4 | 34 + ompi/mpiext/example/mpif-h/Makefile.am | 51 + .../example/mpif-h/mpiext_example_mpifh.h | 16 + .../mpif-h/mpiext_example_progress_f.c | 67 + ompi/mpiext/example/tests/Makefile | 56 + ompi/mpiext/example/tests/Makefile.include | 34 + ompi/mpiext/example/tests/progress_c.c | 25 + ompi/mpiext/example/tests/progress_mpifh.F90 | 24 + ompi/mpiext/example/tests/progress_usempi.F90 | 24 + .../example/tests/progress_usempif08.F90 | 24 + ompi/mpiext/example/use-mpi-f08/Makefile.am | 43 + .../mpiext_example_progress_f08.F90 | 51 + .../use-mpi-f08/mpiext_example_usempif08.h | 28 + ompi/mpiext/example/use-mpi/Makefile.am | 15 + .../example/use-mpi/mpiext_example_usempi.h | 27 + ompi/mpiext/mpiext.c | 43 + ompi/mpiext/mpiext.h | 24 + ompi/op/Makefile.am | 27 + ompi/op/op.c | 498 + ompi/op/op.h | 652 ++ ompi/patterns/comm/Makefile.am | 17 + ompi/patterns/comm/allgather.c | 293 + ompi/patterns/comm/allreduce.c | 260 + ompi/patterns/comm/bcast.c | 103 + ompi/patterns/comm/coll_ops.h | 51 + ompi/patterns/comm/commpatterns.h | 22 + ompi/patterns/net/Makefile.am | 19 + ompi/patterns/net/allreduce.c | 347 + ompi/patterns/net/coll_ops.h | 29 + ompi/patterns/net/netpatterns.h | 152 + ompi/patterns/net/netpatterns_base.c | 55 + ompi/patterns/net/netpatterns_knomial_tree.c | 976 ++ ompi/patterns/net/netpatterns_knomial_tree.h | 261 + .../net/netpatterns_multinomial_tree.c | 190 + ompi/patterns/net/netpatterns_nary_tree.c | 457 + ompi/peruse/Makefile.am | 27 + ompi/peruse/peruse-internal.h | 136 + ompi/peruse/peruse.c | 347 + ompi/peruse/peruse.h | 157 + ompi/peruse/peruse_module.c | 85 + ompi/proc/Makefile.am | 27 + ompi/proc/proc.c | 835 ++ ompi/proc/proc.h | 450 + ompi/request/Makefile.am | 33 + ompi/request/grequest.c | 227 + ompi/request/grequest.h | 109 + ompi/request/req_test.c | 377 + ompi/request/req_wait.c | 512 + ompi/request/request.c | 184 + ompi/request/request.h | 437 + ompi/request/request_dbg.h | 49 + ompi/request/request_default.h | 71 + ompi/runtime/Makefile.am | 40 + ompi/runtime/help-mpi-runtime.txt | 106 + ompi/runtime/mpiruntime.h | 230 + ompi/runtime/ompi_cr.c | 508 + ompi/runtime/ompi_cr.h | 65 + ompi/runtime/ompi_info_support.c | 154 + ompi/runtime/ompi_info_support.h | 36 + ompi/runtime/ompi_mpi_abort.c | 209 + ompi/runtime/ompi_mpi_dynamics.c | 64 + ompi/runtime/ompi_mpi_finalize.c | 521 + ompi/runtime/ompi_mpi_init.c | 989 ++ ompi/runtime/ompi_mpi_params.c | 416 + ompi/runtime/ompi_mpi_preconnect.c | 79 + ompi/runtime/params.h | 166 + ompi/tools/Makefile.am | 31 + ompi/tools/mpisync/Makefile.am | 85 + ompi/tools/mpisync/hpctimer.c | 361 + ompi/tools/mpisync/hpctimer.h | 65 + ompi/tools/mpisync/mpigclock.c | 168 + ompi/tools/mpisync/mpigclock.h | 57 + ompi/tools/mpisync/mpirun_prof | 79 + ompi/tools/mpisync/mpisync.1in | 48 + ompi/tools/mpisync/ompi_timing_post | 58 + ompi/tools/mpisync/sync.c | 163 + ompi/tools/ompi_info/Makefile.am | 75 + ompi/tools/ompi_info/ompi_info.1in | 287 + ompi/tools/ompi_info/ompi_info.c | 211 + ompi/tools/ompi_info/ompi_info.h | 44 + ompi/tools/ompi_info/param.c | 675 ++ ompi/tools/wrappers/Makefile.am | 195 + .../tools/wrappers/mpic++-wrapper-data.txt.in | 29 + ompi/tools/wrappers/mpicc-wrapper-data.txt.in | 29 + ompi/tools/wrappers/mpif77.1in | 48 + .../wrappers/mpifort-wrapper-data.txt.in | 28 + ompi/tools/wrappers/mpijavac.1 | 146 + ompi/tools/wrappers/mpijavac.pl.in | 145 + ompi/tools/wrappers/ompi-c.pc.in | 22 + ompi/tools/wrappers/ompi-cxx.pc.in | 22 + ompi/tools/wrappers/ompi-fort.pc.in | 21 + ompi/tools/wrappers/ompi.pc.in | 22 + ompi/tools/wrappers/ompi_wrapper_script.in | 240 + ompi/win/Makefile.am | 27 + ompi/win/win.c | 440 + ompi/win/win.h | 178 + opal/Makefile.am | 80 + opal/asm/Makefile.am | 93 + opal/asm/asm-data.txt | 133 + opal/asm/asm.c | 74 + opal/asm/base/ARM.asm | 153 + opal/asm/base/IA32.asm | 110 + opal/asm/base/IA64.asm | 109 + opal/asm/base/MIPS.asm | 196 + opal/asm/base/POWERPC32.asm | 168 + opal/asm/base/POWERPC64.asm | 157 + opal/asm/base/SPARCV9_32.asm | 171 + opal/asm/base/SPARCV9_64.asm | 111 + opal/asm/base/X86_64.asm | 52 + opal/asm/base/aix.conf | 44 + opal/asm/base/default.conf | 34 + opal/asm/generate-all-asm.pl | 27 + opal/asm/generate-asm.pl | 122 + opal/class/Makefile.am | 57 + opal/class/opal_bitmap.c | 412 + opal/class/opal_bitmap.h | 258 + opal/class/opal_fifo.c | 41 + opal/class/opal_fifo.h | 340 + opal/class/opal_free_list.c | 311 + opal/class/opal_free_list.h | 367 + opal/class/opal_graph.c | 871 ++ opal/class/opal_graph.h | 355 + opal/class/opal_hash_table.c | 993 ++ opal/class/opal_hash_table.h | 491 + opal/class/opal_hotel.c | 140 + opal/class/opal_hotel.h | 351 + opal/class/opal_lifo.c | 33 + opal/class/opal_lifo.h | 320 + opal/class/opal_list.c | 258 + opal/class/opal_list.h | 915 ++ opal/class/opal_object.c | 222 + opal/class/opal_object.h | 518 + opal/class/opal_pointer_array.c | 345 + opal/class/opal_pointer_array.h | 206 + opal/class/opal_rb_tree.c | 573 ++ opal/class/opal_rb_tree.h | 205 + opal/class/opal_ring_buffer.c | 165 + opal/class/opal_ring_buffer.h | 105 + opal/class/opal_tree.c | 707 ++ opal/class/opal_tree.h | 530 + opal/class/opal_value_array.c | 66 + opal/class/opal_value_array.h | 280 + opal/common_sym_whitelist.txt | 7 + opal/datatype/Makefile.am | 80 + opal/datatype/opal_convertor.c | 748 ++ opal/datatype/opal_convertor.h | 396 + opal/datatype/opal_convertor_internal.h | 60 + opal/datatype/opal_convertor_raw.c | 215 + opal/datatype/opal_copy_functions.c | 271 + .../opal_copy_functions_heterogeneous.c | 477 + opal/datatype/opal_datatype.h | 374 + opal/datatype/opal_datatype_add.c | 365 + opal/datatype/opal_datatype_checksum.h | 55 + opal/datatype/opal_datatype_clone.c | 72 + opal/datatype/opal_datatype_copy.c | 141 + opal/datatype/opal_datatype_copy.h | 255 + opal/datatype/opal_datatype_create.c | 114 + .../opal_datatype_create_contiguous.c | 41 + opal/datatype/opal_datatype_cuda.c | 193 + opal/datatype/opal_datatype_cuda.h | 32 + opal/datatype/opal_datatype_destroy.c | 37 + opal/datatype/opal_datatype_dump.c | 154 + opal/datatype/opal_datatype_fake_stack.c | 188 + opal/datatype/opal_datatype_get_count.c | 200 + opal/datatype/opal_datatype_internal.h | 502 + opal/datatype/opal_datatype_memcpy.h | 20 + opal/datatype/opal_datatype_module.c | 266 + opal/datatype/opal_datatype_optimize.c | 308 + opal/datatype/opal_datatype_pack.c | 589 ++ opal/datatype/opal_datatype_pack.h | 117 + opal/datatype/opal_datatype_position.c | 261 + opal/datatype/opal_datatype_prototypes.h | 89 + opal/datatype/opal_datatype_resize.c | 32 + opal/datatype/opal_datatype_unpack.c | 586 ++ opal/datatype/opal_datatype_unpack.h | 111 + opal/dss/Makefile.am | 41 + opal/dss/dss.h | 503 + opal/dss/dss_compare.c | 460 + opal/dss/dss_copy.c | 411 + opal/dss/dss_dump.c | 60 + opal/dss/dss_internal.h | 565 ++ opal/dss/dss_internal_functions.c | 133 + opal/dss/dss_load_unload.c | 481 + opal/dss/dss_lookup.c | 35 + opal/dss/dss_open_close.c | 669 ++ opal/dss/dss_pack.c | 984 ++ opal/dss/dss_peek.c | 116 + opal/dss/dss_print.c | 921 ++ opal/dss/dss_register.c | 79 + opal/dss/dss_types.h | 297 + opal/dss/dss_unpack.c | 1255 +++ opal/etc/Makefile.am | 69 + opal/etc/openmpi-mca-params.conf | 58 + opal/include/Makefile.am | 36 + opal/include/opal/Makefile.am | 41 + opal/include/opal/align.h | 31 + opal/include/opal/constants.h | 105 + opal/include/opal/hash_string.h | 69 + opal/include/opal/opal_portable_platform.h | 401 + opal/include/opal/opal_socket_errno.h | 26 + opal/include/opal/prefetch.h | 58 + opal/include/opal/sys/Makefile.am | 44 + opal/include/opal/sys/architecture.h | 58 + opal/include/opal/sys/arm/Makefile.am | 24 + opal/include/opal/sys/arm/atomic.h | 276 + opal/include/opal/sys/arm/timer.h | 33 + opal/include/opal/sys/arm/update.sh | 36 + opal/include/opal/sys/arm64/Makefile.am | 24 + opal/include/opal/sys/arm64/atomic.h | 301 + opal/include/opal/sys/arm64/timer.h | 45 + opal/include/opal/sys/arm64/update.sh | 36 + opal/include/opal/sys/atomic.h | 624 ++ opal/include/opal/sys/atomic_impl.h | 438 + opal/include/opal/sys/cma.h | 124 + opal/include/opal/sys/gcc_builtin/Makefile.am | 25 + opal/include/opal/sys/gcc_builtin/atomic.h | 228 + opal/include/opal/sys/ia32/Makefile.am | 23 + opal/include/opal/sys/ia32/atomic.h | 222 + opal/include/opal/sys/ia32/timer.h | 58 + opal/include/opal/sys/ia32/update.sh | 36 + opal/include/opal/sys/ia64/Makefile.am | 23 + opal/include/opal/sys/ia64/atomic.h | 145 + opal/include/opal/sys/ia64/timer.h | 48 + opal/include/opal/sys/ia64/update.sh | 37 + opal/include/opal/sys/mips/Makefile.am | 24 + opal/include/opal/sys/mips/atomic.h | 198 + opal/include/opal/sys/mips/timer.h | 33 + opal/include/opal/sys/mips/update.sh | 36 + opal/include/opal/sys/osx/Makefile.am | 24 + opal/include/opal/sys/osx/atomic.h | 169 + opal/include/opal/sys/powerpc/Makefile.am | 23 + opal/include/opal/sys/powerpc/atomic.h | 461 + opal/include/opal/sys/powerpc/timer.h | 52 + opal/include/opal/sys/powerpc/update.sh | 39 + opal/include/opal/sys/sparcv9/Makefile.am | 23 + opal/include/opal/sys/sparcv9/atomic.h | 197 + opal/include/opal/sys/sparcv9/timer.h | 67 + opal/include/opal/sys/sparcv9/update.sh | 37 + .../include/opal/sys/sync_builtin/Makefile.am | 23 + opal/include/opal/sys/sync_builtin/atomic.h | 136 + opal/include/opal/sys/timer.h | 130 + opal/include/opal/sys/x86_64/Makefile.am | 25 + opal/include/opal/sys/x86_64/atomic.h | 280 + opal/include/opal/sys/x86_64/timer.h | 74 + opal/include/opal/sys/x86_64/update.sh | 36 + opal/include/opal/types.h | 208 + opal/include/opal/version.h.in | 42 + opal/include/opal_config_bottom.h | 539 ++ opal/include/opal_config_top.h | 38 + opal/include/opal_stdint.h | 127 + opal/mca/Makefile.am | 23 + opal/mca/allocator/Makefile.am | 37 + opal/mca/allocator/allocator.h | 153 + opal/mca/allocator/base/Makefile.am | 23 + .../mca/allocator/base/allocator_base_frame.c | 66 + opal/mca/allocator/base/base.h | 66 + opal/mca/allocator/base/owner.txt | 7 + opal/mca/allocator/basic/Makefile.am | 46 + opal/mca/allocator/basic/allocator_basic.c | 371 + opal/mca/allocator/basic/allocator_basic.h | 169 + opal/mca/allocator/basic/owner.txt | 7 + opal/mca/allocator/bucket/Makefile.am | 47 + opal/mca/allocator/bucket/allocator_bucket.c | 144 + .../allocator/bucket/allocator_bucket_alloc.c | 384 + .../allocator/bucket/allocator_bucket_alloc.h | 219 + opal/mca/allocator/bucket/owner.txt | 7 + opal/mca/backtrace/Makefile.am | 37 + opal/mca/backtrace/backtrace.h | 83 + opal/mca/backtrace/base/Makefile.am | 23 + opal/mca/backtrace/base/backtrace_component.c | 40 + opal/mca/backtrace/base/base.h | 38 + opal/mca/backtrace/base/owner.txt | 7 + opal/mca/backtrace/configure.m4 | 21 + opal/mca/backtrace/execinfo/Makefile.am | 23 + .../backtrace/execinfo/backtrace_execinfo.c | 81 + .../execinfo/backtrace_execinfo_component.c | 41 + opal/mca/backtrace/execinfo/configure.m4 | 42 + opal/mca/backtrace/execinfo/owner.txt | 7 + opal/mca/backtrace/none/Makefile.am | 23 + opal/mca/backtrace/none/backtrace_none.c | 40 + .../backtrace/none/backtrace_none_component.c | 45 + opal/mca/backtrace/none/configure.m4 | 34 + opal/mca/backtrace/none/owner.txt | 7 + opal/mca/backtrace/printstack/Makefile.am | 23 + .../printstack/backtrace_printstack.c | 54 + .../backtrace_printstack_component.c | 41 + opal/mca/backtrace/printstack/configure.m4 | 43 + opal/mca/backtrace/printstack/owner.txt | 7 + opal/mca/base/Makefile.am | 69 + opal/mca/base/base.h | 254 + opal/mca/base/help-mca-base.txt | 61 + opal/mca/base/help-mca-var.txt | 139 + opal/mca/base/mca_base_close.c | 67 + opal/mca/base/mca_base_cmd_line.c | 237 + opal/mca/base/mca_base_component_compare.c | 152 + opal/mca/base/mca_base_component_find.c | 380 + opal/mca/base/mca_base_component_repository.c | 571 ++ opal/mca/base/mca_base_component_repository.h | 132 + opal/mca/base/mca_base_components_close.c | 93 + opal/mca/base/mca_base_components_open.c | 169 + opal/mca/base/mca_base_components_register.c | 161 + opal/mca/base/mca_base_components_select.c | 147 + opal/mca/base/mca_base_framework.c | 241 + opal/mca/base/mca_base_framework.h | 242 + opal/mca/base/mca_base_list.c | 64 + opal/mca/base/mca_base_open.c | 274 + opal/mca/base/mca_base_parse_paramfile.c | 84 + opal/mca/base/mca_base_pvar.c | 998 ++ opal/mca/base/mca_base_pvar.h | 569 ++ opal/mca/base/mca_base_var.c | 2220 +++++ opal/mca/base/mca_base_var.h | 747 ++ opal/mca/base/mca_base_var_enum.c | 753 ++ opal/mca/base/mca_base_var_enum.h | 260 + opal/mca/base/mca_base_var_group.c | 570 ++ opal/mca/base/mca_base_var_group.h | 179 + opal/mca/base/mca_base_vari.h | 182 + opal/mca/btl/Makefile.am | 39 + opal/mca/btl/base/Makefile.am | 29 + opal/mca/btl/base/base.h | 83 + opal/mca/btl/base/btl_base_error.c | 81 + opal/mca/btl/base/btl_base_error.h | 99 + opal/mca/btl/base/btl_base_frame.c | 221 + opal/mca/btl/base/btl_base_mca.c | 198 + opal/mca/btl/base/btl_base_select.c | 179 + opal/mca/btl/base/help-mpi-btl-base.txt | 31 + opal/mca/btl/base/owner.txt | 7 + opal/mca/btl/btl.h | 1253 +++ opal/mca/btl/openib/Makefile.am | 131 + opal/mca/btl/openib/btl-openib-benchmark | 19 + opal/mca/btl/openib/btl_openib.c | 2010 ++++ opal/mca/btl/openib/btl_openib.h | 927 ++ opal/mca/btl/openib/btl_openib_async.c | 508 + opal/mca/btl/openib/btl_openib_async.h | 59 + opal/mca/btl/openib/btl_openib_atomic.c | 140 + opal/mca/btl/openib/btl_openib_component.c | 3918 ++++++++ opal/mca/btl/openib/btl_openib_eager_rdma.h | 118 + opal/mca/btl/openib/btl_openib_endpoint.c | 1046 ++ opal/mca/btl/openib/btl_openib_endpoint.h | 718 ++ opal/mca/btl/openib/btl_openib_frag.c | 222 + opal/mca/btl/openib/btl_openib_frag.h | 422 + opal/mca/btl/openib/btl_openib_get.c | 167 + opal/mca/btl/openib/btl_openib_ini.c | 678 ++ opal/mca/btl/openib/btl_openib_ini.h | 70 + opal/mca/btl/openib/btl_openib_ip.c | 446 + opal/mca/btl/openib/btl_openib_ip.h | 55 + opal/mca/btl/openib/btl_openib_lex.h | 74 + opal/mca/btl/openib/btl_openib_lex.l | 148 + opal/mca/btl/openib/btl_openib_mca.c | 784 ++ opal/mca/btl/openib/btl_openib_mca.h | 22 + opal/mca/btl/openib/btl_openib_proc.c | 418 + opal/mca/btl/openib/btl_openib_proc.h | 115 + opal/mca/btl/openib/btl_openib_put.c | 175 + opal/mca/btl/openib/btl_openib_xrc.c | 209 + opal/mca/btl/openib/btl_openib_xrc.h | 58 + opal/mca/btl/openib/common_sym_whitelist.txt | 4 + opal/mca/btl/openib/configure.m4 | 117 + opal/mca/btl/openib/connect/base.h | 105 + .../openib/connect/btl_openib_connect_base.c | 519 + .../openib/connect/btl_openib_connect_empty.c | 46 + .../openib/connect/btl_openib_connect_empty.h | 20 + .../connect/btl_openib_connect_rdmacm.c | 2306 +++++ .../connect/btl_openib_connect_rdmacm.h | 20 + .../openib/connect/btl_openib_connect_sl.c | 469 + .../openib/connect/btl_openib_connect_sl.h | 26 + .../openib/connect/btl_openib_connect_udcm.c | 3016 ++++++ .../openib/connect/btl_openib_connect_udcm.h | 22 + opal/mca/btl/openib/connect/connect.h | 355 + .../connect/help-mpi-btl-openib-cpc-base.txt | 57 + .../help-mpi-btl-openib-cpc-rdmacm.txt | 67 + opal/mca/btl/openib/help-mpi-btl-openib.txt | 708 ++ .../openib/mca-btl-openib-device-params.ini | 326 + opal/mca/btl/openib/owner.txt | 7 + opal/mca/btl/portals4/Makefile.am | 58 + opal/mca/btl/portals4/btl_portals4.c | 778 ++ opal/mca/btl/portals4/btl_portals4.h | 284 + .../mca/btl/portals4/btl_portals4_component.c | 784 ++ opal/mca/btl/portals4/btl_portals4_endpoint.h | 41 + opal/mca/btl/portals4/btl_portals4_frag.c | 95 + opal/mca/btl/portals4/btl_portals4_frag.h | 138 + opal/mca/btl/portals4/btl_portals4_rdma.c | 105 + opal/mca/btl/portals4/btl_portals4_recv.c | 102 + opal/mca/btl/portals4/btl_portals4_recv.h | 124 + opal/mca/btl/portals4/btl_portals4_send.c | 105 + opal/mca/btl/portals4/configure.m4 | 64 + opal/mca/btl/portals4/owner.txt | 7 + opal/mca/btl/scif/Makefile.am | 50 + opal/mca/btl/scif/btl_scif.h | 249 + opal/mca/btl/scif/btl_scif_add_procs.c | 259 + opal/mca/btl/scif/btl_scif_component.c | 386 + opal/mca/btl/scif/btl_scif_endpoint.c | 301 + opal/mca/btl/scif/btl_scif_endpoint.h | 110 + opal/mca/btl/scif/btl_scif_frag.c | 31 + opal/mca/btl/scif/btl_scif_frag.h | 95 + opal/mca/btl/scif/btl_scif_get.c | 75 + opal/mca/btl/scif/btl_scif_module.c | 308 + opal/mca/btl/scif/btl_scif_put.c | 72 + opal/mca/btl/scif/btl_scif_send.c | 299 + opal/mca/btl/scif/configure.m4 | 47 + opal/mca/btl/scif/owner.txt | 7 + opal/mca/btl/self/Makefile.am | 48 + opal/mca/btl/self/btl_self.c | 301 + opal/mca/btl/self/btl_self.h | 61 + opal/mca/btl/self/btl_self_component.c | 193 + opal/mca/btl/self/btl_self_frag.c | 68 + opal/mca/btl/self/btl_self_frag.h | 75 + opal/mca/btl/self/owner.txt | 7 + opal/mca/btl/sm/Makefile.am | 48 + opal/mca/btl/sm/btl_sm_component.c | 85 + opal/mca/btl/sm/configure.m4 | 26 + opal/mca/btl/sm/help-mpi-btl-sm.txt | 24 + opal/mca/btl/sm/owner.txt | 7 + opal/mca/btl/smcuda/Makefile.am | 63 + opal/mca/btl/smcuda/README | 113 + opal/mca/btl/smcuda/btl_smcuda.c | 1345 +++ opal/mca/btl/smcuda/btl_smcuda.h | 546 ++ opal/mca/btl/smcuda/btl_smcuda_component.c | 1148 +++ opal/mca/btl/smcuda/btl_smcuda_endpoint.h | 59 + opal/mca/btl/smcuda/btl_smcuda_fifo.h | 109 + opal/mca/btl/smcuda/btl_smcuda_frag.c | 83 + opal/mca/btl/smcuda/btl_smcuda_frag.h | 122 + opal/mca/btl/smcuda/configure.m4 | 29 + opal/mca/btl/smcuda/help-mpi-btl-smcuda.txt | 27 + opal/mca/btl/smcuda/owner.txt | 7 + opal/mca/btl/tcp/Makefile.am | 66 + opal/mca/btl/tcp/btl_tcp.c | 533 ++ opal/mca/btl/tcp/btl_tcp.h | 355 + opal/mca/btl/tcp/btl_tcp_addr.h | 72 + opal/mca/btl/tcp/btl_tcp_component.c | 1343 +++ opal/mca/btl/tcp/btl_tcp_endpoint.c | 989 ++ opal/mca/btl/tcp/btl_tcp_endpoint.h | 100 + opal/mca/btl/tcp/btl_tcp_frag.c | 310 + opal/mca/btl/tcp/btl_tcp_frag.h | 132 + opal/mca/btl/tcp/btl_tcp_ft.c | 54 + opal/mca/btl/tcp/btl_tcp_ft.h | 34 + opal/mca/btl/tcp/btl_tcp_hdr.h | 58 + opal/mca/btl/tcp/btl_tcp_proc.c | 902 ++ opal/mca/btl/tcp/btl_tcp_proc.h | 115 + opal/mca/btl/tcp/configure.m4 | 40 + opal/mca/btl/tcp/help-mpi-btl-tcp.txt | 102 + opal/mca/btl/tcp/owner.txt | 7 + opal/mca/btl/template/.opal_ignore | 0 opal/mca/btl/template/.opal_unignore | 3 + opal/mca/btl/template/Makefile.am | 59 + opal/mca/btl/template/btl_template.c | 426 + opal/mca/btl/template/btl_template.h | 377 + .../mca/btl/template/btl_template_component.c | 156 + opal/mca/btl/template/btl_template_endpoint.c | 55 + opal/mca/btl/template/btl_template_endpoint.h | 50 + opal/mca/btl/template/btl_template_frag.c | 47 + opal/mca/btl/template/btl_template_frag.h | 106 + opal/mca/btl/template/btl_template_proc.c | 158 + opal/mca/btl/template/btl_template_proc.h | 61 + .../mca/btl/template/netpipe-btl-template.txt | 12 + opal/mca/btl/template/owner.txt | 7 + .../mca/btl/template/sample-btl-template.conf | 5 + opal/mca/btl/ugni/Makefile.am | 59 + opal/mca/btl/ugni/btl_ugni.h | 538 ++ opal/mca/btl/ugni/btl_ugni_add_procs.c | 540 ++ opal/mca/btl/ugni/btl_ugni_atomic.c | 190 + opal/mca/btl/ugni/btl_ugni_component.c | 736 ++ opal/mca/btl/ugni/btl_ugni_device.h | 431 + opal/mca/btl/ugni/btl_ugni_endpoint.c | 447 + opal/mca/btl/ugni/btl_ugni_endpoint.h | 204 + opal/mca/btl/ugni/btl_ugni_frag.c | 62 + opal/mca/btl/ugni/btl_ugni_frag.h | 259 + opal/mca/btl/ugni/btl_ugni_get.c | 180 + opal/mca/btl/ugni/btl_ugni_init.c | 306 + opal/mca/btl/ugni/btl_ugni_module.c | 327 + opal/mca/btl/ugni/btl_ugni_prepare.h | 200 + opal/mca/btl/ugni/btl_ugni_progress_thread.c | 132 + opal/mca/btl/ugni/btl_ugni_put.c | 27 + opal/mca/btl/ugni/btl_ugni_rdma.h | 167 + opal/mca/btl/ugni/btl_ugni_send.c | 199 + opal/mca/btl/ugni/btl_ugni_smsg.c | 242 + opal/mca/btl/ugni/btl_ugni_smsg.h | 129 + opal/mca/btl/ugni/configure.m4 | 54 + opal/mca/btl/ugni/owner.txt | 7 + opal/mca/btl/usnic/Makefile.am | 106 + opal/mca/btl/usnic/README.test | 74 + opal/mca/btl/usnic/README.txt | 374 + opal/mca/btl/usnic/btl_usnic.h | 286 + opal/mca/btl/usnic/btl_usnic_ack.c | 309 + opal/mca/btl/usnic/btl_usnic_ack.h | 107 + opal/mca/btl/usnic/btl_usnic_cagent.c | 1265 +++ opal/mca/btl/usnic/btl_usnic_cclient.c | 326 + opal/mca/btl/usnic/btl_usnic_compat.c | 826 ++ opal/mca/btl/usnic/btl_usnic_compat.h | 380 + opal/mca/btl/usnic/btl_usnic_component.c | 1553 +++ opal/mca/btl/usnic/btl_usnic_connectivity.h | 297 + opal/mca/btl/usnic/btl_usnic_endpoint.c | 177 + opal/mca/btl/usnic/btl_usnic_endpoint.h | 205 + opal/mca/btl/usnic/btl_usnic_frag.c | 313 + opal/mca/btl/usnic/btl_usnic_frag.h | 626 ++ opal/mca/btl/usnic/btl_usnic_graph.c | 1048 ++ opal/mca/btl/usnic/btl_usnic_graph.h | 163 + opal/mca/btl/usnic/btl_usnic_hwloc.c | 234 + opal/mca/btl/usnic/btl_usnic_hwloc.h | 22 + opal/mca/btl/usnic/btl_usnic_map.c | 275 + opal/mca/btl/usnic/btl_usnic_mca.c | 329 + opal/mca/btl/usnic/btl_usnic_module.c | 2606 +++++ opal/mca/btl/usnic/btl_usnic_module.h | 298 + opal/mca/btl/usnic/btl_usnic_proc.c | 822 ++ opal/mca/btl/usnic/btl_usnic_proc.h | 100 + opal/mca/btl/usnic/btl_usnic_recv.c | 374 + opal/mca/btl/usnic/btl_usnic_recv.h | 448 + opal/mca/btl/usnic/btl_usnic_send.c | 192 + opal/mca/btl/usnic/btl_usnic_send.h | 328 + opal/mca/btl/usnic/btl_usnic_stats.c | 555 ++ opal/mca/btl/usnic/btl_usnic_stats.h | 87 + opal/mca/btl/usnic/btl_usnic_test.c | 127 + opal/mca/btl/usnic/btl_usnic_test.h | 95 + opal/mca/btl/usnic/btl_usnic_util.c | 206 + opal/mca/btl/usnic/btl_usnic_util.h | 126 + opal/mca/btl/usnic/configure.m4 | 145 + opal/mca/btl/usnic/help-mpi-btl-usnic.txt | 342 + opal/mca/btl/usnic/owner.txt | 7 + .../btl/usnic/test/btl_usnic_component_test.h | 54 + .../mca/btl/usnic/test/btl_usnic_graph_test.h | 1070 +++ opal/mca/btl/usnic/test/usnic_btl_run_tests.c | 102 + opal/mca/btl/vader/Makefile.am | 67 + opal/mca/btl/vader/btl_vader.h | 283 + opal/mca/btl/vader/btl_vader_component.c | 704 ++ opal/mca/btl/vader/btl_vader_endpoint.h | 119 + opal/mca/btl/vader/btl_vader_fbox.h | 271 + opal/mca/btl/vader/btl_vader_fifo.h | 227 + opal/mca/btl/vader/btl_vader_frag.c | 81 + opal/mca/btl/vader/btl_vader_frag.h | 127 + opal/mca/btl/vader/btl_vader_get.c | 157 + opal/mca/btl/vader/btl_vader_knem.c | 202 + opal/mca/btl/vader/btl_vader_knem.h | 38 + opal/mca/btl/vader/btl_vader_module.c | 571 ++ opal/mca/btl/vader/btl_vader_put.c | 136 + opal/mca/btl/vader/btl_vader_send.c | 83 + opal/mca/btl/vader/btl_vader_sendi.c | 117 + opal/mca/btl/vader/btl_vader_xpmem.c | 184 + opal/mca/btl/vader/btl_vader_xpmem.h | 73 + opal/mca/btl/vader/configure.m4 | 53 + opal/mca/btl/vader/help-btl-vader.txt | 137 + opal/mca/btl/vader/owner.txt | 7 + opal/mca/common/Makefile.am | 25 + opal/mca/common/cuda/Makefile.am | 117 + opal/mca/common/cuda/common_cuda.c | 2065 ++++ opal/mca/common/cuda/common_cuda.h | 111 + opal/mca/common/cuda/configure.m4 | 34 + opal/mca/common/cuda/help-mpi-common-cuda.txt | 212 + opal/mca/common/cuda/owner.txt | 7 + opal/mca/common/libfabric/Makefile.am | 102 + opal/mca/common/libfabric/common_libfabric.c | 21 + opal/mca/common/libfabric/common_libfabric.h | 16 + opal/mca/common/libfabric/configure.m4 | 30 + opal/mca/common/libfabric/owner.txt | 7 + opal/mca/common/sm/Makefile.am | 119 + opal/mca/common/sm/common_sm.c | 302 + opal/mca/common/sm/common_sm.h | 155 + opal/mca/common/sm/common_sm_mpool.c | 273 + opal/mca/common/sm/common_sm_mpool.h | 62 + opal/mca/common/sm/configure.m4 | 30 + opal/mca/common/sm/help-mpi-common-sm.txt | 34 + opal/mca/common/sm/owner.txt | 7 + opal/mca/common/verbs/Makefile.am | 83 + opal/mca/common/verbs/common_verbs.h | 186 + opal/mca/common/verbs/common_verbs_basics.c | 107 + opal/mca/common/verbs/common_verbs_devlist.c | 95 + .../verbs/common_verbs_find_max_inline.c | 108 + .../common/verbs/common_verbs_find_ports.c | 505 + opal/mca/common/verbs/common_verbs_mca.c | 60 + opal/mca/common/verbs/common_verbs_port.c | 116 + opal/mca/common/verbs/common_verbs_qp_type.c | 104 + opal/mca/common/verbs/configure.m4 | 41 + .../common/verbs/help-opal-common-verbs.txt | 54 + opal/mca/common/verbs/owner.txt | 7 + opal/mca/common/verbs_usnic/Makefile.am | 40 + .../common/verbs_usnic/common_verbs_usnic.h | 27 + .../verbs_usnic/common_verbs_usnic_fake.c | 135 + opal/mca/common/verbs_usnic/configure.m4 | 84 + opal/mca/common/verbs_usnic/owner.txt | 7 + opal/mca/compress/Makefile.am | 36 + opal/mca/compress/base/Makefile.am | 20 + opal/mca/compress/base/base.h | 77 + opal/mca/compress/base/compress_base_close.c | 36 + opal/mca/compress/base/compress_base_fns.c | 135 + opal/mca/compress/base/compress_base_open.c | 63 + opal/mca/compress/base/compress_base_select.c | 69 + opal/mca/compress/base/owner.txt | 7 + opal/mca/compress/bzip/Makefile.am | 38 + opal/mca/compress/bzip/compress_bzip.h | 63 + .../compress/bzip/compress_bzip_component.c | 149 + opal/mca/compress/bzip/compress_bzip_module.c | 239 + opal/mca/compress/bzip/owner.txt | 7 + opal/mca/compress/compress.h | 137 + opal/mca/compress/gzip/Makefile.am | 38 + opal/mca/compress/gzip/compress_gzip.h | 63 + .../compress/gzip/compress_gzip_component.c | 150 + opal/mca/compress/gzip/compress_gzip_module.c | 242 + opal/mca/compress/gzip/owner.txt | 7 + opal/mca/crs/Makefile.am | 50 + opal/mca/crs/base/Makefile.am | 27 + opal/mca/crs/base/base.h | 136 + opal/mca/crs/base/crs_base_close.c | 41 + opal/mca/crs/base/crs_base_fns.c | 452 + opal/mca/crs/base/crs_base_open.c | 91 + opal/mca/crs/base/crs_base_select.c | 78 + opal/mca/crs/base/owner.txt | 7 + opal/mca/crs/blcr/.opal_ignore | 0 opal/mca/crs/blcr/Makefile.am | 51 + opal/mca/crs/blcr/configure.m4 | 204 + opal/mca/crs/blcr/crs_blcr.h | 84 + opal/mca/crs/blcr/crs_blcr_component.c | 145 + opal/mca/crs/blcr/crs_blcr_module.c | 865 ++ opal/mca/crs/blcr/help-opal-crs-blcr.txt | 28 + opal/mca/crs/criu/.opal_ignore | 0 opal/mca/crs/criu/Makefile.am | 51 + opal/mca/crs/criu/configure.m4 | 93 + opal/mca/crs/criu/crs_criu.h | 88 + opal/mca/crs/criu/crs_criu_component.c | 213 + opal/mca/crs/criu/crs_criu_module.c | 261 + opal/mca/crs/criu/owner.txt | 7 + opal/mca/crs/crs.h | 307 + opal/mca/crs/dmtcp/.opal_ignore | 0 opal/mca/crs/dmtcp/Makefile.am | 43 + opal/mca/crs/dmtcp/configure.m4 | 140 + opal/mca/crs/dmtcp/crs_dmtcp.h | 87 + opal/mca/crs/dmtcp/crs_dmtcp_component.c | 133 + opal/mca/crs/dmtcp/crs_dmtcp_module.c | 709 ++ opal/mca/crs/dmtcp/owner.txt | 7 + opal/mca/crs/none/Makefile.am | 42 + opal/mca/crs/none/crs_none.h | 74 + opal/mca/crs/none/crs_none_component.c | 138 + opal/mca/crs/none/crs_none_module.c | 194 + opal/mca/crs/none/help-opal-crs-none.txt | 20 + opal/mca/crs/none/owner.txt | 7 + opal/mca/crs/opal_crs.7in | 179 + opal/mca/crs/self/Makefile.am | 46 + opal/mca/crs/self/configure.m4 | 46 + opal/mca/crs/self/crs_self.h | 96 + opal/mca/crs/self/crs_self_component.c | 182 + opal/mca/crs/self/crs_self_module.c | 755 ++ opal/mca/crs/self/help-opal-crs-self.txt | 49 + opal/mca/crs/self/owner.txt | 7 + opal/mca/dl/Makefile.am | 36 + opal/mca/dl/base/Makefile.am | 17 + opal/mca/dl/base/base.h | 106 + opal/mca/dl/base/dl_base_close.c | 25 + opal/mca/dl/base/dl_base_fns.c | 68 + opal/mca/dl/base/dl_base_open.c | 54 + opal/mca/dl/base/dl_base_select.c | 55 + opal/mca/dl/configure.m4 | 77 + opal/mca/dl/dl.h | 186 + opal/mca/dl/dlopen/Makefile.am | 23 + opal/mca/dl/dlopen/configure.m4 | 56 + opal/mca/dl/dlopen/dl_dlopen.h | 40 + opal/mca/dl/dlopen/dl_dlopen_component.c | 127 + opal/mca/dl/dlopen/dl_dlopen_module.c | 274 + opal/mca/dl/libltdl/Makefile.am | 26 + opal/mca/dl/libltdl/configure.m4 | 124 + opal/mca/dl/libltdl/dl_libltdl.h | 50 + opal/mca/dl/libltdl/dl_libltdl_component.c | 157 + opal/mca/dl/libltdl/dl_libltdl_module.c | 133 + opal/mca/event/Makefile.am | 27 + opal/mca/event/OMPI_LIBEVENT_README.txt | 26 + opal/mca/event/base/Makefile.am | 15 + opal/mca/event/base/README.openmpi | 71 + opal/mca/event/base/base.h | 34 + opal/mca/event/base/event_base_frame.c | 110 + opal/mca/event/base/owner.txt | 7 + opal/mca/event/configure.m4 | 65 + opal/mca/event/event.h | 78 + opal/mca/event/external/Makefile.am | 25 + opal/mca/event/external/configure.m4 | 170 + .../event/external/event_external_component.c | 116 + .../event/external/event_external_module.c | 89 + opal/mca/event/external/external.h | 120 + opal/mca/event/external/owner.txt | 7 + opal/mca/event/libevent2022/Makefile.am | 87 + opal/mca/event/libevent2022/autogen.subdirs | 1 + opal/mca/event/libevent2022/configure.m4 | 209 + .../mca/event/libevent2022/libevent/ChangeLog | 1396 +++ opal/mca/event/libevent2022/libevent/Doxyfile | 257 + opal/mca/event/libevent2022/libevent/LICENSE | 74 + .../event/libevent2022/libevent/Makefile.am | 286 + .../libevent2022/libevent/Makefile.nmake | 47 + opal/mca/event/libevent2022/libevent/README | 198 + .../libevent/WIN32-Code/event2/event-config.h | 363 + .../libevent2022/libevent/WIN32-Code/tree.h | 1354 +++ .../event/libevent2022/libevent/arc4random.c | 561 ++ .../event/libevent2022/libevent/autogen.sh | 15 + opal/mca/event/libevent2022/libevent/buffer.c | 3122 ++++++ .../event/libevent2022/libevent/buffer_iocp.c | 325 + .../libevent/bufferevent-internal.h | 410 + .../event/libevent2022/libevent/bufferevent.c | 875 ++ .../libevent2022/libevent/bufferevent_async.c | 690 ++ .../libevent/bufferevent_filter.c | 511 + .../libevent/bufferevent_openssl.c | 1454 +++ .../libevent2022/libevent/bufferevent_pair.c | 334 + .../libevent/bufferevent_ratelim.c | 1011 ++ .../libevent2022/libevent/bufferevent_sock.c | 699 ++ .../libevent/changelist-internal.h | 101 + .../libevent2022/libevent/compat/sys/queue.h | 488 + .../event/libevent2022/libevent/configure.ac | 1037 ++ .../libevent2022/libevent/defer-internal.h | 100 + .../mca/event/libevent2022/libevent/devpoll.c | 306 + opal/mca/event/libevent2022/libevent/epoll.c | 473 + .../event/libevent2022/libevent/epoll_sub.c | 65 + .../libevent2022/libevent/evbuffer-internal.h | 293 + opal/mca/event/libevent2022/libevent/evdns.c | 4673 +++++++++ opal/mca/event/libevent2022/libevent/evdns.h | 45 + .../libevent2022/libevent/event-internal.h | 368 + opal/mca/event/libevent2022/libevent/event.c | 2948 ++++++ opal/mca/event/libevent2022/libevent/event.h | 85 + .../event/libevent2022/libevent/event_iocp.c | 293 + .../libevent2022/libevent/event_rpcgen.py | 1717 ++++ .../libevent2022/libevent/event_tagging.c | 596 ++ opal/mca/event/libevent2022/libevent/evhttp.h | 45 + .../libevent2022/libevent/evmap-internal.h | 92 + opal/mca/event/libevent2022/libevent/evmap.c | 799 ++ opal/mca/event/libevent2022/libevent/evport.c | 473 + .../libevent2022/libevent/evrpc-internal.h | 204 + opal/mca/event/libevent2022/libevent/evrpc.c | 1174 +++ opal/mca/event/libevent2022/libevent/evrpc.h | 45 + .../libevent2022/libevent/evsignal-internal.h | 64 + .../libevent2022/libevent/evthread-internal.h | 382 + .../event/libevent2022/libevent/evthread.c | 445 + .../libevent2022/libevent/evthread_pthread.c | 189 + .../libevent2022/libevent/evthread_win32.c | 339 + opal/mca/event/libevent2022/libevent/evutil.c | 2190 +++++ opal/mca/event/libevent2022/libevent/evutil.h | 39 + .../event/libevent2022/libevent/evutil_rand.c | 185 + .../event/libevent2022/libevent/ht-internal.h | 484 + .../libevent2022/libevent/http-internal.h | 195 + opal/mca/event/libevent2022/libevent/http.c | 4529 +++++++++ .../libevent2022/libevent/include/Makefile.am | 50 + .../libevent/include/event2/buffer.h | 842 ++ .../libevent/include/event2/buffer_compat.h | 110 + .../libevent/include/event2/bufferevent.h | 821 ++ .../include/event2/bufferevent_compat.h | 100 + .../libevent/include/event2/bufferevent_ssl.h | 107 + .../include/event2/bufferevent_struct.h | 116 + .../libevent/include/event2/dns.h | 643 ++ .../libevent/include/event2/dns_compat.h | 336 + .../libevent/include/event2/dns_struct.h | 80 + .../libevent/include/event2/event.h | 1212 +++ .../libevent/include/event2/event_compat.h | 220 + .../libevent/include/event2/event_struct.h | 141 + .../libevent/include/event2/http.h | 863 ++ .../libevent/include/event2/http_compat.h | 90 + .../libevent/include/event2/http_struct.h | 130 + .../libevent/include/event2/keyvalq_struct.h | 80 + .../libevent/include/event2/listener.h | 143 + .../libevent/include/event2/rpc.h | 596 ++ .../libevent/include/event2/rpc_compat.h | 61 + .../libevent/include/event2/rpc_struct.h | 100 + .../libevent/include/event2/tag.h | 124 + .../libevent/include/event2/tag_compat.h | 49 + .../libevent/include/event2/thread.h | 239 + .../libevent/include/event2/util.h | 705 ++ .../libevent2022/libevent/iocp-internal.h | 201 + .../libevent2022/libevent/ipv6-internal.h | 81 + opal/mca/event/libevent2022/libevent/kqueue.c | 475 + .../libevent2022/libevent/libevent.pc.in | 16 + .../libevent/libevent_openssl.pc.in | 16 + .../libevent/libevent_pthreads.pc.in | 16 + .../event/libevent2022/libevent/listener.c | 886 ++ .../libevent2022/libevent/log-internal.h | 63 + opal/mca/event/libevent2022/libevent/log.c | 228 + .../libevent/m4/ac_backport_259_ssizet.m4 | 3 + .../libevent2022/libevent/m4/acx_pthread.m4 | 279 + .../libevent/make-event-config.sed | 23 + .../libevent2022/libevent/minheap-internal.h | 160 + .../event/libevent2022/libevent/mm-internal.h | 61 + .../event/libevent2022/libevent/opal_rename.h | 569 ++ opal/mca/event/libevent2022/libevent/poll.c | 333 + .../libevent2022/libevent/ratelim-internal.h | 105 + .../libevent2022/libevent/sample/Makefile.am | 29 + .../libevent/sample/dns-example.c | 248 + .../libevent2022/libevent/sample/event-test.c | 143 + .../libevent/sample/hello-world.c | 141 + .../libevent/sample/http-server.c | 405 + .../libevent2022/libevent/sample/le-proxy.c | 278 + .../libevent/sample/signal-test.c | 76 + .../libevent2022/libevent/sample/time-test.c | 107 + opal/mca/event/libevent2022/libevent/select.c | 333 + opal/mca/event/libevent2022/libevent/signal.c | 445 + .../libevent2022/libevent/strlcpy-internal.h | 22 + .../mca/event/libevent2022/libevent/strlcpy.c | 74 + .../libevent2022/libevent/test/Makefile.am | 105 + .../libevent2022/libevent/test/Makefile.nmake | 61 + .../event/libevent2022/libevent/test/bench.c | 196 + .../libevent/test/bench_cascade.c | 179 + .../libevent2022/libevent/test/bench_http.c | 191 + .../libevent/test/bench_httpclient.c | 223 + .../libevent2022/libevent/test/regress.c | 2489 +++++ .../libevent2022/libevent/test/regress.gen.c | 1225 +++ .../libevent2022/libevent/test/regress.gen.h | 207 + .../libevent2022/libevent/test/regress.h | 129 + .../libevent2022/libevent/test/regress.rpc | 25 + .../libevent/test/regress_buffer.c | 1677 ++++ .../libevent/test/regress_bufferevent.c | 843 ++ .../libevent2022/libevent/test/regress_dns.c | 1855 ++++ .../libevent2022/libevent/test/regress_et.c | 207 + .../libevent2022/libevent/test/regress_http.c | 3625 +++++++ .../libevent2022/libevent/test/regress_iocp.c | 352 + .../libevent/test/regress_listener.c | 214 + .../libevent2022/libevent/test/regress_main.c | 420 + .../libevent/test/regress_minheap.c | 98 + .../libevent2022/libevent/test/regress_rpc.c | 898 ++ .../libevent2022/libevent/test/regress_ssl.c | 472 + .../libevent/test/regress_testutils.c | 220 + .../libevent/test/regress_testutils.h | 66 + .../libevent/test/regress_thread.c | 511 + .../libevent2022/libevent/test/regress_util.c | 1094 +++ .../libevent2022/libevent/test/regress_zlib.c | 345 + .../libevent/test/rpcgen_wrapper.sh | 49 + .../libevent/test/test-changelist.c | 223 + .../libevent2022/libevent/test/test-eof.c | 124 + .../libevent2022/libevent/test/test-init.c | 65 + .../libevent2022/libevent/test/test-ratelim.c | 478 + .../libevent2022/libevent/test/test-time.c | 113 + .../libevent2022/libevent/test/test-weof.c | 117 + .../event/libevent2022/libevent/test/test.sh | 163 + .../libevent2022/libevent/test/tinytest.c | 400 + .../libevent2022/libevent/test/tinytest.h | 87 + .../libevent/test/tinytest_local.h | 12 + .../libevent/test/tinytest_macros.h | 184 + .../libevent2022/libevent/util-internal.h | 329 + .../libevent2022/libevent/whatsnew-2.0.txt | 609 ++ .../event/libevent2022/libevent/win32select.c | 377 + opal/mca/event/libevent2022/libevent2022.h | 155 + .../libevent2022/libevent2022_component.c | 202 + .../event/libevent2022/libevent2022_module.c | 138 + opal/mca/event/libevent2022/owner.txt | 7 + opal/mca/hwloc/Makefile.am | 31 + opal/mca/hwloc/README.txt | 20 + opal/mca/hwloc/autogen.options | 13 + opal/mca/hwloc/base/Makefile.am | 21 + opal/mca/hwloc/base/base.h | 290 + opal/mca/hwloc/base/help-opal-hwloc-base.txt | 61 + opal/mca/hwloc/base/hwloc_base_dt.c | 326 + opal/mca/hwloc/base/hwloc_base_frame.c | 555 ++ opal/mca/hwloc/base/hwloc_base_maffinity.c | 174 + .../hwloc/base/hwloc_base_proc_mempolicy.c | 74 + opal/mca/hwloc/base/hwloc_base_util.c | 2455 +++++ opal/mca/hwloc/base/owner.txt | 7 + opal/mca/hwloc/configure.m4 | 154 + opal/mca/hwloc/external/Makefile.am | 31 + opal/mca/hwloc/external/configure.m4 | 221 + opal/mca/hwloc/external/external.h | 48 + .../hwloc/external/hwloc_external_component.c | 64 + opal/mca/hwloc/external/owner.txt | 7 + opal/mca/hwloc/hwloc-internal.h | 223 + opal/mca/hwloc/hwloc1117/Makefile.am | 87 + opal/mca/hwloc/hwloc1117/README-ompi.txt | 1 + opal/mca/hwloc/hwloc1117/configure.m4 | 200 + opal/mca/hwloc/hwloc1117/hwloc/AUTHORS | 10 + opal/mca/hwloc/hwloc1117/hwloc/COPYING | 38 + opal/mca/hwloc/hwloc1117/hwloc/Makefile.am | 73 + opal/mca/hwloc/hwloc1117/hwloc/NEWS | 1373 +++ opal/mca/hwloc/hwloc1117/hwloc/README | 75 + opal/mca/hwloc/hwloc1117/hwloc/VERSION | 46 + .../hwloc1117/hwloc/config/distscript.sh | 131 + .../mca/hwloc/hwloc1117/hwloc/config/hwloc.m4 | 1409 +++ .../hwloc/config/hwloc_check_attributes.m4 | 533 ++ .../hwloc/config/hwloc_check_vendor.m4 | 245 + .../hwloc/config/hwloc_check_visibility.m4 | 131 + .../hwloc/config/hwloc_components.m4 | 66 + .../hwloc/config/hwloc_get_version.sh | 99 + .../hwloc1117/hwloc/config/hwloc_internal.m4 | 439 + .../hwloc/hwloc1117/hwloc/config/hwloc_pkg.m4 | 207 + .../hwloc/hwloc1117/hwloc/config/test-driver | 148 + opal/mca/hwloc/hwloc1117/hwloc/configure.ac | 243 + .../hwloc/contrib/hwloc-valgrind.supp | 144 + .../hwloc/contrib/systemd/README.txt | 4 + .../hwloc/contrib/windows/README.txt | 4 + opal/mca/hwloc/hwloc1117/hwloc/doc/README.txt | 4 + opal/mca/hwloc/hwloc1117/hwloc/hwloc.pc.in | 12 + .../hwloc/hwloc1117/hwloc/include/Makefile.am | 55 + .../mca/hwloc/hwloc1117/hwloc/include/hwloc.h | 2571 +++++ .../hwloc/include/hwloc/autogen/config.h.in | 201 + .../hwloc1117/hwloc/include/hwloc/bitmap.h | 376 + .../hwloc1117/hwloc/include/hwloc/cuda.h | 224 + .../hwloc1117/hwloc/include/hwloc/cudart.h | 184 + .../hwloc/include/hwloc/deprecated.h | 102 + .../hwloc1117/hwloc/include/hwloc/diff.h | 299 + .../hwloc/hwloc1117/hwloc/include/hwloc/gl.h | 134 + .../hwloc/include/hwloc/glibc-sched.h | 125 + .../hwloc1117/hwloc/include/hwloc/helper.h | 1311 +++ .../hwloc1117/hwloc/include/hwloc/inlines.h | 154 + .../hwloc1117/hwloc/include/hwloc/intel-mic.h | 143 + .../hwloc/include/hwloc/linux-libnuma.h | 355 + .../hwloc1117/hwloc/include/hwloc/linux.h | 77 + .../hwloc/include/hwloc/myriexpress.h | 127 + .../hwloc1117/hwloc/include/hwloc/nvml.h | 176 + .../hwloc1117/hwloc/include/hwloc/opencl.h | 199 + .../hwloc/include/hwloc/openfabrics-verbs.h | 157 + .../hwloc1117/hwloc/include/hwloc/plugins.h | 439 + .../hwloc1117/hwloc/include/hwloc/rename.h | 660 ++ .../hwloc/include/private/autogen/config.h.in | 732 ++ .../hwloc/include/private/components.h | 39 + .../hwloc/include/private/cpuid-x86.h | 86 + .../hwloc1117/hwloc/include/private/debug.h | 78 + .../hwloc1117/hwloc/include/private/misc.h | 409 + .../hwloc1117/hwloc/include/private/private.h | 343 + .../hwloc/include/private/solaris-chiptype.h | 60 + .../hwloc1117/hwloc/include/private/xml.h | 97 + .../mca/hwloc/hwloc1117/hwloc/src/Makefile.am | 236 + opal/mca/hwloc/hwloc1117/hwloc/src/base64.c | 306 + opal/mca/hwloc/hwloc1117/hwloc/src/bind.c | 879 ++ opal/mca/hwloc/hwloc1117/hwloc/src/bitmap.c | 1513 +++ .../hwloc/hwloc1117/hwloc/src/components.c | 822 ++ opal/mca/hwloc/hwloc1117/hwloc/src/diff.c | 408 + .../mca/hwloc/hwloc1117/hwloc/src/distances.c | 1080 +++ opal/mca/hwloc/hwloc1117/hwloc/src/dolib.c | 47 + opal/mca/hwloc/hwloc1117/hwloc/src/hwloc.dtd | 71 + opal/mca/hwloc/hwloc1117/hwloc/src/misc.c | 166 + .../hwloc/hwloc1117/hwloc/src/pci-common.c | 545 ++ .../hwloc/hwloc1117/hwloc/src/topology-aix.c | 872 ++ .../hwloc/hwloc1117/hwloc/src/topology-bgq.c | 282 + .../hwloc/hwloc1117/hwloc/src/topology-cuda.c | 250 + .../hwloc1117/hwloc/src/topology-custom.c | 100 + .../hwloc1117/hwloc/src/topology-darwin.c | 307 + .../hwloc/hwloc1117/hwloc/src/topology-fake.c | 61 + .../hwloc1117/hwloc/src/topology-freebsd.c | 253 + .../hwloc/hwloc1117/hwloc/src/topology-gl.c | 271 + .../hwloc1117/hwloc/src/topology-hardwired.c | 197 + .../hwloc/hwloc1117/hwloc/src/topology-hpux.c | 313 + .../hwloc1117/hwloc/src/topology-linux.c | 5678 +++++++++++ .../hwloc1117/hwloc/src/topology-netbsd.c | 214 + .../hwloc/hwloc1117/hwloc/src/topology-noos.c | 58 + .../hwloc/hwloc1117/hwloc/src/topology-nvml.c | 239 + .../hwloc1117/hwloc/src/topology-opencl.c | 346 + .../hwloc/hwloc1117/hwloc/src/topology-osf.c | 392 + .../hwloc/hwloc1117/hwloc/src/topology-pci.c | 346 + .../hwloc/src/topology-solaris-chiptype.c | 347 + .../hwloc1117/hwloc/src/topology-solaris.c | 824 ++ .../hwloc1117/hwloc/src/topology-synthetic.c | 1118 +++ .../hwloc1117/hwloc/src/topology-windows.c | 1140 +++ .../hwloc/hwloc1117/hwloc/src/topology-x86.c | 1232 +++ .../hwloc1117/hwloc/src/topology-xml-libxml.c | 549 ++ .../hwloc/src/topology-xml-nolibxml.c | 873 ++ .../hwloc/hwloc1117/hwloc/src/topology-xml.c | 1827 ++++ opal/mca/hwloc/hwloc1117/hwloc/src/topology.c | 3345 +++++++ .../mca/hwloc/hwloc1117/hwloc/src/traversal.c | 715 ++ .../hwloc/hwloc1117/hwloc/tests/README.txt | 4 + .../hwloc/hwloc1117/hwloc/utils/README.txt | 4 + opal/mca/hwloc/hwloc1117/hwloc1117.h | 48 + .../mca/hwloc/hwloc1117/hwloc1117_component.c | 55 + opal/mca/hwloc/hwloc1117/owner.txt | 7 + opal/mca/if/Makefile.am | 27 + opal/mca/if/base/Makefile.am | 14 + opal/mca/if/base/base.h | 29 + opal/mca/if/base/if_base_components.c | 105 + opal/mca/if/base/owner.txt | 7 + opal/mca/if/bsdx_ipv4/Makefile.am | 12 + opal/mca/if/bsdx_ipv4/configure.m4 | 46 + opal/mca/if/bsdx_ipv4/if_bsdx.c | 146 + opal/mca/if/bsdx_ipv4/owner.txt | 7 + opal/mca/if/bsdx_ipv6/Makefile.am | 12 + opal/mca/if/bsdx_ipv6/configure.m4 | 47 + opal/mca/if/bsdx_ipv6/if_bsdx_ipv6.c | 231 + opal/mca/if/bsdx_ipv6/owner.txt | 7 + opal/mca/if/if.h | 136 + opal/mca/if/linux_ipv6/Makefile.am | 12 + opal/mca/if/linux_ipv6/configure.m4 | 35 + opal/mca/if/linux_ipv6/if_linux_ipv6.c | 176 + opal/mca/if/linux_ipv6/owner.txt | 7 + opal/mca/if/posix_ipv4/Makefile.am | 12 + opal/mca/if/posix_ipv4/configure.m4 | 54 + opal/mca/if/posix_ipv4/if_posix.c | 298 + opal/mca/if/posix_ipv4/owner.txt | 7 + opal/mca/if/solaris_ipv6/Makefile.am | 12 + opal/mca/if/solaris_ipv6/configure.m4 | 32 + opal/mca/if/solaris_ipv6/if_solaris_ipv6.c | 165 + opal/mca/if/solaris_ipv6/owner.txt | 7 + opal/mca/installdirs/Makefile.am | 29 + opal/mca/installdirs/base/Makefile.am | 16 + opal/mca/installdirs/base/base.h | 39 + .../base/installdirs_base_components.c | 177 + .../base/installdirs_base_expand.c | 173 + opal/mca/installdirs/base/owner.txt | 7 + opal/mca/installdirs/config/Makefile.am | 21 + opal/mca/installdirs/config/configure.m4 | 29 + opal/mca/installdirs/config/install_dirs.h.in | 128 + .../config/opal_installdirs_config.c | 56 + opal/mca/installdirs/config/owner.txt | 7 + opal/mca/installdirs/configure.m4 | 11 + opal/mca/installdirs/env/Makefile.am | 16 + opal/mca/installdirs/env/configure.m4 | 27 + .../installdirs/env/opal_installdirs_env.c | 83 + opal/mca/installdirs/env/owner.txt | 7 + opal/mca/installdirs/installdirs.h | 97 + opal/mca/mca.h | 399 + opal/mca/memchecker/Makefile.am | 29 + opal/mca/memchecker/base/Makefile.am | 18 + opal/mca/memchecker/base/base.h | 251 + .../memchecker/base/memchecker_base_open.c | 33 + .../memchecker/base/memchecker_base_select.c | 71 + .../base/memchecker_base_wrappers.c | 88 + opal/mca/memchecker/base/owner.txt | 7 + opal/mca/memchecker/configure.m4 | 56 + opal/mca/memchecker/memchecker.h | 186 + opal/mca/memchecker/valgrind/Makefile.am | 40 + opal/mca/memchecker/valgrind/configure.m4 | 74 + .../memchecker/valgrind/memchecker_valgrind.h | 46 + .../valgrind/memchecker_valgrind_component.c | 113 + .../valgrind/memchecker_valgrind_module.c | 207 + opal/mca/memchecker/valgrind/owner.txt | 7 + opal/mca/memcpy/Makefile.am | 32 + opal/mca/memcpy/base/Makefile.am | 17 + opal/mca/memcpy/base/base.h | 37 + opal/mca/memcpy/base/memcpy_base_default.h | 42 + opal/mca/memcpy/base/memcpy_base_open.c | 34 + opal/mca/memcpy/base/owner.txt | 7 + opal/mca/memcpy/configure.m4 | 32 + opal/mca/memcpy/memcpy.h | 49 + opal/mca/memory/Makefile.am | 37 + opal/mca/memory/base/Makefile.am | 26 + opal/mca/memory/base/base.h | 38 + opal/mca/memory/base/empty.h | 67 + opal/mca/memory/base/memory_base_empty.c | 44 + opal/mca/memory/base/memory_base_open.c | 122 + opal/mca/memory/base/owner.txt | 7 + opal/mca/memory/configure.m4 | 46 + opal/mca/memory/malloc_solaris/Makefile.am | 26 + opal/mca/memory/malloc_solaris/configure.m4 | 118 + .../memory_malloc_solaris_component.c | 145 + opal/mca/memory/malloc_solaris/owner.txt | 7 + opal/mca/memory/memory.h | 174 + opal/mca/memory/patcher/Makefile.am | 32 + opal/mca/memory/patcher/configure.m4 | 52 + opal/mca/memory/patcher/memory_patcher.h | 27 + .../memory/patcher/memory_patcher_component.c | 532 ++ opal/mca/mpool/Makefile.am | 38 + opal/mca/mpool/base/Makefile.am | 34 + opal/mca/mpool/base/base.h | 68 + opal/mca/mpool/base/help-mpool-base.txt | 32 + opal/mca/mpool/base/mpool_base_alloc.c | 141 + opal/mca/mpool/base/mpool_base_default.c | 91 + opal/mca/mpool/base/mpool_base_frame.c | 138 + opal/mca/mpool/base/mpool_base_lookup.c | 76 + opal/mca/mpool/base/mpool_base_tree.c | 235 + opal/mca/mpool/base/mpool_base_tree.h | 100 + opal/mca/mpool/base/owner.txt | 7 + opal/mca/mpool/hugepage/Makefile.am | 54 + opal/mca/mpool/hugepage/mpool_hugepage.h | 90 + .../mpool/hugepage/mpool_hugepage_component.c | 396 + .../mpool/hugepage/mpool_hugepage_module.c | 261 + opal/mca/mpool/memkind/Makefile.am | 42 + opal/mca/mpool/memkind/configure.m4 | 42 + opal/mca/mpool/memkind/mpool_memkind.h | 94 + .../mpool/memkind/mpool_memkind_component.c | 270 + opal/mca/mpool/memkind/mpool_memkind_module.c | 83 + opal/mca/mpool/mpool.h | 197 + opal/mca/patcher/Makefile.am | 39 + opal/mca/patcher/base/Makefile.am | 25 + opal/mca/patcher/base/base.h | 83 + opal/mca/patcher/base/patcher_base_frame.c | 81 + opal/mca/patcher/base/patcher_base_patch.c | 193 + opal/mca/patcher/linux/Makefile.am | 49 + opal/mca/patcher/linux/configure.m4 | 57 + opal/mca/patcher/linux/patcher_linux.h | 45 + .../patcher/linux/patcher_linux_component.c | 43 + opal/mca/patcher/linux/patcher_linux_module.c | 397 + opal/mca/patcher/overwrite/Makefile.am | 49 + opal/mca/patcher/overwrite/configure.m4 | 42 + .../mca/patcher/overwrite/patcher_overwrite.h | 32 + .../overwrite/patcher_overwrite_component.c | 45 + .../overwrite/patcher_overwrite_module.c | 309 + opal/mca/patcher/patcher.h | 121 + opal/mca/pmix/Makefile.am | 32 + opal/mca/pmix/base/Makefile.am | 23 + opal/mca/pmix/base/base.h | 187 + opal/mca/pmix/base/help-pmix-base.txt | 20 + opal/mca/pmix/base/pmix_base_fns.c | 734 ++ opal/mca/pmix/base/pmix_base_fns.h | 40 + opal/mca/pmix/base/pmix_base_frame.c | 173 + opal/mca/pmix/base/pmix_base_hash.c | 298 + opal/mca/pmix/base/pmix_base_hash.h | 37 + opal/mca/pmix/base/pmix_base_select.c | 51 + opal/mca/pmix/cray/Makefile.am | 46 + opal/mca/pmix/cray/configure.m4 | 40 + opal/mca/pmix/cray/help-pmix-cray.txt | 17 + opal/mca/pmix/cray/owner.txt | 7 + opal/mca/pmix/cray/pmix_cray.c | 1065 +++ opal/mca/pmix/cray/pmix_cray.h | 55 + opal/mca/pmix/cray/pmix_cray_component.c | 144 + opal/mca/pmix/cray/pmix_cray_pmap_parser.c | 243 + opal/mca/pmix/cray/pmix_cray_pmap_parser.h | 18 + opal/mca/pmix/ext1x/Makefile.am | 50 + opal/mca/pmix/ext1x/configure.m4 | 70 + opal/mca/pmix/ext1x/pmix1x.c | 579 ++ opal/mca/pmix/ext1x/pmix1x.h | 179 + opal/mca/pmix/ext1x/pmix1x_client.c | 1329 +++ opal/mca/pmix/ext1x/pmix1x_component.c | 106 + opal/mca/pmix/ext1x/pmix1x_server_north.c | 782 ++ opal/mca/pmix/ext1x/pmix1x_server_south.c | 454 + opal/mca/pmix/ext2x/Makefile.am | 48 + opal/mca/pmix/ext2x/common_sym_whitelist.txt | 6 + opal/mca/pmix/ext2x/configure.m4 | 63 + opal/mca/pmix/ext2x/pmix2x.c | 1535 +++ opal/mca/pmix/ext2x/pmix2x.h | 321 + opal/mca/pmix/ext2x/pmix2x_client.c | 1437 +++ opal/mca/pmix/ext2x/pmix2x_component.c | 112 + opal/mca/pmix/ext2x/pmix2x_server_north.c | 1260 +++ opal/mca/pmix/ext2x/pmix2x_server_south.c | 550 ++ opal/mca/pmix/flux/Makefile.am | 40 + opal/mca/pmix/flux/configure.m4 | 63 + opal/mca/pmix/flux/owner.txt | 7 + opal/mca/pmix/flux/pmix_flux.c | 788 ++ opal/mca/pmix/flux/pmix_flux.h | 31 + opal/mca/pmix/flux/pmix_flux_component.c | 104 + opal/mca/pmix/isolated/Makefile.am | 36 + opal/mca/pmix/isolated/pmix_isolated.c | 506 + opal/mca/pmix/isolated/pmix_isolated.h | 28 + .../pmix/isolated/pmix_isolated_component.c | 87 + opal/mca/pmix/pmix.h | 867 ++ opal/mca/pmix/pmix2x/Makefile.am | 57 + opal/mca/pmix/pmix2x/autogen.subdirs | 1 + opal/mca/pmix/pmix2x/common_sym_whitelist.txt | 6 + opal/mca/pmix/pmix2x/configure.m4 | 115 + opal/mca/pmix/pmix2x/help-pmix-pmix2x.txt | 32 + opal/mca/pmix/pmix2x/pmix/AUTHORS | 39 + opal/mca/pmix/pmix2x/pmix/INSTALL | 87 + opal/mca/pmix/pmix2x/pmix/LICENSE | 93 + opal/mca/pmix/pmix2x/pmix/Makefile.am | 64 + opal/mca/pmix/pmix2x/pmix/NEWS | 207 + opal/mca/pmix/pmix2x/pmix/README | 315 + opal/mca/pmix/pmix2x/pmix/VERSION | 78 + opal/mca/pmix/pmix2x/pmix/autogen.pl | 739 ++ opal/mca/pmix/pmix2x/pmix/config/Makefile.am | 51 + .../pmix2x/pmix/config/c_get_alignment.m4 | 72 + .../mca/pmix/pmix2x/pmix/config/distscript.sh | 56 + opal/mca/pmix/pmix2x/pmix/config/pmix.m4 | 1064 +++ .../pmix/config/pmix_check_attributes.m4 | 539 ++ .../pmix/config/pmix_check_broken_qsort.m4 | 55 + .../config/pmix_check_compiler_version.m4 | 90 + .../pmix/pmix2x/pmix/config/pmix_check_icc.m4 | 62 + .../pmix2x/pmix/config/pmix_check_ident.m4 | 103 + .../pmix2x/pmix/config/pmix_check_lock.m4 | 61 + .../pmix/config/pmix_check_os_flavors.m4 | 69 + .../pmix2x/pmix/config/pmix_check_package.m4 | 186 + .../pmix2x/pmix/config/pmix_check_psm2.m4 | 89 + .../pmix/config/pmix_check_pthread_pids.m4 | 109 + .../pmix2x/pmix/config/pmix_check_vendor.m4 | 252 + .../pmix/config/pmix_check_visibility.m4 | 93 + .../pmix2x/pmix/config/pmix_check_withdir.m4 | 39 + .../pmix2x/pmix/config/pmix_config_asm.m4 | 1197 +++ .../pmix/config/pmix_config_pthreads.m4 | 669 ++ .../pmix2x/pmix/config/pmix_config_subdir.m4 | 147 + .../pmix/config/pmix_config_subdir_args.m4 | 84 + .../pmix2x/pmix/config/pmix_config_threads.m4 | 71 + .../config/pmix_ensure_contains_optflags.m4 | 67 + .../pmix/pmix2x/pmix/config/pmix_functions.m4 | 670 ++ .../pmix2x/pmix/config/pmix_get_version.sh | 161 + .../pmix2x/pmix/config/pmix_load_platform.m4 | 81 + opal/mca/pmix/pmix2x/pmix/config/pmix_mca.m4 | 918 ++ .../pmix/config/pmix_mca_priority_sort.pl | 31 + .../pmix2x/pmix/config/pmix_search_libs.m4 | 34 + .../pmix/pmix2x/pmix/config/pmix_setup_cc.m4 | 333 + .../pmix2x/pmix/config/pmix_setup_libevent.m4 | 122 + .../pmix2x/pmix/config/pmix_setup_zlib.m4 | 88 + .../pmix2x/pmix/config/pmix_try_assemble.m4 | 52 + opal/mca/pmix/pmix2x/pmix/configure.ac | 236 + opal/mca/pmix/pmix2x/pmix/contrib/Makefile.am | 39 + opal/mca/pmix/pmix2x/pmix/contrib/buildrpm.sh | 288 + .../pmix/contrib/cron-run-all-md2nroff.pl | 187 + .../pmix2x/pmix/contrib/make_dist_tarball | 428 + opal/mca/pmix/pmix2x/pmix/contrib/md2nroff.pl | 164 + .../pmix2x/pmix/contrib/perf_tools/Makefile | 21 + .../pmix/contrib/perf_tools/Makefile.include | 36 + .../pmix2x/pmix/contrib/perf_tools/README | 35 + .../pmix/pmix2x/pmix/contrib/perf_tools/pmi.h | 28 + .../pmix2x/pmix/contrib/perf_tools/pmi2.c | 186 + .../contrib/perf_tools/pmi2_pmap_parser.c | 244 + .../contrib/perf_tools/pmi2_pmap_parser.h | 24 + .../pmix/contrib/perf_tools/pmi2_utils.c | 132 + .../pmix/contrib/perf_tools/pmi2_utils.h | 11 + .../pmix/contrib/perf_tools/pmi_intra_perf.c | 517 + .../pmix2x/pmix/contrib/perf_tools/pmix.c | 236 + .../pmix2x/pmix/contrib/perf_tools/run.sh | 13 + .../pmix2x/pmix/contrib/platform/optimized | 3 + .../pmix/pmix2x/pmix/contrib/pmix-release.sh | 52 + .../pmix2x/pmix/contrib/pmix-valgrind.supp | 48 + opal/mca/pmix/pmix2x/pmix/contrib/pmix.spec | 686 ++ .../pmix/pmix2x/pmix/contrib/pmix_jenkins.sh | 398 + .../pmix/contrib/update-my-copyright.pl | 347 + .../pmix2x/pmix/contrib/whitespace-purge.sh | 25 + .../mca/pmix/pmix2x/pmix/examples/Makefile.am | 78 + opal/mca/pmix/pmix2x/pmix/examples/alloc.c | 235 + opal/mca/pmix/pmix2x/pmix/examples/client.c | 284 + opal/mca/pmix/pmix2x/pmix/examples/debugger.c | 543 ++ .../mca/pmix/pmix2x/pmix/examples/debuggerd.c | 227 + opal/mca/pmix/pmix2x/pmix/examples/dmodex.c | 234 + opal/mca/pmix/pmix2x/pmix/examples/dynamic.c | 203 + opal/mca/pmix/pmix2x/pmix/examples/fault.c | 131 + opal/mca/pmix/pmix2x/pmix/examples/jctrl.c | 229 + opal/mca/pmix/pmix2x/pmix/examples/pub.c | 164 + opal/mca/pmix/pmix2x/pmix/examples/server.c | 893 ++ opal/mca/pmix/pmix2x/pmix/examples/tool.c | 86 + opal/mca/pmix/pmix2x/pmix/include/Makefile.am | 30 + opal/mca/pmix/pmix2x/pmix/include/pmi.h | 836 ++ opal/mca/pmix/pmix2x/pmix/include/pmi2.h | 569 ++ opal/mca/pmix/pmix2x/pmix/include/pmix.h | 539 ++ .../pmix/pmix2x/pmix/include/pmix_common.h | 1823 ++++ .../pmix/pmix2x/pmix/include/pmix_rename.h.in | 74 + .../pmix/pmix2x/pmix/include/pmix_server.h | 541 ++ opal/mca/pmix/pmix2x/pmix/include/pmix_tool.h | 105 + .../pmix2x/pmix/include/pmix_version.h.in | 19 + opal/mca/pmix/pmix2x/pmix/man/Makefile.am | 60 + opal/mca/pmix/pmix2x/pmix/man/README | 186 + .../pmix/pmix2x/pmix/man/man3/pmix_abort.3 | 62 + .../pmix/pmix2x/pmix/man/man3/pmix_commit.3 | 35 + .../pmix/pmix2x/pmix/man/man3/pmix_finalize.3 | 45 + .../mca/pmix/pmix2x/pmix/man/man3/pmix_init.3 | 52 + .../pmix2x/pmix/man/man3/pmix_initialized.3 | 30 + opal/mca/pmix/pmix2x/pmix/man/man3/pmix_put.3 | 60 + opal/mca/pmix/pmix2x/pmix/man/man7/pmix.7 | 35 + .../pmix2x/pmix/man/man7/pmix_constants.7 | 79 + opal/mca/pmix/pmix2x/pmix/src/Makefile.am | 96 + .../pmix/src/atomics/sys/Makefile.include | 44 + .../pmix/src/atomics/sys/architecture.h | 57 + .../pmix/src/atomics/sys/arm/Makefile.include | 24 + .../pmix2x/pmix/src/atomics/sys/arm/atomic.h | 277 + .../pmix2x/pmix/src/atomics/sys/arm/timer.h | 34 + .../src/atomics/sys/arm64/Makefile.include | 24 + .../pmix/src/atomics/sys/arm64/atomic.h | 302 + .../pmix2x/pmix/src/atomics/sys/arm64/timer.h | 46 + .../pmix/pmix2x/pmix/src/atomics/sys/atomic.h | 615 ++ .../pmix2x/pmix/src/atomics/sys/atomic_impl.h | 439 + .../pmix/pmix2x/pmix/src/atomics/sys/cma.h | 125 + .../atomics/sys/gcc_builtin/Makefile.include | 26 + .../pmix/src/atomics/sys/gcc_builtin/atomic.h | 231 + .../src/atomics/sys/ia32/Makefile.include | 24 + .../pmix2x/pmix/src/atomics/sys/ia32/atomic.h | 223 + .../pmix2x/pmix/src/atomics/sys/ia32/timer.h | 59 + .../src/atomics/sys/ia64/Makefile.include | 24 + .../pmix2x/pmix/src/atomics/sys/ia64/atomic.h | 146 + .../pmix2x/pmix/src/atomics/sys/ia64/timer.h | 49 + .../src/atomics/sys/mips/Makefile.include | 24 + .../pmix2x/pmix/src/atomics/sys/mips/atomic.h | 199 + .../pmix2x/pmix/src/atomics/sys/mips/timer.h | 34 + .../src/atomics/sys/powerpc/Makefile.include | 24 + .../pmix/src/atomics/sys/powerpc/atomic.h | 462 + .../pmix/src/atomics/sys/powerpc/timer.h | 53 + .../src/atomics/sys/sparcv9/Makefile.include | 24 + .../pmix/src/atomics/sys/sparcv9/atomic.h | 198 + .../pmix/src/atomics/sys/sparcv9/timer.h | 68 + .../atomics/sys/sync_builtin/Makefile.include | 24 + .../src/atomics/sys/sync_builtin/atomic.h | 137 + .../pmix/pmix2x/pmix/src/atomics/sys/timer.h | 117 + .../src/atomics/sys/x86_64/Makefile.include | 26 + .../pmix/src/atomics/sys/x86_64/atomic.h | 281 + .../pmix/src/atomics/sys/x86_64/timer.h | 75 + .../pmix2x/pmix/src/buffer_ops/Makefile.am | 36 + .../pmix2x/pmix/src/buffer_ops/buffer_ops.h | 315 + .../pmix/pmix2x/pmix/src/buffer_ops/copy.c | 1465 +++ .../pmix2x/pmix/src/buffer_ops/internal.h | 538 ++ .../pmix/src/buffer_ops/internal_functions.c | 117 + .../pmix2x/pmix/src/buffer_ops/open_close.c | 755 ++ .../pmix/pmix2x/pmix/src/buffer_ops/pack.c | 1046 ++ .../pmix/pmix2x/pmix/src/buffer_ops/print.c | 1493 +++ .../pmix/pmix2x/pmix/src/buffer_ops/types.h | 105 + .../pmix/pmix2x/pmix/src/buffer_ops/unpack.c | 1415 +++ .../pmix2x/pmix/src/class/Makefile.include | 42 + .../pmix2x/pmix/src/class/pmix_hash_table.c | 796 ++ .../pmix2x/pmix/src/class/pmix_hash_table.h | 399 + .../pmix/pmix2x/pmix/src/class/pmix_hotel.c | 137 + .../pmix/pmix2x/pmix/src/class/pmix_hotel.h | 355 + .../pmix/pmix2x/pmix/src/class/pmix_list.c | 259 + .../pmix/pmix2x/pmix/src/class/pmix_list.h | 909 ++ .../pmix/pmix2x/pmix/src/class/pmix_object.c | 226 + .../pmix/pmix2x/pmix/src/class/pmix_object.h | 506 + .../pmix/src/class/pmix_pointer_array.c | 439 + .../pmix/src/class/pmix_pointer_array.h | 205 + .../pmix2x/pmix/src/class/pmix_ring_buffer.c | 154 + .../pmix2x/pmix/src/class/pmix_ring_buffer.h | 102 + .../pmix2x/pmix/src/class/pmix_value_array.c | 66 + .../pmix2x/pmix/src/class/pmix_value_array.h | 280 + .../pmix2x/pmix/src/client/Makefile.include | 29 + opal/mca/pmix/pmix2x/pmix/src/client/pmi1.c | 856 ++ opal/mca/pmix/pmix2x/pmix/src/client/pmi2.c | 801 ++ .../pmix/pmix2x/pmix/src/client/pmix_client.c | 1119 +++ .../pmix/src/client/pmix_client_connect.c | 368 + .../pmix/src/client/pmix_client_fence.c | 265 + .../pmix2x/pmix/src/client/pmix_client_get.c | 809 ++ .../pmix2x/pmix/src/client/pmix_client_ops.h | 31 + .../pmix2x/pmix/src/client/pmix_client_pub.c | 596 ++ .../pmix/src/client/pmix_client_spawn.c | 256 + .../pmix2x/pmix/src/common/Makefile.include | 18 + .../pmix2x/pmix/src/common/pmix_control.c | 285 + .../pmix/pmix2x/pmix/src/common/pmix_data.c | 159 + .../pmix2x/pmix/src/common/pmix_jobdata.c | 415 + .../pmix/pmix2x/pmix/src/common/pmix_log.c | 145 + .../pmix/pmix2x/pmix/src/common/pmix_query.c | 254 + .../pmix2x/pmix/src/common/pmix_strings.c | 224 + .../pmix2x/pmix/src/dstore/Makefile.include | 16 + .../pmix/pmix2x/pmix/src/dstore/pmix_dstore.c | 100 + .../pmix/pmix2x/pmix/src/dstore/pmix_dstore.h | 137 + .../pmix/pmix2x/pmix/src/dstore/pmix_esh.c | 2539 +++++ .../pmix/pmix2x/pmix/src/dstore/pmix_esh.h | 126 + .../pmix2x/pmix/src/event/Makefile.include | 16 + .../pmix/pmix2x/pmix/src/event/pmix_event.h | 195 + .../pmix/src/event/pmix_event_notification.c | 1198 +++ .../pmix/src/event/pmix_event_registration.c | 1000 ++ .../pmix2x/pmix/src/include/Makefile.include | 50 + opal/mca/pmix/pmix2x/pmix/src/include/align.h | 29 + .../pmix2x/pmix/src/include/hash_string.h | 69 + .../pmix/src/include/pmix_config_bottom.h | 564 ++ .../pmix2x/pmix/src/include/pmix_config_top.h | 40 + .../pmix2x/pmix/src/include/pmix_globals.c | 300 + .../pmix2x/pmix/src/include/pmix_globals.h | 408 + .../pmix2x/pmix/src/include/pmix_jobdata.h | 24 + .../pmix/src/include/pmix_socket_errno.h | 26 + .../pmix2x/pmix/src/include/pmix_stdint.h | 127 + .../pmix/pmix2x/pmix/src/include/prefetch.h | 39 + opal/mca/pmix/pmix2x/pmix/src/include/types.h | 268 + .../pmix/pmix2x/pmix/src/mca/Makefile.include | 26 + .../pmix/pmix2x/pmix/src/mca/base/Makefile.am | 66 + opal/mca/pmix/pmix2x/pmix/src/mca/base/base.h | 246 + .../pmix/src/mca/base/help-mca-base.txt | 61 + .../pmix2x/pmix/src/mca/base/help-mca-var.txt | 139 + .../pmix/src/mca/base/pmix_mca_base_close.c | 68 + .../base/pmix_mca_base_component_compare.c | 152 + .../mca/base/pmix_mca_base_component_find.c | 389 + .../base/pmix_mca_base_component_repository.c | 572 ++ .../base/pmix_mca_base_component_repository.h | 133 + .../mca/base/pmix_mca_base_components_close.c | 94 + .../mca/base/pmix_mca_base_components_open.c | 164 + .../base/pmix_mca_base_components_register.c | 163 + .../base/pmix_mca_base_components_select.c | 147 + .../src/mca/base/pmix_mca_base_framework.c | 242 + .../src/mca/base/pmix_mca_base_framework.h | 244 + .../pmix/src/mca/base/pmix_mca_base_list.c | 65 + .../pmix/src/mca/base/pmix_mca_base_open.c | 267 + .../mca/base/pmix_mca_base_parse_paramfile.c | 85 + .../pmix/src/mca/base/pmix_mca_base_var.c | 2255 +++++ .../pmix/src/mca/base/pmix_mca_base_var.h | 740 ++ .../src/mca/base/pmix_mca_base_var_enum.c | 623 ++ .../src/mca/base/pmix_mca_base_var_enum.h | 246 + .../src/mca/base/pmix_mca_base_var_group.c | 477 + .../src/mca/base/pmix_mca_base_var_group.h | 173 + .../pmix/src/mca/base/pmix_mca_base_vari.h | 165 + opal/mca/pmix/pmix2x/pmix/src/mca/mca.h | 324 + .../pmix/pmix2x/pmix/src/mca/pdl/Makefile.am | 36 + .../pmix2x/pmix/src/mca/pdl/base/Makefile.am | 17 + .../pmix/pmix2x/pmix/src/mca/pdl/base/base.h | 105 + .../pmix/src/mca/pdl/base/pdl_base_close.c | 26 + .../pmix/src/mca/pdl/base/pdl_base_fns.c | 70 + .../pmix/src/mca/pdl/base/pdl_base_open.c | 55 + .../pmix/src/mca/pdl/base/pdl_base_select.c | 55 + .../pmix/pmix2x/pmix/src/mca/pdl/configure.m4 | 80 + opal/mca/pmix/pmix2x/pmix/src/mca/pdl/pdl.h | 186 + .../pmix/src/mca/pdl/pdlopen/Makefile.am | 23 + .../pmix/src/mca/pdl/pdlopen/configure.m4 | 71 + .../pmix/src/mca/pdl/pdlopen/pdl_pdlopen.h | 41 + .../mca/pdl/pdlopen/pdl_pdlopen_component.c | 127 + .../src/mca/pdl/pdlopen/pdl_pdlopen_module.c | 276 + .../pmix/src/mca/pdl/plibltdl/Makefile.am | 27 + .../pmix/src/mca/pdl/plibltdl/configure.m4 | 124 + .../pmix/src/mca/pdl/plibltdl/pdl_libltdl.h | 51 + .../mca/pdl/plibltdl/pdl_libltdl_component.c | 158 + .../src/mca/pdl/plibltdl/pdl_libltdl_module.c | 134 + .../pmix/pmix2x/pmix/src/mca/pif/Makefile.am | 27 + .../pmix2x/pmix/src/mca/pif/base/Makefile.am | 15 + .../pmix/pmix2x/pmix/src/mca/pif/base/base.h | 30 + .../src/mca/pif/base/pif_base_components.c | 105 + .../pmix/src/mca/pif/bsdx_ipv4/Makefile.am | 13 + .../pmix/src/mca/pif/bsdx_ipv4/configure.m4 | 46 + .../pmix/src/mca/pif/bsdx_ipv4/pif_bsdx.c | 192 + .../pmix/src/mca/pif/bsdx_ipv6/Makefile.am | 13 + .../pmix/src/mca/pif/bsdx_ipv6/configure.m4 | 48 + .../src/mca/pif/bsdx_ipv6/pif_bsdx_ipv6.c | 228 + .../pmix/src/mca/pif/linux_ipv6/Makefile.am | 13 + .../pmix/src/mca/pif/linux_ipv6/configure.m4 | 36 + .../src/mca/pif/linux_ipv6/pif_linux_ipv6.c | 172 + opal/mca/pmix/pmix2x/pmix/src/mca/pif/pif.h | 137 + .../pmix/src/mca/pif/posix_ipv4/Makefile.am | 13 + .../pmix/src/mca/pif/posix_ipv4/configure.m4 | 55 + .../pmix/src/mca/pif/posix_ipv4/pif_posix.c | 343 + .../pmix/src/mca/pif/solaris_ipv6/Makefile.am | 13 + .../src/mca/pif/solaris_ipv6/configure.m4 | 32 + .../mca/pif/solaris_ipv6/pif_solaris_ipv6.c | 212 + .../pmix/src/mca/pinstalldirs/Makefile.am | 30 + .../src/mca/pinstalldirs/base/Makefile.am | 16 + .../pmix/src/mca/pinstalldirs/base/base.h | 40 + .../base/pinstalldirs_base_components.c | 177 + .../base/pinstalldirs_base_expand.c | 174 + .../src/mca/pinstalldirs/config/Makefile.am | 22 + .../src/mca/pinstalldirs/config/configure.m4 | 32 + .../pinstalldirs/config/pinstall_dirs.h.in | 129 + .../config/pmix_pinstalldirs_config.c | 57 + .../pmix/src/mca/pinstalldirs/configure.m4 | 12 + .../pmix/src/mca/pinstalldirs/env/Makefile.am | 16 + .../src/mca/pinstalldirs/env/configure.m4 | 30 + .../pinstalldirs/env/pmix_pinstalldirs_env.c | 84 + .../pmix/src/mca/pinstalldirs/pinstalldirs.h | 98 + .../pmix/pmix2x/pmix/src/mca/pnet/Makefile.am | 44 + .../pmix/src/mca/pnet/base/Makefile.include | 32 + .../pmix/pmix2x/pmix/src/mca/pnet/base/base.h | 91 + .../pmix/src/mca/pnet/base/pnet_base_fns.c | 146 + .../pmix/src/mca/pnet/base/pnet_base_frame.c | 93 + .../pmix/src/mca/pnet/base/pnet_base_select.c | 116 + .../pmix2x/pmix/src/mca/pnet/opa/Makefile.am | 56 + .../pmix2x/pmix/src/mca/pnet/opa/configure.m4 | 42 + .../pmix2x/pmix/src/mca/pnet/opa/pnet_opa.c | 238 + .../pmix2x/pmix/src/mca/pnet/opa/pnet_opa.h | 27 + .../src/mca/pnet/opa/pnet_opa_component.c | 84 + opal/mca/pmix/pmix2x/pmix/src/mca/pnet/pnet.h | 122 + .../pmix/pmix2x/pmix/src/mca/psec/Makefile.am | 44 + .../pmix/src/mca/psec/base/Makefile.include | 32 + .../pmix/pmix2x/pmix/src/mca/psec/base/base.h | 94 + .../pmix/src/mca/psec/base/psec_base_fns.c | 152 + .../pmix/src/mca/psec/base/psec_base_frame.c | 93 + .../pmix/src/mca/psec/base/psec_base_select.c | 112 + .../pmix/src/mca/psec/munge/Makefile.am | 50 + .../pmix/src/mca/psec/munge/configure.m4 | 88 + .../pmix/src/mca/psec/munge/psec_munge.c | 149 + .../pmix/src/mca/psec/munge/psec_munge.h | 25 + .../src/mca/psec/munge/psec_munge_component.c | 91 + .../pmix/src/mca/psec/native/Makefile.am | 50 + .../pmix/src/mca/psec/native/psec_native.c | 213 + .../pmix/src/mca/psec/native/psec_native.h | 27 + .../mca/psec/native/psec_native_component.c | 91 + .../pmix2x/pmix/src/mca/psec/none/Makefile.am | 50 + .../pmix2x/pmix/src/mca/psec/none/psec_none.c | 63 + .../pmix2x/pmix/src/mca/psec/none/psec_none.h | 27 + .../src/mca/psec/none/psec_none_component.c | 91 + opal/mca/pmix/pmix2x/pmix/src/mca/psec/psec.h | 183 + .../pmix2x/pmix/src/mca/psensor/Makefile.am | 32 + .../pmix/src/mca/psensor/base/Makefile.am | 19 + .../pmix2x/pmix/src/mca/psensor/base/base.h | 59 + .../src/mca/psensor/base/psensor_base_frame.c | 103 + .../mca/psensor/base/psensor_base_select.c | 94 + .../src/mca/psensor/base/psensor_base_stubs.c | 66 + .../pmix/src/mca/psensor/file/Makefile.am | 37 + .../psensor/file/help-pmix-psensor-file.txt | 19 + .../pmix/src/mca/psensor/file/psensor_file.c | 358 + .../pmix/src/mca/psensor/file/psensor_file.h | 38 + .../mca/psensor/file/psensor_file_component.c | 69 + .../src/mca/psensor/heartbeat/Makefile.am | 38 + .../heartbeat/help-pmix-psensor-heartbeat.txt | 20 + .../mca/psensor/heartbeat/psensor_heartbeat.c | 341 + .../mca/psensor/heartbeat/psensor_heartbeat.h | 43 + .../heartbeat/psensor_heartbeat_component.c | 81 + .../pmix2x/pmix/src/mca/psensor/psensor.h | 86 + .../pmix/pmix2x/pmix/src/mca/ptl/Makefile.am | 44 + .../pmix/src/mca/ptl/base/Makefile.include | 35 + .../pmix/pmix2x/pmix/src/mca/ptl/base/base.h | 126 + .../pmix/src/mca/ptl/base/ptl_base_connect.c | 249 + .../pmix/src/mca/ptl/base/ptl_base_frame.c | 259 + .../pmix/src/mca/ptl/base/ptl_base_listener.c | 299 + .../pmix/src/mca/ptl/base/ptl_base_select.c | 94 + .../pmix/src/mca/ptl/base/ptl_base_sendrecv.c | 729 ++ .../pmix/src/mca/ptl/base/ptl_base_stubs.c | 196 + opal/mca/pmix/pmix2x/pmix/src/mca/ptl/ptl.h | 212 + .../pmix/pmix2x/pmix/src/mca/ptl/ptl_types.h | 270 + .../pmix2x/pmix/src/mca/ptl/tcp/Makefile.am | 50 + .../pmix2x/pmix/src/mca/ptl/tcp/ptl_tcp.c | 862 ++ .../pmix2x/pmix/src/mca/ptl/tcp/ptl_tcp.h | 59 + .../pmix/src/mca/ptl/tcp/ptl_tcp_component.c | 1257 +++ .../pmix2x/pmix/src/mca/ptl/usock/Makefile.am | 50 + .../pmix2x/pmix/src/mca/ptl/usock/ptl_usock.c | 358 + .../pmix2x/pmix/src/mca/ptl/usock/ptl_usock.h | 47 + .../src/mca/ptl/usock/ptl_usock_component.c | 630 ++ .../pmix2x/pmix/src/runtime/Makefile.include | 36 + .../pmix/src/runtime/help-pmix-runtime.txt | 42 + .../pmix2x/pmix/src/runtime/pmix_finalize.c | 130 + .../pmix/pmix2x/pmix/src/runtime/pmix_init.c | 255 + .../pmix2x/pmix/src/runtime/pmix_params.c | 117 + .../pmix/src/runtime/pmix_progress_threads.c | 328 + .../pmix/src/runtime/pmix_progress_threads.h | 84 + .../pmix/pmix2x/pmix/src/runtime/pmix_rte.h | 80 + .../pmix2x/pmix/src/server/Makefile.include | 23 + .../pmix/src/server/help-pmix-server.txt | 38 + .../pmix/pmix2x/pmix/src/server/pmix_server.c | 2553 +++++ .../pmix2x/pmix/src/server/pmix_server_get.c | 716 ++ .../pmix2x/pmix/src/server/pmix_server_ops.c | 1843 ++++ .../pmix2x/pmix/src/server/pmix_server_ops.h | 222 + .../pmix/src/server/pmix_server_regex.c | 553 ++ .../pmix/pmix2x/pmix/src/sm/Makefile.include | 17 + opal/mca/pmix/pmix2x/pmix/src/sm/pmix_mmap.c | 192 + opal/mca/pmix/pmix2x/pmix/src/sm/pmix_mmap.h | 25 + opal/mca/pmix/pmix2x/pmix/src/sm/pmix_sm.c | 82 + opal/mca/pmix/pmix2x/pmix/src/sm/pmix_sm.h | 121 + .../pmix2x/pmix/src/threads/Makefile.include | 38 + opal/mca/pmix/pmix2x/pmix/src/threads/mutex.c | 94 + opal/mca/pmix/pmix2x/pmix/src/threads/mutex.h | 103 + .../pmix/pmix2x/pmix/src/threads/mutex_unix.h | 215 + .../mca/pmix/pmix2x/pmix/src/threads/thread.c | 134 + .../pmix2x/pmix/src/threads/thread_usage.h | 109 + .../pmix/pmix2x/pmix/src/threads/threads.h | 204 + opal/mca/pmix/pmix2x/pmix/src/threads/tsd.h | 179 + .../pmix/pmix2x/pmix/src/threads/wait_sync.c | 102 + .../pmix/pmix2x/pmix/src/threads/wait_sync.h | 119 + .../pmix2x/pmix/src/tool/Makefile.include | 11 + .../mca/pmix/pmix2x/pmix/src/tool/pmix_tool.c | 599 ++ .../pmix2x/pmix/src/util/Makefile.include | 81 + opal/mca/pmix/pmix2x/pmix/src/util/alfg.c | 136 + opal/mca/pmix/pmix2x/pmix/src/util/alfg.h | 38 + opal/mca/pmix/pmix2x/pmix/src/util/argv.c | 588 ++ opal/mca/pmix/pmix2x/pmix/src/util/argv.h | 306 + opal/mca/pmix/pmix2x/pmix/src/util/basename.c | 139 + opal/mca/pmix/pmix2x/pmix/src/util/basename.h | 114 + opal/mca/pmix/pmix2x/pmix/src/util/compress.c | 148 + opal/mca/pmix/pmix2x/pmix/src/util/compress.h | 57 + opal/mca/pmix/pmix2x/pmix/src/util/crc.c | 1205 +++ opal/mca/pmix/pmix2x/pmix/src/util/crc.h | 185 + opal/mca/pmix/pmix2x/pmix/src/util/error.c | 177 + opal/mca/pmix/pmix2x/pmix/src/util/error.h | 52 + opal/mca/pmix/pmix2x/pmix/src/util/fd.c | 95 + opal/mca/pmix/pmix2x/pmix/src/util/fd.h | 72 + opal/mca/pmix/pmix2x/pmix/src/util/getid.c | 86 + opal/mca/pmix/pmix2x/pmix/src/util/getid.h | 31 + opal/mca/pmix/pmix2x/pmix/src/util/hash.c | 367 + opal/mca/pmix/pmix2x/pmix/src/util/hash.h | 55 + .../pmix2x/pmix/src/util/keyval/Makefile.am | 32 + .../pmix2x/pmix/src/util/keyval/keyval_lex.h | 74 + .../pmix2x/pmix/src/util/keyval/keyval_lex.l | 137 + .../pmix/pmix2x/pmix/src/util/keyval_parse.c | 363 + .../pmix/pmix2x/pmix/src/util/keyval_parse.h | 60 + opal/mca/pmix/pmix2x/pmix/src/util/net.c | 486 + opal/mca/pmix/pmix2x/pmix/src/util/net.h | 150 + opal/mca/pmix/pmix2x/pmix/src/util/os_path.c | 106 + opal/mca/pmix/pmix2x/pmix/src/util/os_path.h | 78 + opal/mca/pmix/pmix2x/pmix/src/util/output.c | 958 ++ opal/mca/pmix/pmix2x/pmix/src/util/output.h | 546 ++ .../pmix/pmix2x/pmix/src/util/parse_options.c | 143 + .../pmix/pmix2x/pmix/src/util/parse_options.h | 37 + opal/mca/pmix/pmix2x/pmix/src/util/path.c | 717 ++ opal/mca/pmix/pmix2x/pmix/src/util/path.h | 162 + opal/mca/pmix/pmix2x/pmix/src/util/pif.c | 831 ++ opal/mca/pmix/pmix2x/pmix/src/util/pif.h | 231 + .../pmix/pmix2x/pmix/src/util/pmix_environ.c | 241 + .../pmix/pmix2x/pmix/src/util/pmix_environ.h | 151 + opal/mca/pmix/pmix2x/pmix/src/util/printf.c | 323 + opal/mca/pmix/pmix2x/pmix/src/util/printf.h | 131 + .../mca/pmix/pmix2x/pmix/src/util/show_help.c | 372 + .../mca/pmix/pmix2x/pmix/src/util/show_help.h | 178 + .../pmix/pmix2x/pmix/src/util/show_help_lex.h | 67 + .../pmix/pmix2x/pmix/src/util/show_help_lex.l | 114 + opal/mca/pmix/pmix2x/pmix/src/util/strnlen.h | 38 + opal/mca/pmix/pmix2x/pmix/src/util/timings.c | 645 ++ opal/mca/pmix/pmix2x/pmix/src/util/timings.h | 421 + opal/mca/pmix/pmix2x/pmix/src/util/tsd.h | 172 + opal/mca/pmix/pmix2x/pmix/test/Makefile.am | 76 + opal/mca/pmix/pmix2x/pmix/test/README | 32 + opal/mca/pmix/pmix2x/pmix/test/cli_stages.c | 277 + opal/mca/pmix/pmix2x/pmix/test/cli_stages.h | 79 + opal/mca/pmix/pmix2x/pmix/test/pmi2_client.c | 572 ++ opal/mca/pmix/pmix2x/pmix/test/pmi_client.c | 438 + opal/mca/pmix/pmix2x/pmix/test/pmix_client.c | 236 + .../pmix2x/pmix/test/pmix_client_otheruser.sh | 19 + opal/mca/pmix/pmix2x/pmix/test/pmix_regex.c | 90 + opal/mca/pmix/pmix2x/pmix/test/pmix_test.c | 206 + .../pmix/pmix2x/pmix/test/server_callbacks.c | 348 + .../pmix/pmix2x/pmix/test/server_callbacks.h | 60 + .../pmix/pmix2x/pmix/test/simple/Makefile.am | 78 + .../pmix/pmix2x/pmix/test/simple/simpclient.c | 351 + .../pmix/pmix2x/pmix/test/simple/simpdie.c | 159 + .../pmix/pmix2x/pmix/test/simple/simpdmodex.c | 218 + .../pmix/pmix2x/pmix/test/simple/simpdyn.c | 198 + .../mca/pmix/pmix2x/pmix/test/simple/simpft.c | 139 + .../pmix/pmix2x/pmix/test/simple/simppub.c | 169 + .../pmix/pmix2x/pmix/test/simple/simptest.c | 938 ++ .../pmix/pmix2x/pmix/test/simple/simptool.c | 117 + .../pmix/pmix2x/pmix/test/simple/test_pmix.c | 67 + opal/mca/pmix/pmix2x/pmix/test/test_cd.c | 87 + opal/mca/pmix/pmix2x/pmix/test/test_cd.h | 17 + opal/mca/pmix/pmix2x/pmix/test/test_common.c | 633 ++ opal/mca/pmix/pmix2x/pmix/test/test_common.h | 335 + opal/mca/pmix/pmix2x/pmix/test/test_error.c | 115 + opal/mca/pmix/pmix2x/pmix/test/test_error.h | 16 + opal/mca/pmix/pmix2x/pmix/test/test_fence.c | 438 + opal/mca/pmix/pmix2x/pmix/test/test_fence.h | 20 + .../mca/pmix/pmix2x/pmix/test/test_internal.c | 87 + .../mca/pmix/pmix2x/pmix/test/test_internal.h | 17 + opal/mca/pmix/pmix2x/pmix/test/test_publish.c | 196 + opal/mca/pmix/pmix2x/pmix/test/test_publish.h | 18 + opal/mca/pmix/pmix2x/pmix/test/test_replace.c | 135 + opal/mca/pmix/pmix2x/pmix/test/test_replace.h | 17 + .../pmix2x/pmix/test/test_resolve_peers.c | 125 + .../pmix2x/pmix/test/test_resolve_peers.h | 18 + opal/mca/pmix/pmix2x/pmix/test/test_spawn.c | 79 + opal/mca/pmix/pmix2x/pmix/test/test_spawn.h | 18 + opal/mca/pmix/pmix2x/pmix/test/utils.c | 263 + opal/mca/pmix/pmix2x/pmix/test/utils.h | 22 + opal/mca/pmix/pmix2x/pmix2x.c | 1647 ++++ opal/mca/pmix/pmix2x/pmix2x.h | 324 + opal/mca/pmix/pmix2x/pmix2x_client.c | 1450 +++ opal/mca/pmix/pmix2x/pmix2x_component.c | 129 + opal/mca/pmix/pmix2x/pmix2x_server_north.c | 1262 +++ opal/mca/pmix/pmix2x/pmix2x_server_south.c | 557 ++ opal/mca/pmix/pmix_server.h | 272 + opal/mca/pmix/pmix_types.h | 565 ++ opal/mca/pmix/s1/Makefile.am | 40 + opal/mca/pmix/s1/configure.m4 | 27 + opal/mca/pmix/s1/owner.txt | 7 + opal/mca/pmix/s1/pmix_s1.c | 754 ++ opal/mca/pmix/s1/pmix_s1.h | 31 + opal/mca/pmix/s1/pmix_s1_component.c | 105 + opal/mca/pmix/s2/Makefile.am | 42 + opal/mca/pmix/s2/configure.m4 | 27 + opal/mca/pmix/s2/owner.txt | 7 + opal/mca/pmix/s2/pmi2_pmap_parser.c | 241 + opal/mca/pmix/s2/pmi2_pmap_parser.h | 18 + opal/mca/pmix/s2/pmix_s2.c | 766 ++ opal/mca/pmix/s2/pmix_s2.h | 31 + opal/mca/pmix/s2/pmix_s2_component.c | 105 + opal/mca/pstat/Makefile.am | 37 + opal/mca/pstat/base/Makefile.am | 24 + opal/mca/pstat/base/base.h | 58 + opal/mca/pstat/base/pstat_base_open.c | 88 + opal/mca/pstat/base/pstat_base_select.c | 67 + opal/mca/pstat/configure.m4 | 13 + opal/mca/pstat/linux/Makefile.am | 46 + opal/mca/pstat/linux/configure.m4 | 48 + opal/mca/pstat/linux/owner.txt | 7 + opal/mca/pstat/linux/pstat_linux.h | 48 + opal/mca/pstat/linux/pstat_linux_component.c | 80 + opal/mca/pstat/linux/pstat_linux_module.c | 578 ++ opal/mca/pstat/pstat.h | 93 + opal/mca/pstat/test/Makefile.am | 46 + opal/mca/pstat/test/configure.m4 | 32 + opal/mca/pstat/test/owner.txt | 7 + opal/mca/pstat/test/pstat_test.c | 124 + opal/mca/pstat/test/pstat_test.h | 40 + opal/mca/pstat/test/pstat_test_component.c | 85 + opal/mca/rcache/Makefile.am | 37 + opal/mca/rcache/base/Makefile.am | 36 + opal/mca/rcache/base/base.h | 77 + opal/mca/rcache/base/help-rcache-base.txt | 38 + opal/mca/rcache/base/rcache_base_create.c | 121 + opal/mca/rcache/base/rcache_base_frame.c | 173 + opal/mca/rcache/base/rcache_base_mem_cb.c | 92 + opal/mca/rcache/base/rcache_base_mem_cb.h | 38 + opal/mca/rcache/base/rcache_base_vma.c | 168 + opal/mca/rcache/base/rcache_base_vma.h | 96 + opal/mca/rcache/base/rcache_base_vma_tree.c | 689 ++ opal/mca/rcache/base/rcache_base_vma_tree.h | 118 + opal/mca/rcache/gpusm/Makefile.am | 61 + opal/mca/rcache/gpusm/configure.m4 | 27 + opal/mca/rcache/gpusm/owner.txt | 7 + opal/mca/rcache/gpusm/rcache_gpusm.h | 88 + .../mca/rcache/gpusm/rcache_gpusm_component.c | 105 + opal/mca/rcache/gpusm/rcache_gpusm_module.c | 183 + opal/mca/rcache/grdma/Makefile.am | 60 + opal/mca/rcache/grdma/owner.txt | 7 + opal/mca/rcache/grdma/rcache_grdma.h | 82 + .../mca/rcache/grdma/rcache_grdma_component.c | 140 + opal/mca/rcache/grdma/rcache_grdma_module.c | 549 ++ opal/mca/rcache/rcache.h | 203 + opal/mca/rcache/rgpusm/Makefile.am | 59 + opal/mca/rcache/rgpusm/configure.m4 | 27 + opal/mca/rcache/rgpusm/owner.txt | 7 + opal/mca/rcache/rgpusm/rcache_rgpusm.h | 105 + .../rcache/rgpusm/rcache_rgpusm_component.c | 165 + opal/mca/rcache/rgpusm/rcache_rgpusm_module.c | 621 ++ opal/mca/rcache/udreg/Makefile.am | 54 + opal/mca/rcache/udreg/configure.m4 | 48 + opal/mca/rcache/udreg/owner.txt | 7 + opal/mca/rcache/udreg/rcache_udreg.h | 83 + .../mca/rcache/udreg/rcache_udreg_component.c | 130 + opal/mca/rcache/udreg/rcache_udreg_module.c | 360 + opal/mca/shmem/Makefile.am | 39 + opal/mca/shmem/base/Makefile.am | 28 + opal/mca/shmem/base/base.h | 146 + opal/mca/shmem/base/owner.txt | 7 + opal/mca/shmem/base/shmem_base_close.c | 48 + opal/mca/shmem/base/shmem_base_open.c | 74 + opal/mca/shmem/base/shmem_base_select.c | 213 + opal/mca/shmem/base/shmem_base_wrappers.c | 85 + opal/mca/shmem/mmap/Makefile.am | 51 + opal/mca/shmem/mmap/configure.m4 | 52 + opal/mca/shmem/mmap/help-opal-shmem-mmap.txt | 53 + opal/mca/shmem/mmap/owner.txt | 7 + opal/mca/shmem/mmap/shmem_mmap.h | 56 + opal/mca/shmem/mmap/shmem_mmap_component.c | 190 + opal/mca/shmem/mmap/shmem_mmap_module.c | 608 ++ opal/mca/shmem/posix/Makefile.am | 52 + opal/mca/shmem/posix/configure.m4 | 52 + .../mca/shmem/posix/help-opal-shmem-posix.txt | 22 + opal/mca/shmem/posix/owner.txt | 7 + opal/mca/shmem/posix/shmem_posix.h | 67 + .../shmem/posix/shmem_posix_common_utils.c | 113 + .../shmem/posix/shmem_posix_common_utils.h | 50 + opal/mca/shmem/posix/shmem_posix_component.c | 207 + opal/mca/shmem/posix/shmem_posix_module.c | 420 + opal/mca/shmem/shmem.h | 190 + opal/mca/shmem/shmem_types.h | 149 + opal/mca/shmem/sysv/Makefile.am | 50 + opal/mca/shmem/sysv/configure.m4 | 52 + opal/mca/shmem/sysv/help-opal-shmem-sysv.txt | 22 + opal/mca/shmem/sysv/owner.txt | 7 + opal/mca/shmem/sysv/shmem_sysv.h | 52 + opal/mca/shmem/sysv/shmem_sysv_component.c | 217 + opal/mca/shmem/sysv/shmem_sysv_module.c | 374 + opal/mca/timer/Makefile.am | 39 + opal/mca/timer/altix/Makefile.am | 24 + opal/mca/timer/altix/configure.m4 | 83 + opal/mca/timer/altix/owner.txt | 7 + opal/mca/timer/altix/timer_altix.h | 54 + opal/mca/timer/altix/timer_altix_component.c | 112 + opal/mca/timer/base/Makefile.am | 24 + opal/mca/timer/base/base.h | 50 + opal/mca/timer/base/owner.txt | 7 + opal/mca/timer/base/timer_base_null.h | 50 + opal/mca/timer/base/timer_base_open.c | 52 + opal/mca/timer/configure.m4 | 43 + opal/mca/timer/darwin/Makefile.am | 24 + opal/mca/timer/darwin/configure.m4 | 61 + opal/mca/timer/darwin/owner.txt | 7 + opal/mca/timer/darwin/timer_darwin.h | 76 + .../mca/timer/darwin/timer_darwin_component.c | 97 + opal/mca/timer/linux/Makefile.am | 26 + opal/mca/timer/linux/configure.m4 | 68 + .../mca/timer/linux/help-opal-timer-linux.txt | 17 + opal/mca/timer/linux/owner.txt | 7 + opal/mca/timer/linux/timer_linux.h | 36 + opal/mca/timer/linux/timer_linux_component.c | 237 + opal/mca/timer/solaris/Makefile.am | 24 + opal/mca/timer/solaris/configure.m4 | 60 + opal/mca/timer/solaris/owner.txt | 7 + opal/mca/timer/solaris/timer_solaris.h | 52 + .../timer/solaris/timer_solaris_component.c | 43 + opal/mca/timer/timer.h | 96 + opal/memoryhooks/Makefile.am | 28 + opal/memoryhooks/memory.c | 228 + opal/memoryhooks/memory.h | 162 + opal/memoryhooks/memory_internal.h | 42 + opal/runtime/Makefile.am | 48 + opal/runtime/help-opal-runtime.txt | 68 + opal/runtime/help-opal_info.txt | 65 + opal/runtime/opal.h | 136 + opal/runtime/opal_cr.c | 1449 +++ opal/runtime/opal_cr.h | 418 + opal/runtime/opal_finalize.c | 192 + opal/runtime/opal_info_support.c | 1247 +++ opal/runtime/opal_info_support.h | 117 + opal/runtime/opal_init.c | 710 ++ opal/runtime/opal_params.c | 398 + opal/runtime/opal_params.h | 86 + opal/runtime/opal_progress.c | 482 + opal/runtime/opal_progress.h | 204 + opal/runtime/opal_progress_threads.c | 295 + opal/runtime/opal_progress_threads.h | 70 + opal/threads/Makefile.am | 39 + opal/threads/condition.c | 38 + opal/threads/condition.h | 145 + opal/threads/mutex.c | 99 + opal/threads/mutex.h | 192 + opal/threads/mutex_unix.h | 214 + opal/threads/thread.c | 133 + opal/threads/thread_usage.h | 191 + opal/threads/threads.h | 141 + opal/threads/tsd.h | 178 + opal/threads/wait_sync.c | 102 + opal/threads/wait_sync.h | 125 + opal/tools/Makefile.am | 35 + opal/tools/opal-checkpoint/Makefile.am | 49 + .../opal-checkpoint/help-opal-checkpoint.txt | 63 + .../tools/opal-checkpoint/opal-checkpoint.1in | 104 + opal/tools/opal-checkpoint/opal-checkpoint.c | 632 ++ opal/tools/opal-restart/Makefile.am | 49 + opal/tools/opal-restart/help-opal-restart.txt | 69 + opal/tools/opal-restart/opal-restart.1in | 130 + opal/tools/opal-restart/opal-restart.c | 738 ++ opal/tools/wrappers/Makefile.am | 81 + opal/tools/wrappers/generic_wrapper.1in | 265 + opal/tools/wrappers/help-opal-wrapper.txt | 81 + opal/tools/wrappers/opal.pc.in | 25 + opal/tools/wrappers/opal_wrapper.1in | 78 + opal/tools/wrappers/opal_wrapper.c | 952 ++ .../wrappers/opalc++-wrapper-data.txt.in | 25 + .../tools/wrappers/opalcc-wrapper-data.txt.in | 25 + opal/util/Makefile.am | 127 + opal/util/alfg.c | 135 + opal/util/alfg.h | 37 + opal/util/arch.c | 177 + opal/util/arch.h | 248 + opal/util/argv.c | 582 ++ opal/util/argv.h | 299 + opal/util/basename.c | 142 + opal/util/basename.h | 112 + opal/util/bit_ops.h | 162 + opal/util/cmd_line.c | 1418 +++ opal/util/cmd_line.h | 621 ++ opal/util/crc.c | 1199 +++ opal/util/crc.h | 184 + opal/util/daemon_init.c | 91 + opal/util/daemon_init.h | 44 + opal/util/error.c | 210 + opal/util/error.h | 94 + opal/util/ethtool.c | 91 + opal/util/ethtool.h | 20 + opal/util/fd.c | 128 + opal/util/fd.h | 100 + opal/util/few.c | 83 + opal/util/few.h | 59 + opal/util/help-opal-util.txt | 116 + opal/util/if.c | 843 ++ opal/util/if.h | 231 + opal/util/keyval/Makefile.am | 34 + opal/util/keyval/keyval_lex.h | 73 + opal/util/keyval/keyval_lex.l | 137 + opal/util/keyval_parse.c | 371 + opal/util/keyval_parse.h | 59 + opal/util/malloc.c | 192 + opal/util/malloc.h | 145 + opal/util/net.c | 496 + opal/util/net.h | 149 + opal/util/numtostr.c | 65 + opal/util/numtostr.h | 45 + opal/util/opal_environ.c | 267 + opal/util/opal_environ.h | 144 + opal/util/opal_getcwd.c | 102 + opal/util/opal_getcwd.h | 50 + opal/util/opal_pty.c | 258 + opal/util/opal_pty.h | 54 + opal/util/os_dirpath.c | 311 + opal/util/os_dirpath.h | 118 + opal/util/os_path.c | 104 + opal/util/os_path.h | 76 + opal/util/output.c | 1021 ++ opal/util/output.h | 557 ++ opal/util/path.c | 714 ++ opal/util/path.h | 161 + opal/util/printf.c | 330 + opal/util/printf.h | 130 + opal/util/proc.c | 212 + opal/util/proc.h | 157 + opal/util/qsort.c | 178 + opal/util/qsort.h | 38 + opal/util/show_help.c | 369 + opal/util/show_help.h | 176 + opal/util/show_help_lex.h | 66 + opal/util/show_help_lex.l | 113 + opal/util/stacktrace.c | 649 ++ opal/util/stacktrace.h | 58 + opal/util/strncpy.c | 63 + opal/util/strncpy.h | 42 + opal/util/sys_limits.c | 247 + opal/util/sys_limits.h | 61 + opal/util/timings.c | 761 ++ opal/util/timings.h | 451 + opal/util/uri.c | 163 + opal/util/uri.h | 90 + opal/win32/opal_inet.c | 113 + opal/win32/opal_inet.h | 36 + opal/win32/opal_misc.h | 111 + opal/win32/opal_process.c | 40 + opal/win32/opal_process.h | 36 + opal/win32/opal_socket.c | 115 + opal/win32/opal_socket.h | 27 + opal/win32/opal_time.c | 54 + opal/win32/opal_time.h | 184 + opal/win32/opal_uio.c | 56 + opal/win32/opal_uio.h | 56 + opal/win32/opal_util.h | 30 + opal/win32/opal_utsname.c | 86 + opal/win32/opal_utsname.h | 38 + opal/win32/win_compat.h | 337 + opal/win_makefile | 252 + orte/Doxyfile | 1099 +++ orte/Makefile.am | 68 + orte/bindings/README | 21 + orte/bindings/python/README | 49 + orte/bindings/python/examples/submit.py | 68 + orte/bindings/python/setup.py | 16 + orte/bindings/python/src/orte-cffi/build.py | 144 + orte/common_sym_whitelist.txt | 4 + orte/etc/Makefile.am | 62 + orte/etc/openmpi-default-hostfile | 36 + orte/include/Makefile.am | 33 + orte/include/orte/Makefile.am | 28 + orte/include/orte/constants.h | 157 + orte/include/orte/types.h | 191 + orte/include/orte/version.h.in | 39 + orte/include/orte_config.h | 39 + orte/mca/Makefile.am | 23 + orte/mca/common/Makefile.am | 25 + orte/mca/common/alps/Makefile.am | 66 + orte/mca/common/alps/common_alps.c | 73 + orte/mca/common/alps/common_alps.h | 32 + orte/mca/common/alps/configure.m4 | 40 + orte/mca/common/alps/owner.txt | 7 + orte/mca/dfs/Makefile.am | 27 + orte/mca/dfs/app/Makefile.am | 36 + orte/mca/dfs/app/dfs_app.c | 1315 +++ orte/mca/dfs/app/dfs_app.h | 35 + orte/mca/dfs/app/dfs_app_component.c | 85 + orte/mca/dfs/app/owner.txt | 7 + orte/mca/dfs/base/Makefile.am | 15 + orte/mca/dfs/base/base.h | 82 + orte/mca/dfs/base/dfs_base_frame.c | 163 + orte/mca/dfs/base/dfs_base_select.c | 56 + orte/mca/dfs/base/owner.txt | 7 + orte/mca/dfs/dfs.h | 184 + orte/mca/dfs/dfs_types.h | 76 + orte/mca/dfs/orted/Makefile.am | 36 + orte/mca/dfs/orted/dfs_orted.c | 2389 +++++ orte/mca/dfs/orted/dfs_orted.h | 38 + orte/mca/dfs/orted/dfs_orted_component.c | 101 + orte/mca/dfs/orted/owner.txt | 7 + orte/mca/dfs/test/Makefile.am | 36 + orte/mca/dfs/test/dfs_test.c | 1149 +++ orte/mca/dfs/test/dfs_test.h | 35 + orte/mca/dfs/test/dfs_test_component.c | 100 + orte/mca/errmgr/Makefile.am | 40 + orte/mca/errmgr/base/Makefile.am | 30 + orte/mca/errmgr/base/base.h | 98 + orte/mca/errmgr/base/errmgr_base_fns.c | 452 + orte/mca/errmgr/base/errmgr_base_frame.c | 105 + orte/mca/errmgr/base/errmgr_base_select.c | 67 + orte/mca/errmgr/base/errmgr_private.h | 72 + orte/mca/errmgr/base/help-errmgr-base.txt | 107 + orte/mca/errmgr/base/owner.txt | 7 + orte/mca/errmgr/default_app/Makefile.am | 36 + .../errmgr/default_app/errmgr_default_app.c | 204 + .../errmgr/default_app/errmgr_default_app.h | 35 + .../errmgr_default_app_component.c | 100 + orte/mca/errmgr/default_app/owner.txt | 7 + orte/mca/errmgr/default_hnp/Makefile.am | 36 + .../errmgr/default_hnp/errmgr_default_hnp.c | 863 ++ .../errmgr/default_hnp/errmgr_default_hnp.h | 38 + .../errmgr_default_hnp_component.c | 101 + orte/mca/errmgr/default_hnp/owner.txt | 7 + orte/mca/errmgr/default_orted/Makefile.am | 36 + .../default_orted/errmgr_default_orted.c | 866 ++ .../default_orted/errmgr_default_orted.h | 35 + .../errmgr_default_orted_component.c | 102 + orte/mca/errmgr/default_orted/owner.txt | 7 + orte/mca/errmgr/default_tool/Makefile.am | 36 + .../errmgr/default_tool/errmgr_default_tool.c | 128 + .../errmgr/default_tool/errmgr_default_tool.h | 35 + .../errmgr_default_tool_component.c | 97 + orte/mca/errmgr/default_tool/owner.txt | 7 + orte/mca/errmgr/dvm/Makefile.am | 37 + orte/mca/errmgr/dvm/errmgr_dvm.c | 633 ++ orte/mca/errmgr/dvm/errmgr_dvm.h | 39 + orte/mca/errmgr/dvm/errmgr_dvm_component.c | 102 + orte/mca/errmgr/dvm/owner.txt | 7 + orte/mca/errmgr/errmgr.h | 166 + orte/mca/ess/Makefile.am | 42 + orte/mca/ess/alps/Makefile.am | 53 + orte/mca/ess/alps/configure.m4 | 37 + orte/mca/ess/alps/ess_alps.h | 56 + orte/mca/ess/alps/ess_alps_component.c | 107 + orte/mca/ess/alps/ess_alps_module.c | 204 + orte/mca/ess/alps/ess_alps_utils.c | 241 + orte/mca/ess/alps/owner.txt | 7 + orte/mca/ess/base/Makefile.am | 34 + orte/mca/ess/base/base.h | 95 + orte/mca/ess/base/ess_base_fns.c | 337 + orte/mca/ess/base/ess_base_frame.c | 327 + orte/mca/ess/base/ess_base_get.c | 48 + orte/mca/ess/base/ess_base_select.c | 53 + orte/mca/ess/base/ess_base_std_app.c | 406 + orte/mca/ess/base/ess_base_std_orted.c | 790 ++ orte/mca/ess/base/ess_base_std_prolog.c | 68 + orte/mca/ess/base/ess_base_std_tool.c | 247 + orte/mca/ess/base/help-ess-base.txt | 91 + orte/mca/ess/base/owner.txt | 7 + orte/mca/ess/env/Makefile.am | 46 + orte/mca/ess/env/ess_env.h | 36 + orte/mca/ess/env/ess_env_component.c | 92 + orte/mca/ess/env/ess_env_module.c | 376 + orte/mca/ess/env/owner.txt | 7 + orte/mca/ess/ess.h | 112 + orte/mca/ess/hnp/Makefile.am | 49 + orte/mca/ess/hnp/ess_hnp.h | 36 + orte/mca/ess/hnp/ess_hnp_component.c | 101 + orte/mca/ess/hnp/ess_hnp_module.c | 1030 ++ orte/mca/ess/hnp/owner.txt | 7 + orte/mca/ess/lsf/Makefile.am | 50 + orte/mca/ess/lsf/configure.m4 | 40 + orte/mca/ess/lsf/ess_lsf.h | 36 + orte/mca/ess/lsf/ess_lsf_component.c | 93 + orte/mca/ess/lsf/ess_lsf_module.c | 193 + orte/mca/ess/lsf/owner.txt | 7 + orte/mca/ess/pmi/Makefile.am | 43 + orte/mca/ess/pmi/ess_pmi.h | 19 + orte/mca/ess/pmi/ess_pmi_component.c | 98 + orte/mca/ess/pmi/ess_pmi_module.c | 513 + orte/mca/ess/pmi/owner.txt | 7 + orte/mca/ess/singleton/Makefile.am | 45 + orte/mca/ess/singleton/ess_singleton.h | 35 + .../ess/singleton/ess_singleton_component.c | 171 + orte/mca/ess/singleton/ess_singleton_module.c | 586 ++ orte/mca/ess/singleton/owner.txt | 7 + orte/mca/ess/slurm/Makefile.am | 45 + orte/mca/ess/slurm/configure.m4 | 40 + orte/mca/ess/slurm/ess_slurm.h | 35 + orte/mca/ess/slurm/ess_slurm_component.c | 98 + orte/mca/ess/slurm/ess_slurm_module.c | 202 + orte/mca/ess/slurm/owner.txt | 7 + orte/mca/ess/tm/Makefile.am | 45 + orte/mca/ess/tm/configure.m4 | 40 + orte/mca/ess/tm/ess_tm.h | 35 + orte/mca/ess/tm/ess_tm_component.c | 98 + orte/mca/ess/tm/ess_tm_module.c | 185 + orte/mca/ess/tm/owner.txt | 7 + orte/mca/ess/tool/Makefile.am | 46 + orte/mca/ess/tool/ess_tool.h | 41 + orte/mca/ess/tool/ess_tool_component.c | 114 + orte/mca/ess/tool/ess_tool_module.c | 177 + orte/mca/ess/tool/owner.txt | 7 + orte/mca/filem/Makefile.am | 50 + orte/mca/filem/base/Makefile.am | 27 + orte/mca/filem/base/base.h | 89 + orte/mca/filem/base/filem_base_fns.c | 215 + orte/mca/filem/base/filem_base_frame.c | 72 + orte/mca/filem/base/filem_base_receive.c | 319 + orte/mca/filem/base/filem_base_select.c | 64 + orte/mca/filem/base/owner.txt | 7 + orte/mca/filem/filem.h | 402 + orte/mca/filem/orte_filem.7in | 92 + orte/mca/filem/raw/Makefile.am | 48 + orte/mca/filem/raw/filem_raw.h | 80 + orte/mca/filem/raw/filem_raw_component.c | 96 + orte/mca/filem/raw/filem_raw_module.c | 1318 +++ orte/mca/filem/raw/help-orte-filem-raw.txt | 46 + orte/mca/filem/raw/owner.txt | 7 + orte/mca/grpcomm/Makefile.am | 38 + orte/mca/grpcomm/base/Makefile.am | 27 + orte/mca/grpcomm/base/base.h | 93 + orte/mca/grpcomm/base/grpcomm_base_frame.c | 151 + orte/mca/grpcomm/base/grpcomm_base_select.c | 121 + orte/mca/grpcomm/base/grpcomm_base_stubs.c | 565 ++ orte/mca/grpcomm/base/owner.txt | 7 + orte/mca/grpcomm/brucks/.opal_ignore | 0 orte/mca/grpcomm/brucks/Makefile.am | 41 + orte/mca/grpcomm/brucks/grpcomm_brucks.h | 31 + .../grpcomm/brucks/grpcomm_brucks_component.c | 84 + .../grpcomm/brucks/grpcomm_brucks_module.c | 388 + orte/mca/grpcomm/brucks/owner.txt | 7 + orte/mca/grpcomm/direct/Makefile.am | 41 + orte/mca/grpcomm/direct/grpcomm_direct.c | 627 ++ orte/mca/grpcomm/direct/grpcomm_direct.h | 31 + .../grpcomm/direct/grpcomm_direct_component.c | 85 + orte/mca/grpcomm/direct/owner.txt | 7 + orte/mca/grpcomm/grpcomm.h | 192 + orte/mca/grpcomm/rcd/.opal_ignore | 0 orte/mca/grpcomm/rcd/Makefile.am | 41 + orte/mca/grpcomm/rcd/grpcomm_rcd.c | 329 + orte/mca/grpcomm/rcd/grpcomm_rcd.h | 31 + orte/mca/grpcomm/rcd/grpcomm_rcd_component.c | 84 + orte/mca/grpcomm/rcd/owner.txt | 7 + orte/mca/iof/Makefile.am | 40 + orte/mca/iof/README.txt | 177 + orte/mca/iof/base/Makefile.am | 28 + orte/mca/iof/base/base.h | 285 + orte/mca/iof/base/iof_base_frame.c | 319 + orte/mca/iof/base/iof_base_output.c | 377 + orte/mca/iof/base/iof_base_select.c | 68 + orte/mca/iof/base/iof_base_setup.c | 384 + orte/mca/iof/base/iof_base_setup.h | 64 + orte/mca/iof/base/owner.txt | 7 + orte/mca/iof/hnp/Makefile.am | 50 + orte/mca/iof/hnp/iof_hnp.c | 655 ++ orte/mca/iof/hnp/iof_hnp.h | 88 + orte/mca/iof/hnp/iof_hnp_component.c | 104 + orte/mca/iof/hnp/iof_hnp_read.c | 323 + orte/mca/iof/hnp/iof_hnp_receive.c | 274 + orte/mca/iof/hnp/iof_hnp_send.c | 120 + orte/mca/iof/hnp/owner.txt | 7 + orte/mca/iof/iof.h | 245 + orte/mca/iof/iof_types.h | 55 + orte/mca/iof/orted/Makefile.am | 49 + orte/mca/iof/orted/iof_orted.c | 521 + orte/mca/iof/orted/iof_orted.h | 82 + orte/mca/iof/orted/iof_orted_component.c | 96 + orte/mca/iof/orted/iof_orted_read.c | 188 + orte/mca/iof/orted/iof_orted_receive.c | 164 + orte/mca/iof/orted/owner.txt | 7 + orte/mca/iof/tool/Makefile.am | 48 + orte/mca/iof/tool/iof_tool.c | 304 + orte/mca/iof/tool/iof_tool.h | 57 + orte/mca/iof/tool/iof_tool_component.c | 100 + orte/mca/iof/tool/iof_tool_receive.c | 110 + orte/mca/iof/tool/owner.txt | 7 + orte/mca/mca.h | 39 + orte/mca/notifier/Makefile.am | 39 + orte/mca/notifier/base/Makefile.am | 27 + orte/mca/notifier/base/base.h | 87 + orte/mca/notifier/base/notifier_base_fns.c | 200 + orte/mca/notifier/base/notifier_base_frame.c | 266 + orte/mca/notifier/base/notifier_base_select.c | 127 + orte/mca/notifier/notifier.h | 234 + orte/mca/notifier/smtp/.opal_ignore | 0 orte/mca/notifier/smtp/Makefile.am | 54 + orte/mca/notifier/smtp/configure.m4 | 39 + .../notifier/smtp/help-orte-notifier-smtp.txt | 33 + orte/mca/notifier/smtp/notifier_smtp.h | 68 + .../notifier/smtp/notifier_smtp_component.c | 197 + orte/mca/notifier/smtp/notifier_smtp_module.c | 316 + orte/mca/notifier/syslog/Makefile.am | 47 + orte/mca/notifier/syslog/configure.m4 | 31 + orte/mca/notifier/syslog/notifier_syslog.h | 40 + .../syslog/notifier_syslog_component.c | 60 + .../notifier/syslog/notifier_syslog_module.c | 132 + orte/mca/odls/Makefile.am | 40 + orte/mca/odls/alps/Makefile.am | 57 + orte/mca/odls/alps/configure.m4 | 37 + orte/mca/odls/alps/help-orte-odls-alps.txt | 152 + orte/mca/odls/alps/odls_alps.h | 58 + orte/mca/odls/alps/odls_alps_component.c | 114 + orte/mca/odls/alps/odls_alps_module.c | 743 ++ orte/mca/odls/alps/odls_alps_utils.c | 252 + orte/mca/odls/alps/owner.txt | 7 + orte/mca/odls/base/Makefile.am | 30 + orte/mca/odls/base/base.h | 48 + orte/mca/odls/base/help-orte-odls-base.txt | 103 + orte/mca/odls/base/odls_base_default_fns.c | 1906 ++++ orte/mca/odls/base/odls_base_frame.c | 273 + orte/mca/odls/base/odls_base_select.c | 57 + orte/mca/odls/base/odls_private.h | 163 + orte/mca/odls/base/owner.txt | 7 + orte/mca/odls/default/Makefile.am | 48 + orte/mca/odls/default/configure.m4 | 33 + .../odls/default/help-orte-odls-default.txt | 140 + orte/mca/odls/default/odls_default.h | 48 + .../mca/odls/default/odls_default_component.c | 97 + orte/mca/odls/default/odls_default_module.c | 729 ++ orte/mca/odls/default/owner.txt | 7 + orte/mca/odls/odls.h | 126 + orte/mca/odls/odls_types.h | 121 + orte/mca/oob/Makefile.am | 40 + orte/mca/oob/alps/Makefile.am | 47 + orte/mca/oob/alps/configure.m4 | 37 + orte/mca/oob/alps/oob_alps_component.c | 238 + orte/mca/oob/alps/owner.txt | 7 + orte/mca/oob/base/Makefile.am | 30 + orte/mca/oob/base/base.h | 191 + orte/mca/oob/base/help-oob-base.txt | 23 + orte/mca/oob/base/oob_base_frame.c | 164 + orte/mca/oob/base/oob_base_select.c | 157 + orte/mca/oob/base/oob_base_stubs.c | 476 + orte/mca/oob/base/owner.txt | 7 + orte/mca/oob/oob.h | 92 + orte/mca/oob/tcp/Makefile.am | 62 + orte/mca/oob/tcp/configure.m4 | 38 + orte/mca/oob/tcp/help-oob-tcp.txt | 110 + orte/mca/oob/tcp/oob_tcp.c | 373 + orte/mca/oob/tcp/oob_tcp.h | 94 + orte/mca/oob/tcp/oob_tcp_common.c | 223 + orte/mca/oob/tcp/oob_tcp_common.h | 34 + orte/mca/oob/tcp/oob_tcp_component.c | 1441 +++ orte/mca/oob/tcp/oob_tcp_component.h | 108 + orte/mca/oob/tcp/oob_tcp_connection.c | 1241 +++ orte/mca/oob/tcp/oob_tcp_connection.h | 102 + orte/mca/oob/tcp/oob_tcp_hdr.h | 88 + orte/mca/oob/tcp/oob_tcp_listener.c | 969 ++ orte/mca/oob/tcp/oob_tcp_listener.h | 61 + orte/mca/oob/tcp/oob_tcp_peer.h | 95 + orte/mca/oob/tcp/oob_tcp_sendrecv.c | 671 ++ orte/mca/oob/tcp/oob_tcp_sendrecv.h | 306 + orte/mca/oob/tcp/owner.txt | 7 + orte/mca/oob/ud/Makefile.am | 67 + orte/mca/oob/ud/configure.m4 | 63 + orte/mca/oob/ud/help-oob-ud.txt | 121 + orte/mca/oob/ud/oob_ud.c | 279 + orte/mca/oob/ud/oob_ud.h | 207 + orte/mca/oob/ud/oob_ud_component.c | 789 ++ orte/mca/oob/ud/oob_ud_component.h | 68 + orte/mca/oob/ud/oob_ud_event.c | 606 ++ orte/mca/oob/ud/oob_ud_peer.c | 398 + orte/mca/oob/ud/oob_ud_peer.h | 97 + orte/mca/oob/ud/oob_ud_ping.c | 70 + orte/mca/oob/ud/oob_ud_ping.h | 39 + orte/mca/oob/ud/oob_ud_qp.c | 321 + orte/mca/oob/ud/oob_ud_qp.h | 73 + orte/mca/oob/ud/oob_ud_recv.c | 539 ++ orte/mca/oob/ud/oob_ud_req.c | 420 + orte/mca/oob/ud/oob_ud_req.h | 281 + orte/mca/oob/ud/oob_ud_send.c | 543 ++ orte/mca/oob/ud/oob_ud_send.h | 55 + orte/mca/oob/ud/owner.txt | 7 + orte/mca/plm/Makefile.am | 40 + orte/mca/plm/alps/Makefile.am | 55 + orte/mca/plm/alps/configure.m4 | 37 + orte/mca/plm/alps/help-plm-alps.txt | 42 + orte/mca/plm/alps/owner.txt | 7 + orte/mca/plm/alps/plm_alps.h | 53 + orte/mca/plm/alps/plm_alps_component.c | 182 + orte/mca/plm/alps/plm_alps_module.c | 668 ++ orte/mca/plm/base/Makefile.am | 33 + orte/mca/plm/base/base.h | 71 + orte/mca/plm/base/help-plm-base.txt | 175 + orte/mca/plm/base/owner.txt | 7 + orte/mca/plm/base/plm_base_frame.c | 92 + orte/mca/plm/base/plm_base_jobid.c | 98 + orte/mca/plm/base/plm_base_launch_support.c | 2322 +++++ orte/mca/plm/base/plm_base_orted_cmds.c | 249 + orte/mca/plm/base/plm_base_receive.c | 417 + orte/mca/plm/base/plm_base_select.c | 59 + orte/mca/plm/base/plm_private.h | 129 + orte/mca/plm/isolated/Makefile.am | 47 + orte/mca/plm/isolated/configure.m4 | 32 + orte/mca/plm/isolated/owner.txt | 7 + orte/mca/plm/isolated/plm_isolated.c | 148 + orte/mca/plm/isolated/plm_isolated.h | 42 + .../mca/plm/isolated/plm_isolated_component.c | 107 + orte/mca/plm/lsf/Makefile.am | 54 + orte/mca/plm/lsf/configure.m4 | 40 + orte/mca/plm/lsf/help-plm-lsf.txt | 38 + orte/mca/plm/lsf/owner.txt | 7 + orte/mca/plm/lsf/plm_lsf.h | 43 + orte/mca/plm/lsf/plm_lsf_component.c | 119 + orte/mca/plm/lsf/plm_lsf_module.c | 425 + orte/mca/plm/plm.h | 148 + orte/mca/plm/plm_types.h | 230 + orte/mca/plm/rsh/Makefile.am | 48 + orte/mca/plm/rsh/configure.m4 | 32 + orte/mca/plm/rsh/help-plm-rsh.txt | 96 + orte/mca/plm/rsh/owner.txt | 7 + orte/mca/plm/rsh/plm_rsh.h | 78 + orte/mca/plm/rsh/plm_rsh_component.c | 456 + orte/mca/plm/rsh/plm_rsh_module.c | 1675 ++++ orte/mca/plm/slurm/Makefile.am | 48 + orte/mca/plm/slurm/configure.m4 | 42 + orte/mca/plm/slurm/help-plm-slurm.txt | 55 + orte/mca/plm/slurm/owner.txt | 7 + orte/mca/plm/slurm/plm_slurm.h | 46 + orte/mca/plm/slurm/plm_slurm_component.c | 144 + orte/mca/plm/slurm/plm_slurm_module.c | 703 ++ orte/mca/plm/tm/Makefile.am | 56 + orte/mca/plm/tm/configure.m4 | 40 + orte/mca/plm/tm/help-plm-tm.txt | 62 + orte/mca/plm/tm/owner.txt | 7 + orte/mca/plm/tm/plm_tm.h | 43 + orte/mca/plm/tm/plm_tm_component.c | 137 + orte/mca/plm/tm/plm_tm_module.c | 527 + orte/mca/ras/Makefile.am | 42 + orte/mca/ras/alps/Makefile.am | 64 + orte/mca/ras/alps/configure.m4 | 46 + orte/mca/ras/alps/help-ras-alps.txt | 41 + orte/mca/ras/alps/owner.txt | 7 + orte/mca/ras/alps/ras-alps-command.sh | 73 + orte/mca/ras/alps/ras_alps.h | 42 + orte/mca/ras/alps/ras_alps_component.c | 232 + orte/mca/ras/alps/ras_alps_module.c | 598 ++ orte/mca/ras/base/Makefile.am | 29 + orte/mca/ras/base/base.h | 67 + orte/mca/ras/base/help-ras-base.txt | 38 + orte/mca/ras/base/owner.txt | 7 + orte/mca/ras/base/ras_base_allocate.c | 555 ++ orte/mca/ras/base/ras_base_close.c | 54 + orte/mca/ras/base/ras_base_frame.c | 117 + orte/mca/ras/base/ras_base_node.c | 218 + orte/mca/ras/base/ras_base_select.c | 63 + orte/mca/ras/base/ras_private.h | 51 + orte/mca/ras/gridengine/Makefile.am | 50 + orte/mca/ras/gridengine/configure.m4 | 33 + .../ras/gridengine/help-ras-gridengine.txt | 44 + orte/mca/ras/gridengine/owner.txt | 7 + orte/mca/ras/gridengine/ras_gridengine.h | 51 + .../ras/gridengine/ras_gridengine_component.c | 135 + .../ras/gridengine/ras_gridengine_module.c | 207 + orte/mca/ras/lsf/Makefile.am | 52 + orte/mca/ras/lsf/configure.m4 | 40 + orte/mca/ras/lsf/help-ras-lsf.txt | 36 + orte/mca/ras/lsf/owner.txt | 7 + orte/mca/ras/lsf/ras_lsf.h | 39 + orte/mca/ras/lsf/ras_lsf_component.c | 94 + orte/mca/ras/lsf/ras_lsf_module.c | 167 + orte/mca/ras/ras.h | 142 + orte/mca/ras/simulator/Makefile.am | 42 + orte/mca/ras/simulator/help-ras-simulator.txt | 33 + orte/mca/ras/simulator/owner.txt | 7 + orte/mca/ras/simulator/ras_sim.h | 37 + orte/mca/ras/simulator/ras_sim_component.c | 138 + orte/mca/ras/simulator/ras_sim_module.c | 315 + orte/mca/ras/slurm/Makefile.am | 57 + orte/mca/ras/slurm/configure.m4 | 40 + orte/mca/ras/slurm/help-ras-slurm.txt | 78 + orte/mca/ras/slurm/owner.txt | 7 + orte/mca/ras/slurm/ras_slurm.h | 49 + orte/mca/ras/slurm/ras_slurm_component.c | 155 + orte/mca/ras/slurm/ras_slurm_module.c | 1223 +++ orte/mca/ras/tm/Makefile.am | 60 + orte/mca/ras/tm/configure.m4 | 40 + orte/mca/ras/tm/help-ras-tm.txt | 39 + orte/mca/ras/tm/owner.txt | 7 + orte/mca/ras/tm/ras_tm.h | 45 + orte/mca/ras/tm/ras_tm_component.c | 141 + orte/mca/ras/tm/ras_tm_module.c | 253 + orte/mca/rmaps/Makefile.am | 37 + orte/mca/rmaps/base/Makefile.am | 38 + orte/mca/rmaps/base/base.h | 134 + orte/mca/rmaps/base/help-orte-rmaps-base.txt | 422 + orte/mca/rmaps/base/owner.txt | 7 + .../rmaps/base/rmaps_base_assign_locations.c | 80 + orte/mca/rmaps/base/rmaps_base_binding.c | 971 ++ orte/mca/rmaps/base/rmaps_base_frame.c | 865 ++ orte/mca/rmaps/base/rmaps_base_map_job.c | 583 ++ orte/mca/rmaps/base/rmaps_base_print_fns.c | 224 + orte/mca/rmaps/base/rmaps_base_ranking.c | 862 ++ orte/mca/rmaps/base/rmaps_base_select.c | 113 + orte/mca/rmaps/base/rmaps_base_support_fns.c | 712 ++ orte/mca/rmaps/base/rmaps_private.h | 72 + orte/mca/rmaps/mindist/Makefile.am | 49 + orte/mca/rmaps/mindist/help-orte-rmaps-md.txt | 53 + orte/mca/rmaps/mindist/owner.txt | 7 + orte/mca/rmaps/mindist/rmaps_mindist.h | 42 + .../rmaps/mindist/rmaps_mindist_component.c | 99 + orte/mca/rmaps/mindist/rmaps_mindist_module.c | 530 + orte/mca/rmaps/ppr/Makefile.am | 38 + orte/mca/rmaps/ppr/help-orte-rmaps-ppr.txt | 66 + orte/mca/rmaps/ppr/owner.txt | 7 + orte/mca/rmaps/ppr/rmaps_ppr.c | 740 ++ orte/mca/rmaps/ppr/rmaps_ppr.h | 27 + orte/mca/rmaps/ppr/rmaps_ppr_component.c | 85 + orte/mca/rmaps/rank_file/Makefile.am | 59 + .../rmaps/rank_file/common_sym_whitelist.txt | 4 + .../rmaps/rank_file/help-rmaps_rank_file.txt | 131 + orte/mca/rmaps/rank_file/owner.txt | 7 + orte/mca/rmaps/rank_file/rmaps_rank_file.c | 594 ++ orte/mca/rmaps/rank_file/rmaps_rank_file.h | 65 + .../rank_file/rmaps_rank_file_component.c | 164 + .../mca/rmaps/rank_file/rmaps_rank_file_lex.h | 81 + .../mca/rmaps/rank_file/rmaps_rank_file_lex.l | 151 + orte/mca/rmaps/resilient/Makefile.am | 39 + .../resilient/help-orte-rmaps-resilient.txt | 28 + orte/mca/rmaps/resilient/owner.txt | 7 + orte/mca/rmaps/resilient/rmaps_resilient.c | 889 ++ orte/mca/rmaps/resilient/rmaps_resilient.h | 48 + .../resilient/rmaps_resilient_component.c | 160 + orte/mca/rmaps/rmaps.h | 115 + orte/mca/rmaps/rmaps_types.h | 174 + orte/mca/rmaps/round_robin/Makefile.am | 51 + .../rmaps/round_robin/help-orte-rmaps-rr.txt | 64 + orte/mca/rmaps/round_robin/owner.txt | 7 + orte/mca/rmaps/round_robin/rmaps_rr.c | 381 + orte/mca/rmaps/round_robin/rmaps_rr.h | 66 + orte/mca/rmaps/round_robin/rmaps_rr_assign.c | 171 + .../rmaps/round_robin/rmaps_rr_component.c | 101 + orte/mca/rmaps/round_robin/rmaps_rr_mappers.c | 734 ++ orte/mca/rmaps/seq/Makefile.am | 48 + orte/mca/rmaps/seq/help-orte-rmaps-seq.txt | 36 + orte/mca/rmaps/seq/owner.txt | 7 + orte/mca/rmaps/seq/rmaps_seq.c | 544 ++ orte/mca/rmaps/seq/rmaps_seq.h | 41 + orte/mca/rmaps/seq/rmaps_seq_component.c | 97 + orte/mca/rml/Makefile.am | 39 + orte/mca/rml/base/Makefile.am | 31 + orte/mca/rml/base/base.h | 307 + orte/mca/rml/base/owner.txt | 7 + orte/mca/rml/base/rml_base_contact.c | 162 + orte/mca/rml/base/rml_base_frame.c | 375 + orte/mca/rml/base/rml_base_msg_handlers.c | 239 + orte/mca/rml/base/rml_base_receive.c | 127 + orte/mca/rml/base/rml_base_stubs.c | 383 + orte/mca/rml/base/rml_contact.h | 83 + orte/mca/rml/oob/Makefile.am | 48 + orte/mca/rml/oob/owner.txt | 7 + orte/mca/rml/oob/rml_oob.h | 72 + orte/mca/rml/oob/rml_oob_component.c | 311 + orte/mca/rml/oob/rml_oob_send.c | 268 + orte/mca/rml/rml.h | 594 ++ orte/mca/rml/rml_types.h | 232 + orte/mca/routed/Makefile.am | 31 + orte/mca/routed/base/Makefile.am | 16 + orte/mca/routed/base/base.h | 77 + orte/mca/routed/base/owner.txt | 7 + orte/mca/routed/base/routed_base_fns.c | 357 + orte/mca/routed/base/routed_base_frame.c | 166 + orte/mca/routed/binomial/Makefile.am | 41 + orte/mca/routed/binomial/owner.txt | 7 + orte/mca/routed/binomial/routed_binomial.c | 557 ++ orte/mca/routed/binomial/routed_binomial.h | 26 + .../binomial/routed_binomial_component.c | 54 + orte/mca/routed/debruijn/Makefile.am | 41 + orte/mca/routed/debruijn/owner.txt | 7 + orte/mca/routed/debruijn/routed_debruijn.c | 481 + orte/mca/routed/debruijn/routed_debruijn.h | 27 + .../debruijn/routed_debruijn_component.c | 55 + orte/mca/routed/direct/Makefile.am | 39 + orte/mca/routed/direct/owner.txt | 7 + orte/mca/routed/direct/routed_direct.c | 363 + orte/mca/routed/direct/routed_direct.h | 26 + .../routed/direct/routed_direct_component.c | 67 + orte/mca/routed/radix/Makefile.am | 39 + orte/mca/routed/radix/routed_radix.c | 540 ++ orte/mca/routed/radix/routed_radix.h | 31 + .../mca/routed/radix/routed_radix_component.c | 75 + orte/mca/routed/routed.h | 301 + orte/mca/routed/routed_types.h | 50 + orte/mca/rtc/Makefile.am | 27 + orte/mca/rtc/base/Makefile.am | 18 + orte/mca/rtc/base/base.h | 83 + orte/mca/rtc/base/help-orte-rtc-base.txt | 295 + orte/mca/rtc/base/owner.txt | 7 + orte/mca/rtc/base/rtc_base_frame.c | 98 + orte/mca/rtc/base/rtc_base_select.c | 113 + orte/mca/rtc/base/rtc_base_stubs.c | 139 + orte/mca/rtc/hwloc/Makefile.am | 36 + orte/mca/rtc/hwloc/owner.txt | 7 + orte/mca/rtc/hwloc/rtc_hwloc.c | 262 + orte/mca/rtc/hwloc/rtc_hwloc.h | 28 + orte/mca/rtc/hwloc/rtc_hwloc_component.c | 70 + orte/mca/rtc/rtc.h | 116 + orte/mca/schizo/Makefile.am | 30 + orte/mca/schizo/alps/Makefile.am | 37 + orte/mca/schizo/alps/configure.m4 | 47 + orte/mca/schizo/alps/owner.txt | 7 + orte/mca/schizo/alps/schizo_alps.c | 128 + orte/mca/schizo/alps/schizo_alps.h | 29 + orte/mca/schizo/alps/schizo_alps_component.c | 53 + orte/mca/schizo/base/Makefile.am | 16 + orte/mca/schizo/base/base.h | 84 + orte/mca/schizo/base/owner.txt | 7 + orte/mca/schizo/base/schizo_base_frame.c | 106 + orte/mca/schizo/base/schizo_base_select.c | 108 + orte/mca/schizo/base/schizo_base_stubs.c | 190 + orte/mca/schizo/flux/Makefile.am | 36 + orte/mca/schizo/flux/owner.txt | 7 + orte/mca/schizo/flux/schizo_flux.c | 100 + orte/mca/schizo/flux/schizo_flux.h | 28 + orte/mca/schizo/flux/schizo_flux_component.c | 51 + orte/mca/schizo/moab/Makefile.am | 40 + orte/mca/schizo/moab/configure.m4 | 41 + orte/mca/schizo/moab/owner.txt | 7 + orte/mca/schizo/moab/schizo_moab.c | 110 + orte/mca/schizo/moab/schizo_moab.h | 28 + orte/mca/schizo/moab/schizo_moab_component.c | 51 + orte/mca/schizo/ompi/Makefile.am | 37 + orte/mca/schizo/ompi/owner.txt | 7 + orte/mca/schizo/ompi/schizo_ompi.c | 1227 +++ orte/mca/schizo/ompi/schizo_ompi.h | 29 + orte/mca/schizo/ompi/schizo_ompi_component.c | 55 + orte/mca/schizo/orte/Makefile.am | 37 + orte/mca/schizo/orte/schizo_orte.c | 95 + orte/mca/schizo/orte/schizo_orte.h | 29 + orte/mca/schizo/orte/schizo_orte_component.c | 52 + orte/mca/schizo/schizo.h | 164 + orte/mca/schizo/singularity/Makefile.am | 37 + orte/mca/schizo/singularity/configure.m4 | 19 + orte/mca/schizo/singularity/owner.txt | 7 + .../schizo/singularity/schizo_singularity.c | 109 + .../schizo/singularity/schizo_singularity.h | 29 + .../schizo_singularity_component.c | 53 + orte/mca/schizo/slurm/Makefile.am | 37 + orte/mca/schizo/slurm/configure.m4 | 41 + orte/mca/schizo/slurm/owner.txt | 7 + orte/mca/schizo/slurm/schizo_slurm.c | 200 + orte/mca/schizo/slurm/schizo_slurm.h | 29 + .../mca/schizo/slurm/schizo_slurm_component.c | 51 + orte/mca/snapc/Makefile.am | 50 + orte/mca/snapc/base/Makefile.am | 28 + orte/mca/snapc/base/base.h | 138 + orte/mca/snapc/base/help-orte-snapc-base.txt | 25 + orte/mca/snapc/base/owner.txt | 7 + orte/mca/snapc/base/snapc_base_fns.c | 844 ++ orte/mca/snapc/base/snapc_base_frame.c | 106 + orte/mca/snapc/base/snapc_base_select.c | 105 + orte/mca/snapc/full/Makefile.am | 49 + orte/mca/snapc/full/configure.m4 | 30 + orte/mca/snapc/full/help-orte-snapc-full.txt | 37 + orte/mca/snapc/full/owner.txt | 7 + orte/mca/snapc/full/snapc_full.h | 169 + orte/mca/snapc/full/snapc_full_app.c | 1638 ++++ orte/mca/snapc/full/snapc_full_component.c | 181 + orte/mca/snapc/full/snapc_full_global.c | 2704 ++++++ orte/mca/snapc/full/snapc_full_local.c | 2083 ++++ orte/mca/snapc/full/snapc_full_module.c | 367 + orte/mca/snapc/orte_snapc.7in | 105 + orte/mca/snapc/snapc.h | 405 + orte/mca/sstore/Makefile.am | 42 + orte/mca/sstore/base/Makefile.am | 19 + orte/mca/sstore/base/base.h | 116 + orte/mca/sstore/base/owner.txt | 7 + orte/mca/sstore/base/sstore_base_fns.c | 973 ++ orte/mca/sstore/base/sstore_base_frame.c | 185 + orte/mca/sstore/base/sstore_base_select.c | 59 + orte/mca/sstore/central/Makefile.am | 42 + orte/mca/sstore/central/configure.m4 | 24 + .../central/help-orte-sstore-central.txt | 19 + orte/mca/sstore/central/owner.txt | 7 + orte/mca/sstore/central/sstore_central.h | 125 + orte/mca/sstore/central/sstore_central_app.c | 762 ++ .../sstore/central/sstore_central_component.c | 123 + .../sstore/central/sstore_central_global.c | 1216 +++ .../mca/sstore/central/sstore_central_local.c | 982 ++ .../sstore/central/sstore_central_module.c | 356 + orte/mca/sstore/orte_sstore.7in | 66 + orte/mca/sstore/sstore.h | 412 + orte/mca/sstore/stage/Makefile.am | 42 + orte/mca/sstore/stage/configure.m4 | 24 + .../sstore/stage/help-orte-sstore-stage.txt | 26 + orte/mca/sstore/stage/owner.txt | 7 + orte/mca/sstore/stage/sstore_stage.h | 145 + orte/mca/sstore/stage/sstore_stage_app.c | 742 ++ .../mca/sstore/stage/sstore_stage_component.c | 290 + orte/mca/sstore/stage/sstore_stage_global.c | 1755 ++++ orte/mca/sstore/stage/sstore_stage_local.c | 2101 ++++ orte/mca/sstore/stage/sstore_stage_module.c | 369 + orte/mca/state/Makefile.am | 31 + orte/mca/state/app/Makefile.am | 37 + orte/mca/state/app/owner.txt | 7 + orte/mca/state/app/state_app.c | 99 + orte/mca/state/app/state_app.h | 36 + orte/mca/state/app/state_app_component.c | 84 + orte/mca/state/base/Makefile.am | 18 + orte/mca/state/base/base.h | 40 + orte/mca/state/base/owner.txt | 7 + orte/mca/state/base/state_base_fns.c | 1170 +++ orte/mca/state/base/state_base_frame.c | 113 + orte/mca/state/base/state_base_select.c | 56 + orte/mca/state/base/state_private.h | 84 + orte/mca/state/dvm/Makefile.am | 36 + orte/mca/state/dvm/owner.txt | 7 + orte/mca/state/dvm/state_dvm.c | 491 + orte/mca/state/dvm/state_dvm.h | 35 + orte/mca/state/dvm/state_dvm_component.c | 83 + orte/mca/state/hnp/Makefile.am | 37 + orte/mca/state/hnp/owner.txt | 7 + orte/mca/state/hnp/state_hnp.c | 198 + orte/mca/state/hnp/state_hnp.h | 36 + orte/mca/state/hnp/state_hnp_component.c | 84 + orte/mca/state/novm/Makefile.am | 37 + orte/mca/state/novm/owner.txt | 7 + orte/mca/state/novm/state_novm.c | 287 + orte/mca/state/novm/state_novm.h | 36 + orte/mca/state/novm/state_novm_component.c | 84 + orte/mca/state/orted/Makefile.am | 37 + orte/mca/state/orted/owner.txt | 7 + orte/mca/state/orted/state_orted.c | 578 ++ orte/mca/state/orted/state_orted.h | 36 + orte/mca/state/orted/state_orted_component.c | 84 + orte/mca/state/state.h | 278 + orte/mca/state/state_types.h | 77 + orte/mca/state/tool/Makefile.am | 36 + orte/mca/state/tool/owner.txt | 7 + orte/mca/state/tool/state_tool.c | 100 + orte/mca/state/tool/state_tool.h | 37 + orte/mca/state/tool/state_tool_component.c | 85 + orte/orted/Makefile.am | 46 + orte/orted/ft_tester.c | 121 + orte/orted/help-orted.txt | 91 + orte/orted/orted.h | 52 + orte/orted/orted_comm.c | 1463 +++ orte/orted/orted_main.c | 1015 ++ orte/orted/orted_submit.c | 3318 +++++++ orte/orted/orted_submit.h | 109 + orte/orted/pmix/Makefile.am | 21 + orte/orted/pmix/pmix_server.c | 689 ++ orte/orted/pmix/pmix_server.h | 41 + orte/orted/pmix/pmix_server_dyn.c | 541 ++ orte/orted/pmix/pmix_server_fence.c | 272 + orte/orted/pmix/pmix_server_gen.c | 901 ++ orte/orted/pmix/pmix_server_internal.h | 273 + orte/orted/pmix/pmix_server_pub.c | 580 ++ orte/orted/pmix/pmix_server_register_fns.c | 441 + orte/runtime/Makefile.am | 54 + .../data_type_support/orte_dt_compare_fns.c | 215 + .../data_type_support/orte_dt_copy_fns.c | 329 + .../data_type_support/orte_dt_packing_fns.c | 877 ++ .../data_type_support/orte_dt_print_fns.c | 870 ++ .../data_type_support/orte_dt_support.h | 173 + .../data_type_support/orte_dt_unpacking_fns.c | 971 ++ orte/runtime/help-orte-runtime.txt | 63 + orte/runtime/orte_cr.c | 400 + orte/runtime/orte_cr.h | 57 + orte/runtime/orte_data_server.c | 719 ++ orte/runtime/orte_data_server.h | 54 + orte/runtime/orte_finalize.c | 102 + orte/runtime/orte_globals.c | 917 ++ orte/runtime/orte_globals.h | 592 ++ orte/runtime/orte_info_support.c | 116 + orte/runtime/orte_info_support.h | 44 + orte/runtime/orte_init.c | 283 + orte/runtime/orte_locks.c | 46 + orte/runtime/orte_locks.h | 48 + orte/runtime/orte_mca_params.c | 793 ++ orte/runtime/orte_quit.c | 395 + orte/runtime/orte_quit.h | 37 + orte/runtime/orte_wait.c | 266 + orte/runtime/orte_wait.h | 188 + orte/runtime/runtime.h | 81 + orte/runtime/runtime_internals.h | 40 + orte/test/mpi/Makefile | 29 + orte/test/mpi/Makefile.include | 60 + orte/test/mpi/abort.c | 44 + orte/test/mpi/accept.c | 44 + orte/test/mpi/add_host.c | 68 + orte/test/mpi/attach.c | 30 + orte/test/mpi/bad_exit.c | 25 + orte/test/mpi/badcoll.c | 28 + orte/test/mpi/bcast_loop.c | 36 + orte/test/mpi/binding.c | 64 + orte/test/mpi/client.c | 37 + orte/test/mpi/concurrent_spawn.c | 82 + orte/test/mpi/connect.c | 35 + orte/test/mpi/crisscross.c | 273 + orte/test/mpi/debugger.c | 31 + orte/test/mpi/delayed_abort.c | 39 + orte/test/mpi/early_abort.c | 46 + orte/test/mpi/hello.c | 36 + orte/test/mpi/hello_barrier.c | 24 + orte/test/mpi/hello_nodename.c | 52 + orte/test/mpi/hello_output.c | 37 + orte/test/mpi/hello_show_help.c | 53 + orte/test/mpi/hellocycle.pl | 33 + orte/test/mpi/info_spawn.c | 82 + orte/test/mpi/init-exit77.c | 13 + orte/test/mpi/intercomm_create.c | 174 + orte/test/mpi/iof.c | 65 + orte/test/mpi/loop_child.c | 30 + orte/test/mpi/loop_spawn.c | 48 + orte/test/mpi/makedata.pl | 46 + orte/test/mpi/mpi_barrier.c | 17 + orte/test/mpi/mpi_info.c | 43 + orte/test/mpi/mpi_no_op.c | 17 + orte/test/mpi/mpi_spin.c | 91 + orte/test/mpi/multi_abort.c | 25 + orte/test/mpi/myhello.spec | 3 + orte/test/mpi/myring.spec | 3 + orte/test/mpi/no-disconnect.c | 210 + orte/test/mpi/nonzero.c | 23 + orte/test/mpi/paccept.c | 102 + orte/test/mpi/parallel_r64.c | 222 + orte/test/mpi/parallel_r8.c | 222 + orte/test/mpi/parallel_w64.c | 228 + orte/test/mpi/parallel_w8.c | 227 + orte/test/mpi/pconnect.c | 98 + orte/test/mpi/pmix.c | 130 + orte/test/mpi/pubsub.c | 64 + orte/test/mpi/read_write.c | 56 + orte/test/mpi/reduce-hang.c | 37 + orte/test/mpi/ring.c | 63 + orte/test/mpi/segv.c | 30 + orte/test/mpi/sendrecv_blaster.c | 189 + orte/test/mpi/server.c | 55 + orte/test/mpi/shell_hello | 3 + orte/test/mpi/simple_spawn.c | 65 + orte/test/mpi/singleton_client_server.c | 214 + orte/test/mpi/sio.c | 23 + orte/test/mpi/slave.c | 33 + orte/test/mpi/spawn-problem/Makefile | 16 + orte/test/mpi/spawn-problem/ch_rec.c | 52 + orte/test/mpi/spawn-problem/start.c | 28 + orte/test/mpi/spawn_multiple.c | 64 + orte/test/mpi/spawn_tree.c | 71 + orte/test/mpi/thread_init.c | 11 + orte/test/mpi/xlib.c | 217 + orte/test/mpi/ziaprobe.c | 198 + orte/test/mpi/ziatest.README | 21 + orte/test/mpi/ziatest.c | 52 + orte/test/system/Makefile | 21 + orte/test/system/Makefile.include | 47 + orte/test/system/binom.c | 139 + orte/test/system/event-threads.c | 152 + orte/test/system/evpri-test.c | 108 + orte/test/system/evpri-test2.c | 101 + orte/test/system/evthread-test.c | 154 + orte/test/system/get_limits.c | 39 + orte/test/system/getenv_pmi.c | 98 + orte/test/system/iof_delay.c | 64 + orte/test/system/iof_stress.c | 71 + orte/test/system/mapper.c | 75 + orte/test/system/mapr.py | 18 + orte/test/system/no_op.c | 13 + orte/test/system/ofi_big_msg.c | 119 + orte/test/system/ofi_conduit_stress.c | 143 + orte/test/system/ofi_query_test.c | 137 + orte/test/system/ofi_stress.c | 121 + orte/test/system/oob_stress.c | 118 + orte/test/system/oob_stress_channel.c | 232 + orte/test/system/opal-evpri-test.c | 107 + orte/test/system/opal_hotel.c | 106 + orte/test/system/opal_hwloc.c | 135 + orte/test/system/opal_interface.c | 82 + orte/test/system/orte_abort.c | 58 + orte/test/system/orte_dfs.c | 311 + orte/test/system/orte_errors.c | 33 + orte/test/system/orte_exit.c | 53 + orte/test/system/orte_loop_child.c | 22 + orte/test/system/orte_loop_spawn.c | 55 + orte/test/system/orte_no_op.c | 24 + orte/test/system/orte_nodename.c | 51 + orte/test/system/orte_notify.c | 83 + orte/test/system/orte_spawn.c | 91 + orte/test/system/orte_spin.c | 41 + orte/test/system/orte_tool.c | 104 + orte/test/system/pmixtool.c | 78 + orte/test/system/psm_keygen.c | 50 + orte/test/system/radix.c | 137 + orte/test/system/red.py | 38 + orte/test/system/reducer.c | 82 + orte/test/system/regex.c | 67 + orte/test/system/segfault.c | 18 + orte/test/system/sigusr_trap.c | 115 + orte/test/system/spin.c | 31 + orte/test/system/test-time.c | 88 + orte/test/system/threads.c | 335 + orte/test/system/ulfm.c | 52 + orte/tools/Makefile.am | 54 + orte/tools/orte-checkpoint/Makefile.am | 51 + .../orte-checkpoint/help-orte-checkpoint.txt | 113 + .../tools/orte-checkpoint/orte-checkpoint.1in | 103 + orte/tools/orte-checkpoint/orte-checkpoint.c | 985 ++ orte/tools/orte-clean/Makefile.am | 47 + orte/tools/orte-clean/help-orte-clean.txt | 26 + orte/tools/orte-clean/orte-clean.1in | 120 + orte/tools/orte-clean/orte-clean.c | 436 + orte/tools/orte-dvm/Makefile.am | 57 + orte/tools/orte-dvm/orte-dvm.1in | 193 + orte/tools/orte-dvm/orte-dvm.c | 587 ++ orte/tools/orte-info/Makefile.am | 78 + orte/tools/orte-info/components.c | 110 + orte/tools/orte-info/help-orte-info.txt | 58 + orte/tools/orte-info/orte-info.1in | 162 + orte/tools/orte-info/orte-info.c | 280 + orte/tools/orte-info/orte-info.h | 127 + orte/tools/orte-info/output.c | 199 + orte/tools/orte-info/param.c | 436 + orte/tools/orte-info/version.c | 359 + orte/tools/orte-migrate/Makefile.am | 44 + orte/tools/orte-migrate/help-orte-migrate.txt | 81 + orte/tools/orte-migrate/orte-migrate.1in | 81 + orte/tools/orte-migrate/orte-migrate.c | 791 ++ orte/tools/orte-ps/Makefile.am | 47 + orte/tools/orte-ps/help-orte-ps.txt | 46 + orte/tools/orte-ps/orte-ps.1in | 101 + orte/tools/orte-ps/orte-ps.c | 985 ++ orte/tools/orte-restart/Makefile.am | 51 + orte/tools/orte-restart/help-orte-restart.txt | 77 + orte/tools/orte-restart/orte-restart.1in | 115 + orte/tools/orte-restart/orte-restart.c | 897 ++ orte/tools/orte-server/Makefile.am | 47 + orte/tools/orte-server/help-orte-server.txt | 27 + orte/tools/orte-server/orte-server.1in | 72 + orte/tools/orte-server/orte-server.c | 305 + orte/tools/orte-top/Makefile.am | 47 + orte/tools/orte-top/help-orte-top.txt | 82 + orte/tools/orte-top/orte-top.1in | 106 + orte/tools/orte-top/orte-top.c | 1023 ++ orte/tools/orted/Makefile.am | 52 + orte/tools/orted/orted.1in | 46 + orte/tools/orted/orted.c | 61 + orte/tools/orterun/Makefile.am | 53 + orte/tools/orterun/help-orterun.txt | 694 ++ orte/tools/orterun/main.c | 32 + orte/tools/orterun/orterun.1in | 1727 ++++ orte/tools/orterun/orterun.c | 234 + orte/tools/orterun/orterun.h | 37 + orte/tools/wrappers/Makefile.am | 40 + orte/tools/wrappers/orte.pc.in | 25 + orte/tools/wrappers/orte_wrapper_script.in | 172 + .../tools/wrappers/ortecc-wrapper-data.txt.in | 29 + orte/util/Makefile.am | 91 + orte/util/attr.c | 609 ++ orte/util/attr.h | 234 + orte/util/comm/comm.c | 810 ++ orte/util/comm/comm.h | 64 + orte/util/compress.c | 117 + orte/util/compress.h | 53 + orte/util/context_fns.c | 153 + orte/util/context_fns.h | 40 + orte/util/dash_host/dash_host.c | 639 ++ orte/util/dash_host/dash_host.h | 46 + orte/util/dash_host/help-dash-host.txt | 68 + orte/util/error_strings.c | 441 + orte/util/error_strings.h | 49 + orte/util/help-regex.txt | 86 + orte/util/hnp_contact.c | 237 + orte/util/hnp_contact.h | 61 + orte/util/hostfile/help-hostfile.txt | 146 + orte/util/hostfile/hostfile.c | 1034 ++ orte/util/hostfile/hostfile.h | 45 + orte/util/hostfile/hostfile_lex.h | 86 + orte/util/hostfile/hostfile_lex.l | 188 + orte/util/hostfile/orte_hosts.7in | 197 + orte/util/listener.c | 381 + orte/util/listener.h | 66 + orte/util/name_fns.c | 679 ++ orte/util/name_fns.h | 144 + orte/util/nidmap.c | 1397 +++ orte/util/nidmap.h | 70 + orte/util/parse_options.c | 145 + orte/util/parse_options.h | 36 + orte/util/pre_condition_transports.c | 191 + orte/util/pre_condition_transports.h | 42 + orte/util/proc_info.c | 359 + orte/util/proc_info.h | 166 + orte/util/regex.c | 404 + orte/util/regex.h | 59 + orte/util/session_dir.c | 585 ++ orte/util/session_dir.h | 150 + orte/util/show_help.c | 802 ++ orte/util/show_help.h | 109 + orte/util/threads.h | 159 + oshmem/Makefile.am | 118 + oshmem/include/Makefile.am | 54 + oshmem/include/oshmem/Makefile.am | 17 + oshmem/include/oshmem/constants.h | 123 + oshmem/include/oshmem/types.h | 25 + oshmem/include/oshmem/version.h.in | 30 + oshmem/include/oshmem_config.h | 67 + oshmem/include/pshmem.h | 546 ++ oshmem/include/pshmemx.h | 220 + oshmem/include/shmem-compat.h | 47 + oshmem/include/shmem.fh | 64 + oshmem/include/shmem.h.in | 634 ++ oshmem/include/shmemx.h | 206 + oshmem/info/Makefile.am | 18 + oshmem/info/info.c | 336 + oshmem/info/info.h | 69 + oshmem/mca/Makefile.am | 23 + oshmem/mca/atomic/Makefile.am | 29 + oshmem/mca/atomic/atomic.h | 126 + oshmem/mca/atomic/base/Makefile.am | 17 + .../mca/atomic/base/atomic_base_available.c | 137 + oshmem/mca/atomic/base/atomic_base_frame.c | 94 + oshmem/mca/atomic/base/atomic_base_select.c | 243 + oshmem/mca/atomic/base/base.h | 57 + oshmem/mca/atomic/basic/Makefile.am | 40 + oshmem/mca/atomic/basic/atomic_basic.h | 58 + .../mca/atomic/basic/atomic_basic_component.c | 92 + oshmem/mca/atomic/basic/atomic_basic_cswap.c | 48 + oshmem/mca/atomic/basic/atomic_basic_fadd.c | 51 + oshmem/mca/atomic/basic/atomic_basic_module.c | 179 + oshmem/mca/atomic/mxm/Makefile.am | 43 + oshmem/mca/atomic/mxm/atomic_mxm.h | 136 + oshmem/mca/atomic/mxm/atomic_mxm_component.c | 107 + oshmem/mca/atomic/mxm/atomic_mxm_cswap.c | 52 + oshmem/mca/atomic/mxm/atomic_mxm_fadd.c | 51 + oshmem/mca/atomic/mxm/atomic_mxm_module.c | 50 + oshmem/mca/atomic/mxm/configure.m4 | 60 + oshmem/mca/atomic/ucx/Makefile.am | 44 + oshmem/mca/atomic/ucx/atomic_ucx.h | 65 + oshmem/mca/atomic/ucx/atomic_ucx_component.c | 112 + oshmem/mca/atomic/ucx/atomic_ucx_cswap.c | 70 + oshmem/mca/atomic/ucx/atomic_ucx_fadd.c | 68 + oshmem/mca/atomic/ucx/atomic_ucx_module.c | 51 + oshmem/mca/atomic/ucx/configure.m4 | 32 + oshmem/mca/mca.h | 39 + oshmem/mca/memheap/Makefile.am | 33 + oshmem/mca/memheap/README | 50 + oshmem/mca/memheap/base/Makefile.am | 24 + oshmem/mca/memheap/base/base.h | 291 + .../mca/memheap/base/help-oshmem-memheap.txt | 23 + oshmem/mca/memheap/base/memheap_base_alloc.c | 56 + oshmem/mca/memheap/base/memheap_base_frame.c | 108 + oshmem/mca/memheap/base/memheap_base_mkey.c | 760 ++ .../mca/memheap/base/memheap_base_register.c | 142 + oshmem/mca/memheap/base/memheap_base_select.c | 139 + oshmem/mca/memheap/base/memheap_base_static.c | 233 + oshmem/mca/memheap/buddy/Makefile.am | 41 + oshmem/mca/memheap/buddy/memheap_buddy.c | 696 ++ oshmem/mca/memheap/buddy/memheap_buddy.h | 88 + .../memheap/buddy/memheap_buddy_component.c | 67 + .../memheap/buddy/memheap_buddy_component.h | 26 + oshmem/mca/memheap/configure.m4 | 19 + oshmem/mca/memheap/memheap.h | 153 + oshmem/mca/memheap/ptmalloc/Makefile.am | 43 + oshmem/mca/memheap/ptmalloc/malloc.c | 5502 +++++++++++ oshmem/mca/memheap/ptmalloc/malloc_defs.h | 32 + .../mca/memheap/ptmalloc/memheap_ptmalloc.c | 180 + .../mca/memheap/ptmalloc/memheap_ptmalloc.h | 72 + .../ptmalloc/memheap_ptmalloc_component.c | 68 + .../ptmalloc/memheap_ptmalloc_component.h | 26 + oshmem/mca/scoll/Makefile.am | 29 + oshmem/mca/scoll/base/Makefile.am | 17 + oshmem/mca/scoll/base/base.h | 69 + oshmem/mca/scoll/base/scoll_base_available.c | 137 + oshmem/mca/scoll/base/scoll_base_frame.c | 121 + oshmem/mca/scoll/base/scoll_base_select.c | 388 + oshmem/mca/scoll/basic/Makefile.am | 43 + oshmem/mca/scoll/basic/scoll_basic.h | 109 + oshmem/mca/scoll/basic/scoll_basic_alltoall.c | 123 + oshmem/mca/scoll/basic/scoll_basic_barrier.c | 586 ++ .../mca/scoll/basic/scoll_basic_broadcast.c | 254 + oshmem/mca/scoll/basic/scoll_basic_collect.c | 631 ++ .../mca/scoll/basic/scoll_basic_component.c | 165 + oshmem/mca/scoll/basic/scoll_basic_module.c | 61 + oshmem/mca/scoll/basic/scoll_basic_reduce.c | 810 ++ oshmem/mca/scoll/fca/Makefile.am | 44 + oshmem/mca/scoll/fca/configure.m4 | 40 + .../mca/scoll/fca/help-oshmem-scoll-fca.txt | 16 + oshmem/mca/scoll/fca/scoll_fca.h | 136 + oshmem/mca/scoll/fca/scoll_fca_api.h | 81 + oshmem/mca/scoll/fca/scoll_fca_component.c | 353 + oshmem/mca/scoll/fca/scoll_fca_debug.h | 35 + oshmem/mca/scoll/fca/scoll_fca_module.c | 571 ++ oshmem/mca/scoll/fca/scoll_fca_ops.c | 301 + oshmem/mca/scoll/mpi/Makefile.am | 40 + .../mca/scoll/mpi/help-oshmem-scoll-mpi.txt | 16 + oshmem/mca/scoll/mpi/scoll_mpi.h | 114 + oshmem/mca/scoll/mpi/scoll_mpi_component.c | 173 + oshmem/mca/scoll/mpi/scoll_mpi_debug.h | 35 + oshmem/mca/scoll/mpi/scoll_mpi_dtypes.h | 71 + oshmem/mca/scoll/mpi/scoll_mpi_module.c | 194 + oshmem/mca/scoll/mpi/scoll_mpi_ops.c | 215 + oshmem/mca/scoll/scoll.h | 207 + oshmem/mca/spml/Makefile.am | 29 + oshmem/mca/spml/base/Makefile.am | 28 + oshmem/mca/spml/base/base.h | 120 + oshmem/mca/spml/base/spml_base.c | 180 + oshmem/mca/spml/base/spml_base_atomicreq.c | 39 + oshmem/mca/spml/base/spml_base_atomicreq.h | 101 + oshmem/mca/spml/base/spml_base_frame.c | 163 + oshmem/mca/spml/base/spml_base_getreq.c | 39 + oshmem/mca/spml/base/spml_base_getreq.h | 93 + oshmem/mca/spml/base/spml_base_putreq.c | 36 + oshmem/mca/spml/base/spml_base_putreq.h | 98 + oshmem/mca/spml/base/spml_base_request.c | 41 + oshmem/mca/spml/base/spml_base_request.h | 85 + oshmem/mca/spml/base/spml_base_request_dbg.h | 25 + oshmem/mca/spml/base/spml_base_select.c | 207 + oshmem/mca/spml/configure.m4 | 19 + oshmem/mca/spml/ikrit/Makefile.am | 43 + oshmem/mca/spml/ikrit/configure.m4 | 32 + .../mca/spml/ikrit/help-oshmem-spml-ikrit.txt | 45 + oshmem/mca/spml/ikrit/spml_ikrit.c | 1082 +++ oshmem/mca/spml/ikrit/spml_ikrit.h | 203 + oshmem/mca/spml/ikrit/spml_ikrit_component.c | 429 + oshmem/mca/spml/ikrit/spml_ikrit_component.h | 25 + oshmem/mca/spml/spml.h | 348 + oshmem/mca/spml/ucx/Makefile.am | 44 + oshmem/mca/spml/ucx/configure.m4 | 32 + oshmem/mca/spml/ucx/spml_ucx.c | 638 ++ oshmem/mca/spml/ucx/spml_ucx.h | 160 + oshmem/mca/spml/ucx/spml_ucx_component.c | 201 + oshmem/mca/spml/ucx/spml_ucx_component.h | 25 + oshmem/mca/sshmem/Makefile.am | 29 + oshmem/mca/sshmem/base/Makefile.am | 19 + oshmem/mca/sshmem/base/base.h | 156 + oshmem/mca/sshmem/base/help-oshmem-sshmem.txt | 25 + oshmem/mca/sshmem/base/sshmem_base_close.c | 33 + oshmem/mca/sshmem/base/sshmem_base_open.c | 108 + oshmem/mca/sshmem/base/sshmem_base_select.c | 154 + oshmem/mca/sshmem/base/sshmem_base_wrappers.c | 87 + oshmem/mca/sshmem/mmap/Makefile.am | 38 + oshmem/mca/sshmem/mmap/configure.m4 | 42 + .../sshmem/mmap/help-oshmem-sshmem-mmap.txt | 26 + oshmem/mca/sshmem/mmap/sshmem_mmap.h | 42 + .../mca/sshmem/mmap/sshmem_mmap_component.c | 148 + oshmem/mca/sshmem/mmap/sshmem_mmap_module.c | 323 + oshmem/mca/sshmem/sshmem.h | 162 + oshmem/mca/sshmem/sshmem_types.h | 124 + oshmem/mca/sshmem/sysv/Makefile.am | 39 + oshmem/mca/sshmem/sysv/configure.m4 | 42 + .../sshmem/sysv/help-oshmem-sshmem-sysv.txt | 24 + oshmem/mca/sshmem/sysv/sshmem_sysv.h | 45 + .../mca/sshmem/sysv/sshmem_sysv_component.c | 220 + oshmem/mca/sshmem/sysv/sshmem_sysv_module.c | 314 + oshmem/mca/sshmem/ucx/Makefile.am | 42 + oshmem/mca/sshmem/ucx/configure.m4 | 32 + oshmem/mca/sshmem/ucx/sshmem_ucx.h | 40 + oshmem/mca/sshmem/ucx/sshmem_ucx_component.c | 125 + oshmem/mca/sshmem/ucx/sshmem_ucx_module.c | 190 + oshmem/mca/sshmem/verbs/Makefile.am | 41 + oshmem/mca/sshmem/verbs/configure.m4 | 121 + oshmem/mca/sshmem/verbs/sshmem_verbs.h | 96 + .../mca/sshmem/verbs/sshmem_verbs_component.c | 353 + oshmem/mca/sshmem/verbs/sshmem_verbs_module.c | 460 + oshmem/op/Makefile.am | 19 + oshmem/op/op.c | 487 + oshmem/op/op.h | 227 + oshmem/proc/Makefile.am | 21 + oshmem/proc/proc.c | 241 + oshmem/proc/proc.h | 301 + oshmem/proc/proc_group_cache.c | 117 + oshmem/proc/proc_group_cache.h | 41 + oshmem/request/Makefile.am | 19 + oshmem/request/request.c | 181 + oshmem/request/request.h | 443 + oshmem/request/request_dbg.h | 49 + oshmem/runtime/Makefile.am | 29 + oshmem/runtime/help-shmem-runtime.txt | 42 + oshmem/runtime/oshmem_info_support.c | 105 + oshmem/runtime/oshmem_info_support.h | 26 + oshmem/runtime/oshmem_shmem_abort.c | 145 + oshmem/runtime/oshmem_shmem_exchange.c | 43 + oshmem/runtime/oshmem_shmem_finalize.c | 170 + oshmem/runtime/oshmem_shmem_init.c | 369 + oshmem/runtime/oshmem_shmem_params.c | 85 + oshmem/runtime/oshmem_shmem_preconnect.h | 24 + oshmem/runtime/params.h | 42 + oshmem/runtime/runtime.h | 201 + oshmem/shmem/Makefile.am | 17 + oshmem/shmem/c/Makefile.am | 89 + oshmem/shmem/c/profile/Makefile.am | 108 + oshmem/shmem/c/profile/defines.h | 407 + oshmem/shmem/c/shmem_add.c | 64 + oshmem/shmem/c/shmem_addr_accessible.c | 41 + oshmem/shmem/c/shmem_align.c | 60 + oshmem/shmem/c/shmem_alloc.c | 59 + oshmem/shmem/c/shmem_alltoall.c | 137 + oshmem/shmem/c/shmem_barrier.c | 93 + oshmem/shmem/c/shmem_broadcast.c | 119 + oshmem/shmem/c/shmem_clear_cache_inv.c | 36 + oshmem/shmem/c/shmem_clear_cache_line_inv.c | 36 + oshmem/shmem/c/shmem_clear_lock.c | 31 + oshmem/shmem/c/shmem_collect.c | 116 + oshmem/shmem/c/shmem_cswap.c | 66 + oshmem/shmem/c/shmem_fadd.c | 66 + oshmem/shmem/c/shmem_fence.c | 27 + oshmem/shmem/c/shmem_fetch.c | 71 + oshmem/shmem/c/shmem_finalize.c | 36 + oshmem/shmem/c/shmem_finc.c | 67 + oshmem/shmem/c/shmem_free.c | 55 + oshmem/shmem/c/shmem_g.c | 72 + oshmem/shmem/c/shmem_get.c | 101 + oshmem/shmem/c/shmem_get_nb.c | 100 + oshmem/shmem/c/shmem_global_exit.c | 45 + oshmem/shmem/c/shmem_iget.c | 106 + oshmem/shmem/c/shmem_inc.c | 66 + oshmem/shmem/c/shmem_info.c | 36 + oshmem/shmem/c/shmem_init.c | 82 + oshmem/shmem/c/shmem_iput.c | 105 + oshmem/shmem/c/shmem_lock.c | 1055 ++ oshmem/shmem/c/shmem_p.c | 73 + oshmem/shmem/c/shmem_pe_accessible.c | 35 + oshmem/shmem/c/shmem_ptr.c | 36 + oshmem/shmem/c/shmem_put.c | 104 + oshmem/shmem/c/shmem_put_nb.c | 107 + oshmem/shmem/c/shmem_query.c | 62 + oshmem/shmem/c/shmem_quiet.c | 27 + oshmem/shmem/c/shmem_realloc.c | 62 + oshmem/shmem/c/shmem_reduce.c | 244 + oshmem/shmem/c/shmem_set.c | 66 + oshmem/shmem/c/shmem_set_cache_inv.c | 36 + oshmem/shmem/c/shmem_set_cache_line_inv.c | 36 + oshmem/shmem/c/shmem_set_lock.c | 31 + oshmem/shmem/c/shmem_swap.c | 67 + oshmem/shmem/c/shmem_test_lock.c | 32 + oshmem/shmem/c/shmem_udcflush.c | 35 + oshmem/shmem/c/shmem_udcflush_line.c | 34 + oshmem/shmem/c/shmem_wait.c | 91 + oshmem/shmem/fortran/Makefile.am | 149 + oshmem/shmem/fortran/bindings.h | 40 + oshmem/shmem/fortran/profile/Makefile.am | 159 + oshmem/shmem/fortran/profile/defines.h | 749 ++ oshmem/shmem/fortran/profile/pbindings.h | 24 + .../shmem/fortran/profile/prototypes_pshmem.h | 219 + oshmem/shmem/fortran/prototypes_shmem.h | 222 + .../shmem/fortran/shmem_addr_accessible_f.c | 36 + oshmem/shmem/fortran/shmem_alltoall_f.c | 191 + oshmem/shmem/fortran/shmem_and_to_all_f.c | 119 + oshmem/shmem/fortran/shmem_barrier_all_f.c | 34 + oshmem/shmem/fortran/shmem_barrier_f.c | 37 + oshmem/shmem/fortran/shmem_broadcast_f.c | 137 + oshmem/shmem/fortran/shmem_cache_f.c | 105 + oshmem/shmem/fortran/shmem_character_get_f.c | 45 + oshmem/shmem/fortran/shmem_character_put_f.c | 46 + oshmem/shmem/fortran/shmem_collect_f.c | 164 + oshmem/shmem/fortran/shmem_complex_get_f.c | 45 + oshmem/shmem/fortran/shmem_complex_iget_f.c | 53 + oshmem/shmem/fortran/shmem_complex_iput_f.c | 54 + oshmem/shmem/fortran/shmem_complex_put_f.c | 45 + oshmem/shmem/fortran/shmem_double_get_f.c | 45 + oshmem/shmem/fortran/shmem_double_iget_f.c | 53 + oshmem/shmem/fortran/shmem_double_iput_f.c | 54 + oshmem/shmem/fortran/shmem_double_put_f.c | 45 + oshmem/shmem/fortran/shmem_fence_f.c | 34 + oshmem/shmem/fortran/shmem_finalize_f.c | 28 + oshmem/shmem/fortran/shmem_fortran_pointer.h | 17 + oshmem/shmem/fortran/shmem_get128_f.c | 41 + oshmem/shmem/fortran/shmem_get32_f.c | 41 + oshmem/shmem/fortran/shmem_get4_f.c | 41 + oshmem/shmem/fortran/shmem_get64_f.c | 41 + oshmem/shmem/fortran/shmem_get8_f.c | 41 + oshmem/shmem/fortran/shmem_get_nb_f.c | 250 + oshmem/shmem/fortran/shmem_getmem_f.c | 41 + oshmem/shmem/fortran/shmem_global_exit_f.c | 33 + oshmem/shmem/fortran/shmem_iget128_f.c | 50 + oshmem/shmem/fortran/shmem_iget32_f.c | 50 + oshmem/shmem/fortran/shmem_iget4_f.c | 50 + oshmem/shmem/fortran/shmem_iget64_f.c | 50 + oshmem/shmem/fortran/shmem_iget8_f.c | 50 + oshmem/shmem/fortran/shmem_info_f.c | 54 + oshmem/shmem/fortran/shmem_init_f.c | 47 + oshmem/shmem/fortran/shmem_int4_add_f.c | 48 + oshmem/shmem/fortran/shmem_int4_cswap_f.c | 50 + oshmem/shmem/fortran/shmem_int4_fadd_f.c | 50 + oshmem/shmem/fortran/shmem_int4_fetch_f.c | 50 + oshmem/shmem/fortran/shmem_int4_finc_f.c | 51 + oshmem/shmem/fortran/shmem_int4_inc_f.c | 48 + oshmem/shmem/fortran/shmem_int4_set_f.c | 45 + oshmem/shmem/fortran/shmem_int4_swap_f.c | 48 + oshmem/shmem/fortran/shmem_int4_wait_f.c | 37 + .../shmem/fortran/shmem_int4_wait_until_f.c | 40 + oshmem/shmem/fortran/shmem_int8_add_f.c | 48 + oshmem/shmem/fortran/shmem_int8_cswap_f.c | 50 + oshmem/shmem/fortran/shmem_int8_fadd_f.c | 50 + oshmem/shmem/fortran/shmem_int8_fetch_f.c | 50 + oshmem/shmem/fortran/shmem_int8_finc_f.c | 51 + oshmem/shmem/fortran/shmem_int8_inc_f.c | 49 + oshmem/shmem/fortran/shmem_int8_set_f.c | 45 + oshmem/shmem/fortran/shmem_int8_swap_f.c | 48 + oshmem/shmem/fortran/shmem_int8_wait_f.c | 37 + .../shmem/fortran/shmem_int8_wait_until_f.c | 40 + oshmem/shmem/fortran/shmem_integer_get_f.c | 45 + oshmem/shmem/fortran/shmem_integer_iget_f.c | 53 + oshmem/shmem/fortran/shmem_integer_iput_f.c | 54 + oshmem/shmem/fortran/shmem_integer_put_f.c | 45 + oshmem/shmem/fortran/shmem_iput128_f.c | 51 + oshmem/shmem/fortran/shmem_iput32_f.c | 50 + oshmem/shmem/fortran/shmem_iput4_f.c | 51 + oshmem/shmem/fortran/shmem_iput64_f.c | 51 + oshmem/shmem/fortran/shmem_iput8_f.c | 51 + oshmem/shmem/fortran/shmem_lock_f.c | 64 + oshmem/shmem/fortran/shmem_logical_get_f.c | 45 + oshmem/shmem/fortran/shmem_logical_iget_f.c | 53 + oshmem/shmem/fortran/shmem_logical_iput_f.c | 54 + oshmem/shmem/fortran/shmem_logical_put_f.c | 45 + oshmem/shmem/fortran/shmem_max_to_all_f.c | 146 + oshmem/shmem/fortran/shmem_min_to_all_f.c | 147 + oshmem/shmem/fortran/shmem_my_pe_f.c | 57 + oshmem/shmem/fortran/shmem_n_pes_f.c | 51 + oshmem/shmem/fortran/shmem_or_to_all_f.c | 116 + oshmem/shmem/fortran/shmem_pe_accessible_f.c | 36 + oshmem/shmem/fortran/shmem_prod_to_all_f.c | 167 + oshmem/shmem/fortran/shmem_ptr_f.c | 36 + oshmem/shmem/fortran/shmem_put128_f.c | 42 + oshmem/shmem/fortran/shmem_put32_f.c | 42 + oshmem/shmem/fortran/shmem_put4_f.c | 42 + oshmem/shmem/fortran/shmem_put64_f.c | 42 + oshmem/shmem/fortran/shmem_put8_f.c | 42 + oshmem/shmem/fortran/shmem_put_nb_f.c | 249 + oshmem/shmem/fortran/shmem_putmem_f.c | 41 + oshmem/shmem/fortran/shmem_quiet_f.c | 34 + oshmem/shmem/fortran/shmem_real4_fetch_f.c | 49 + oshmem/shmem/fortran/shmem_real4_set_f.c | 46 + oshmem/shmem/fortran/shmem_real4_swap_f.c | 48 + oshmem/shmem/fortran/shmem_real8_fetch_f.c | 50 + oshmem/shmem/fortran/shmem_real8_set_f.c | 45 + oshmem/shmem/fortran/shmem_real8_swap_f.c | 48 + oshmem/shmem/fortran/shmem_real_get_f.c | 45 + oshmem/shmem/fortran/shmem_real_iget_f.c | 53 + oshmem/shmem/fortran/shmem_real_iput_f.c | 54 + oshmem/shmem/fortran/shmem_real_put_f.c | 45 + oshmem/shmem/fortran/shmem_sum_to_all_f.c | 166 + oshmem/shmem/fortran/shmem_swap_f.c | 50 + oshmem/shmem/fortran/shmem_wait_f.c | 37 + oshmem/shmem/fortran/shmem_wait_until_f.c | 40 + oshmem/shmem/fortran/shmem_xor_to_all_f.c | 138 + oshmem/shmem/fortran/shpalloc_f.c | 57 + oshmem/shmem/fortran/shpclmove_f.c | 67 + oshmem/shmem/fortran/shpdeallc_f.c | 38 + oshmem/shmem/help-shmem-api.txt | 14 + oshmem/shmem/man/man3/Makefile.extra | 247 + oshmem/shmem/man/man3/OpenSHMEM.3in | 1 + oshmem/shmem/man/man3/_my_pe.3in | 1 + oshmem/shmem/man/man3/_num_pes.3in | 1 + oshmem/shmem/man/man3/intro_shmem.3in | 1311 +++ oshmem/shmem/man/man3/shfree.3in | 1 + oshmem/shmem/man/man3/shmalloc.3in | 105 + .../shmem/man/man3/shmem_addr_accessible.3in | 56 + oshmem/shmem/man/man3/shmem_align.3in | 1 + oshmem/shmem/man/man3/shmem_alltoall32.3in | 226 + oshmem/shmem/man/man3/shmem_alltoall64.3in | 1 + oshmem/shmem/man/man3/shmem_alltoalls32.3in | 1 + oshmem/shmem/man/man3/shmem_alltoalls64.3in | 1 + oshmem/shmem/man/man3/shmem_barrier.3in | 112 + oshmem/shmem/man/man3/shmem_barrier_all.3in | 59 + oshmem/shmem/man/man3/shmem_broadcast32.3in | 186 + oshmem/shmem/man/man3/shmem_broadcast64.3in | 1 + oshmem/shmem/man/man3/shmem_char_g.3in | 64 + oshmem/shmem/man/man3/shmem_char_get.3in | 207 + oshmem/shmem/man/man3/shmem_char_get_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_char_p.3in | 73 + oshmem/shmem/man/man3/shmem_char_put.3in | 214 + oshmem/shmem/man/man3/shmem_char_put_nbi.3in | 1 + .../shmem/man/man3/shmem_clear_cache_inv.3in | 1 + .../man/man3/shmem_clear_cache_line_inv.3in | 1 + oshmem/shmem/man/man3/shmem_clear_lock.3in | 1 + oshmem/shmem/man/man3/shmem_collect32.3in | 197 + oshmem/shmem/man/man3/shmem_collect64.3in | 1 + .../man/man3/shmem_complexd_prod_to_all.3in | 1 + .../man/man3/shmem_complexd_sum_to_all.3in | 1 + .../man/man3/shmem_complexf_prod_to_all.3in | 1 + .../man/man3/shmem_complexf_sum_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_double_fetch.3in | 1 + oshmem/shmem/man/man3/shmem_double_g.3in | 1 + oshmem/shmem/man/man3/shmem_double_get.3in | 1 + .../shmem/man/man3/shmem_double_get_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_double_iget.3in | 1 + oshmem/shmem/man/man3/shmem_double_iput.3in | 1 + .../man/man3/shmem_double_max_to_all.3in | 1 + .../man/man3/shmem_double_min_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_double_p.3in | 1 + .../man/man3/shmem_double_prod_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_double_put.3in | 1 + .../shmem/man/man3/shmem_double_put_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_double_set.3in | 1 + .../man/man3/shmem_double_sum_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_double_swap.3in | 1 + oshmem/shmem/man/man3/shmem_fcollect32.3in | 1 + oshmem/shmem/man/man3/shmem_fcollect64.3in | 1 + oshmem/shmem/man/man3/shmem_fence.3in | 54 + oshmem/shmem/man/man3/shmem_finalize.3in | 47 + oshmem/shmem/man/man3/shmem_float_fetch.3in | 1 + oshmem/shmem/man/man3/shmem_float_g.3in | 1 + oshmem/shmem/man/man3/shmem_float_get.3in | 1 + oshmem/shmem/man/man3/shmem_float_get_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_float_iget.3in | 1 + oshmem/shmem/man/man3/shmem_float_iput.3in | 1 + .../shmem/man/man3/shmem_float_max_to_all.3in | 1 + .../shmem/man/man3/shmem_float_min_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_float_p.3in | 1 + .../man/man3/shmem_float_prod_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_float_put.3in | 1 + oshmem/shmem/man/man3/shmem_float_put_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_float_set.3in | 1 + .../shmem/man/man3/shmem_float_sum_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_float_swap.3in | 1 + oshmem/shmem/man/man3/shmem_free.3in | 1 + oshmem/shmem/man/man3/shmem_get128.3in | 1 + oshmem/shmem/man/man3/shmem_get128_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_get16_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_get32.3in | 1 + oshmem/shmem/man/man3/shmem_get32_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_get64.3in | 1 + oshmem/shmem/man/man3/shmem_get64_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_get8_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_getmem.3in | 1 + oshmem/shmem/man/man3/shmem_getmem_nbi.3in | 168 + oshmem/shmem/man/man3/shmem_global_exit.3in | 47 + oshmem/shmem/man/man3/shmem_iget128.3in | 1 + oshmem/shmem/man/man3/shmem_iget32.3in | 1 + oshmem/shmem/man/man3/shmem_iget64.3in | 1 + oshmem/shmem/man/man3/shmem_info_get_name.3in | 48 + .../shmem/man/man3/shmem_info_get_version.3in | 43 + oshmem/shmem/man/man3/shmem_init.3in | 84 + oshmem/shmem/man/man3/shmem_int_add.3in | 76 + .../shmem/man/man3/shmem_int_and_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_int_cswap.3in | 127 + oshmem/shmem/man/man3/shmem_int_fadd.3in | 79 + oshmem/shmem/man/man3/shmem_int_fetch.3in | 83 + oshmem/shmem/man/man3/shmem_int_finc.3in | 76 + oshmem/shmem/man/man3/shmem_int_g.3in | 1 + oshmem/shmem/man/man3/shmem_int_get.3in | 1 + oshmem/shmem/man/man3/shmem_int_get_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_int_iget.3in | 1 + oshmem/shmem/man/man3/shmem_int_inc.3in | 73 + oshmem/shmem/man/man3/shmem_int_iput.3in | 1 + .../shmem/man/man3/shmem_int_max_to_all.3in | 1 + .../shmem/man/man3/shmem_int_min_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_int_or_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_int_p.3in | 1 + .../shmem/man/man3/shmem_int_prod_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_int_put.3in | 1 + oshmem/shmem/man/man3/shmem_int_put_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_int_set.3in | 77 + .../shmem/man/man3/shmem_int_sum_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_int_swap.3in | 1 + oshmem/shmem/man/man3/shmem_int_wait.3in | 1 + .../shmem/man/man3/shmem_int_wait_until.3in | 1 + .../shmem/man/man3/shmem_int_xor_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_iput128.3in | 1 + oshmem/shmem/man/man3/shmem_iput32.3in | 1 + oshmem/shmem/man/man3/shmem_iput64.3in | 1 + oshmem/shmem/man/man3/shmem_long_add.3in | 1 + .../shmem/man/man3/shmem_long_and_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_long_cswap.3in | 1 + oshmem/shmem/man/man3/shmem_long_fadd.3in | 1 + oshmem/shmem/man/man3/shmem_long_fetch.3in | 1 + oshmem/shmem/man/man3/shmem_long_finc.3in | 1 + oshmem/shmem/man/man3/shmem_long_g.3in | 1 + oshmem/shmem/man/man3/shmem_long_get.3in | 1 + oshmem/shmem/man/man3/shmem_long_get_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_long_iget.3in | 1 + oshmem/shmem/man/man3/shmem_long_inc.3in | 1 + oshmem/shmem/man/man3/shmem_long_iput.3in | 1 + .../shmem/man/man3/shmem_long_max_to_all.3in | 1 + .../shmem/man/man3/shmem_long_min_to_all.3in | 1 + .../shmem/man/man3/shmem_long_or_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_long_p.3in | 1 + .../shmem/man/man3/shmem_long_prod_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_long_put.3in | 1 + oshmem/shmem/man/man3/shmem_long_put_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_long_set.3in | 1 + .../shmem/man/man3/shmem_long_sum_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_long_swap.3in | 1 + oshmem/shmem/man/man3/shmem_long_wait.3in | 1 + .../shmem/man/man3/shmem_long_wait_until.3in | 1 + .../shmem/man/man3/shmem_long_xor_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_longdouble_g.3in | 1 + .../shmem/man/man3/shmem_longdouble_get.3in | 1 + .../man/man3/shmem_longdouble_get_nbi.3in | 1 + .../shmem/man/man3/shmem_longdouble_iget.3in | 1 + .../shmem/man/man3/shmem_longdouble_iput.3in | 1 + .../man/man3/shmem_longdouble_max_to_all.3in | 1 + .../man/man3/shmem_longdouble_min_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_longdouble_p.3in | 1 + .../man/man3/shmem_longdouble_prod_to_all.3in | 1 + .../shmem/man/man3/shmem_longdouble_put.3in | 1 + .../man/man3/shmem_longdouble_put_nbi.3in | 1 + .../man/man3/shmem_longdouble_sum_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_longlong_add.3in | 1 + .../man/man3/shmem_longlong_and_to_all.3in | 1 + .../shmem/man/man3/shmem_longlong_cswap.3in | 1 + oshmem/shmem/man/man3/shmem_longlong_fadd.3in | 1 + .../shmem/man/man3/shmem_longlong_fetch.3in | 1 + oshmem/shmem/man/man3/shmem_longlong_finc.3in | 1 + oshmem/shmem/man/man3/shmem_longlong_g.3in | 1 + oshmem/shmem/man/man3/shmem_longlong_get.3in | 1 + .../shmem/man/man3/shmem_longlong_get_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_longlong_iget.3in | 1 + oshmem/shmem/man/man3/shmem_longlong_inc.3in | 1 + oshmem/shmem/man/man3/shmem_longlong_iput.3in | 1 + .../man/man3/shmem_longlong_max_to_all.3in | 1 + .../man/man3/shmem_longlong_min_to_all.3in | 1 + .../man/man3/shmem_longlong_or_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_longlong_p.3in | 1 + .../man/man3/shmem_longlong_prod_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_longlong_put.3in | 1 + .../shmem/man/man3/shmem_longlong_put_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_longlong_set.3in | 1 + .../man/man3/shmem_longlong_sum_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_longlong_swap.3in | 1 + oshmem/shmem/man/man3/shmem_longlong_wait.3in | 1 + .../man/man3/shmem_longlong_wait_until.3in | 1 + .../man/man3/shmem_longlong_xor_to_all.3in | 1 + oshmem/shmem/man/man3/shmem_malloc.3in | 113 + oshmem/shmem/man/man3/shmem_my_pe.3in | 41 + oshmem/shmem/man/man3/shmem_n_pes.3in | 39 + oshmem/shmem/man/man3/shmem_pe_accessible.3in | 54 + oshmem/shmem/man/man3/shmem_ptr.3in | 129 + oshmem/shmem/man/man3/shmem_put128.3in | 1 + oshmem/shmem/man/man3/shmem_put128_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_put16_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_put32.3in | 1 + oshmem/shmem/man/man3/shmem_put32_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_put64.3in | 1 + oshmem/shmem/man/man3/shmem_put64_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_put8_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_putmem.3in | 1 + oshmem/shmem/man/man3/shmem_putmem_nbi.3in | 171 + oshmem/shmem/man/man3/shmem_quiet.3in | 84 + oshmem/shmem/man/man3/shmem_realloc.3in | 1 + oshmem/shmem/man/man3/shmem_set_cache_inv.3in | 1 + .../man/man3/shmem_set_cache_line_inv.3in | 1 + oshmem/shmem/man/man3/shmem_set_lock.3in | 78 + .../shmem/man/man3/shmem_short_and_to_all.3in | 206 + oshmem/shmem/man/man3/shmem_short_g.3in | 1 + oshmem/shmem/man/man3/shmem_short_get.3in | 1 + oshmem/shmem/man/man3/shmem_short_get_nbi.3in | 1 + oshmem/shmem/man/man3/shmem_short_iget.3in | 217 + oshmem/shmem/man/man3/shmem_short_iput.3in | 220 + .../shmem/man/man3/shmem_short_max_to_all.3in | 238 + .../shmem/man/man3/shmem_short_min_to_all.3in | 234 + .../shmem/man/man3/shmem_short_or_to_all.3in | 202 + oshmem/shmem/man/man3/shmem_short_p.3in | 1 + .../man/man3/shmem_short_prod_to_all.3in | 259 + oshmem/shmem/man/man3/shmem_short_put.3in | 1 + oshmem/shmem/man/man3/shmem_short_put_nbi.3in | 1 + .../shmem/man/man3/shmem_short_sum_to_all.3in | 281 + oshmem/shmem/man/man3/shmem_short_wait.3in | 1 + .../shmem/man/man3/shmem_short_wait_until.3in | 1 + .../shmem/man/man3/shmem_short_xor_to_all.3in | 215 + oshmem/shmem/man/man3/shmem_swap.3in | 115 + oshmem/shmem/man/man3/shmem_test_lock.3in | 1 + oshmem/shmem/man/man3/shmem_udcflush.3in | 94 + oshmem/shmem/man/man3/shmem_udcflush_line.3in | 1 + oshmem/shmem/man/man3/shmem_wait.3in | 205 + oshmem/shmem/man/man3/shmem_wait_until.3in | 1 + oshmem/shmem/man/man3/shmemalign.3in | 1 + oshmem/shmem/man/man3/shrealloc.3in | 1 + oshmem/shmem/man/man3/start_pes.3in | 1 + oshmem/shmem/shmem_api_logger.h | 42 + oshmem/shmem/shmem_lock.h | 26 + oshmem/tools/Makefile.am | 20 + oshmem/tools/oshmem_info/Makefile.am | 81 + oshmem/tools/oshmem_info/help-oshmem-info.txt | 20 + oshmem/tools/oshmem_info/oshmem_info.1in | 205 + oshmem/tools/oshmem_info/oshmem_info.c | 191 + oshmem/tools/oshmem_info/oshmem_info.h | 33 + oshmem/tools/oshmem_info/param.c | 627 ++ oshmem/tools/wrappers/Makefile.am | 149 + .../wrappers/shmemc++-wrapper-data.txt.in | 37 + .../wrappers/shmemcc-wrapper-data.txt.in | 38 + .../wrappers/shmemfort-wrapper-data.txt.in | 38 + oshmem/util/Makefile.am | 19 + oshmem/util/oshmem_util.c | 70 + oshmem/util/oshmem_util.h | 53 + test/Makefile.am | 28 + test/asm/Makefile.am | 92 + test/asm/atomic_barrier.c | 43 + test/asm/atomic_cmpset.c | 286 + test/asm/atomic_math.c | 138 + test/asm/atomic_spinlock.c | 130 + test/asm/run_tests | 27 + test/carto/carto-file | 39 + test/carto/carto_test.c | 182 + test/class/Makefile.am | 108 + test/class/ompi_rb_tree.c | 412 + test/class/opal_bitmap.c | 334 + test/class/opal_fifo.c | 264 + test/class/opal_hash_table.c | 299 + test/class/opal_lifo.c | 201 + test/class/opal_list.c | 349 + test/class/opal_pointer_array.c | 160 + test/class/opal_proc_table.c | 307 + test/class/opal_tree.c | 334 + test/class/opal_value_array.c | 120 + test/datatype/Makefile.am | 88 + test/datatype/checksum.c | 154 + test/datatype/ddt_lib.c | 688 ++ test/datatype/ddt_lib.h | 95 + test/datatype/ddt_pack.c | 402 + test/datatype/ddt_raw.c | 317 + test/datatype/ddt_test.c | 549 ++ test/datatype/external32.c | 228 + test/datatype/opal_datatype_test.c | 725 ++ test/datatype/opal_ddt_lib.c | 870 ++ test/datatype/opal_ddt_lib.h | 57 + test/datatype/position.c | 283 + test/datatype/position_noncontig.c | 250 + test/datatype/to_self.c | 444 + test/datatype/unpack_hetero.c | 99 + test/datatype/unpack_ooo.c | 316 + test/dss/Makefile.am | 15 + test/dss/dss_buffer.c | 977 ++ test/dss/dss_cmp.c | 621 ++ test/dss/dss_copy.c | 468 + test/dss/dss_payload.c | 229 + test/dss/dss_print.c | 508 + test/event/Makefile.am | 48 + test/event/event-test.c | 145 + test/event/signal-test.c | 69 + test/event/time-test.c | 71 + test/memchecker/Makefile.am | 64 + test/memchecker/irecv_init_check.c | 65 + test/memchecker/irecv_uninit_check.c | 64 + test/memchecker/non_blocking_recv_test.c | 59 + test/memchecker/non_blocking_send_test.c | 61 + test/monitoring/Makefile.am | 34 + test/monitoring/aggregate_profile.pl | 71 + test/monitoring/monitoring_prof.c | 255 + test/monitoring/monitoring_test.c | 259 + test/monitoring/profile2mat.pl | 123 + test/mpi/Makefile.am | 20 + test/mpi/environment/Makefile.am | 33 + test/mpi/environment/chello.c | 35 + test/mpi/environment/run_tests | 55 + test/mpi/run_tests | 56 + test/runtime/Makefile.am | 60 + test/runtime/README | 7 + test/runtime/opal_init_finalize.c | 40 + test/runtime/orte_init_finalize.c | 54 + test/runtime/sigchld.c | 90 + test/runtime/start_shut.c | 76 + test/support/Makefile.am | 36 + test/support/Makefile.options | 23 + test/support/support.c | 158 + test/support/support.h | 57 + test/threads/Makefile.am | 46 + test/threads/opal_condition.c | 120 + test/threads/opal_thread.c | 79 + test/util/Makefile.am | 126 + test/util/ompi_numtostr.c | 43 + test/util/opal_argv.c | 641 ++ test/util/opal_basename.c | 69 + test/util/opal_bit_ops.c | 218 + test/util/opal_error.c | 87 + test/util/opal_if.c | 136 + test/util/opal_os_create_dirpath.c | 163 + test/util/opal_os_path.c | 201 + test/util/opal_path_nfs.c | 252 + test/util/opal_timer.c | 63 + test/util/orte_session_dir.c | 379 + test/util/orte_universe_setup_file_io.c | 113 + 7684 files changed, 1262243 insertions(+) create mode 100644 Doxyfile create mode 100644 HACKING create mode 100644 INSTALL create mode 100644 LICENSE create mode 100644 Makefile.am create mode 100644 Makefile.ompi-rules create mode 100644 NEWS create mode 100644 README create mode 100644 README.JAVA.txt create mode 100644 VERSION create mode 100755 autogen.pl create mode 100644 config/Makefile.am create mode 100644 config/Makefile.options create mode 100644 config/c_get_alignment.m4 create mode 100644 config/c_weak_symbols.m4 create mode 100755 config/distscript.sh create mode 100755 config/find_common_syms create mode 100644 config/ltmain_nag_pthread.diff create mode 100644 config/ltmain_pgi_tp.diff create mode 100644 config/ompi_check_libfca.m4 create mode 100644 config/ompi_check_libhcoll.m4 create mode 100644 config/ompi_check_lustre.m4 create mode 100644 config/ompi_check_mxm.m4 create mode 100644 config/ompi_check_plfs.m4 create mode 100644 config/ompi_check_psm.m4 create mode 100644 config/ompi_check_psm2.m4 create mode 100644 config/ompi_check_pvfs2.m4 create mode 100644 config/ompi_check_ucx.m4 create mode 100644 config/ompi_check_udapl.m4 create mode 100644 config/ompi_config_files.m4 create mode 100644 config/ompi_configure_options.m4 create mode 100644 config/ompi_contrib.m4 create mode 100644 config/ompi_cxx_find_exception_flags.m4 create mode 100644 config/ompi_cxx_find_template_parameters.m4 create mode 100644 config/ompi_cxx_find_template_repository.m4 create mode 100644 config/ompi_cxx_have_exceptions.m4 create mode 100644 config/ompi_endpoint_tag.m4 create mode 100644 config/ompi_ext.m4 create mode 100644 config/ompi_find_mpi_aint_count_offset.m4 create mode 100644 config/ompi_fortran_check.m4 create mode 100644 config/ompi_fortran_check_abstract.m4 create mode 100644 config/ompi_fortran_check_asynchronous.m4 create mode 100644 config/ompi_fortran_check_bind_c.m4 create mode 100644 config/ompi_fortran_check_c_funloc.m4 create mode 100644 config/ompi_fortran_check_f08_assumed_rank.m4 create mode 100644 config/ompi_fortran_check_ignore_tkr.m4 create mode 100644 config/ompi_fortran_check_interface.m4 create mode 100644 config/ompi_fortran_check_iso_fortran_env.m4 create mode 100644 config/ompi_fortran_check_logical_array.m4 create mode 100644 config/ompi_fortran_check_max_array_rank.m4 create mode 100644 config/ompi_fortran_check_optional_args.m4 create mode 100644 config/ompi_fortran_check_private.m4 create mode 100644 config/ompi_fortran_check_procedure.m4 create mode 100644 config/ompi_fortran_check_protected.m4 create mode 100644 config/ompi_fortran_check_real16_c_equiv.m4 create mode 100644 config/ompi_fortran_check_storage_size.m4 create mode 100644 config/ompi_fortran_check_type.m4 create mode 100644 config/ompi_fortran_check_use_only.m4 create mode 100644 config/ompi_fortran_find_ext_symbol_convention.m4 create mode 100644 config/ompi_fortran_find_module_include_flag.m4 create mode 100644 config/ompi_fortran_get_alignment.m4 create mode 100644 config/ompi_fortran_get_handle_max.m4 create mode 100644 config/ompi_fortran_get_kind_value.m4 create mode 100644 config/ompi_fortran_get_sizeof.m4 create mode 100644 config/ompi_fortran_get_value_true.m4 create mode 100644 config/ompi_interix.m4 create mode 100644 config/ompi_microsoft.m4 create mode 100644 config/ompi_setup_contrib.m4 create mode 100644 config/ompi_setup_cxx.m4 create mode 100644 config/ompi_setup_fc.m4 create mode 100644 config/ompi_setup_java.m4 create mode 100644 config/ompi_setup_mpi_ext.m4 create mode 100644 config/ompi_setup_mpi_fortran.m4 create mode 100644 config/ompi_setup_mpi_profiling.m4 create mode 100644 config/opal_case_sensitive_fs_setup.m4 create mode 100644 config/opal_check_alps.m4 create mode 100644 config/opal_check_attributes.m4 create mode 100644 config/opal_check_broken_qsort.m4 create mode 100644 config/opal_check_cma.m4 create mode 100644 config/opal_check_compiler_version.m4 create mode 100644 config/opal_check_compiler_works.m4 create mode 100644 config/opal_check_cray_pmi.m4 create mode 100644 config/opal_check_cuda.m4 create mode 100644 config/opal_check_icc.m4 create mode 100644 config/opal_check_ident.m4 create mode 100644 config/opal_check_knem.m4 create mode 100644 config/opal_check_libfabric.m4 create mode 100644 config/opal_check_libnl.m4 create mode 100644 config/opal_check_offsetof.m4 create mode 100644 config/opal_check_openfabrics.m4 create mode 100644 config/opal_check_os_flavors.m4 create mode 100644 config/opal_check_package.m4 create mode 100644 config/opal_check_pmi.m4 create mode 100644 config/opal_check_portals4.m4 create mode 100644 config/opal_check_ps.m4 create mode 100644 config/opal_check_pthread_pids.m4 create mode 100644 config/opal_check_singularity.m4 create mode 100644 config/opal_check_ugni.m4 create mode 100644 config/opal_check_vendor.m4 create mode 100644 config/opal_check_verbs.m4 create mode 100644 config/opal_check_version.m4 create mode 100644 config/opal_check_visibility.m4 create mode 100644 config/opal_check_withdir.m4 create mode 100644 config/opal_check_xpmem.m4 create mode 100644 config/opal_config_asm.m4 create mode 100644 config/opal_config_files.m4 create mode 100644 config/opal_config_pthreads.m4 create mode 100644 config/opal_config_subdir.m4 create mode 100644 config/opal_config_subdir_args.m4 create mode 100644 config/opal_config_threads.m4 create mode 100644 config/opal_configure_options.m4 create mode 100644 config/opal_ensure_contains_optflags.m4 create mode 100644 config/opal_find_type.m4 create mode 100644 config/opal_functions.m4 create mode 100644 config/opal_get_version.m4 create mode 100644 config/opal_get_version.m4sh create mode 100644 config/opal_lang_link_with_c.m4 create mode 100644 config/opal_load_platform.m4 create mode 100644 config/opal_mca.m4 create mode 100755 config/opal_mca_priority_sort.pl create mode 100644 config/opal_save_version.m4 create mode 100644 config/opal_search_libs.m4 create mode 100644 config/opal_set_lib_prefix.m4 create mode 100644 config/opal_set_mca_prefix.m4 create mode 100644 config/opal_setup_cc.m4 create mode 100644 config/opal_setup_cli.m4 create mode 100644 config/opal_setup_component_package.m4 create mode 100644 config/opal_setup_cxx.m4 create mode 100644 config/opal_setup_ft.m4 create mode 100644 config/opal_setup_java.m4 create mode 100644 config/opal_setup_wrappers.m4 create mode 100644 config/opal_setup_zlib.m4 create mode 100644 config/opal_strip_optflags.m4 create mode 100644 config/opal_summary.m4 create mode 100644 config/opal_try_assemble.m4 create mode 100644 config/orte_check_loadleveler.m4 create mode 100644 config/orte_check_lsf.m4 create mode 100644 config/orte_check_moab.m4 create mode 100644 config/orte_check_sge.m4 create mode 100644 config/orte_check_slurm.m4 create mode 100644 config/orte_check_tm.m4 create mode 100644 config/orte_config_files.m4 create mode 100644 config/orte_configure_options.m4 create mode 100644 config/orte_setup_debugger_flags.m4 create mode 100644 config/oshmem_config_files.m4 create mode 100644 config/oshmem_configure_options.m4 create mode 100644 config/oshmem_setup_profiling.m4 create mode 100644 config/pkg.m4 create mode 100644 configure.ac create mode 100644 contrib/Makefile.am create mode 100644 contrib/amca-param-sets/example.conf create mode 100644 contrib/amca-param-sets/ft-enable-cr create mode 100644 contrib/amca-param-sets/ft-enable-cr-recovery create mode 100644 contrib/annual-maintenance/convert-to-git.txt create mode 100755 contrib/annual-maintenance/find-committers-from-last-year.pl create mode 100644 contrib/build-mca-comps-outside-of-tree/Makefile.am create mode 100644 contrib/build-mca-comps-outside-of-tree/README.txt create mode 100755 contrib/build-mca-comps-outside-of-tree/autogen.sh create mode 100644 contrib/build-mca-comps-outside-of-tree/btl_tcp2.addr.h create mode 100644 contrib/build-mca-comps-outside-of-tree/btl_tcp2.c create mode 100644 contrib/build-mca-comps-outside-of-tree/btl_tcp2.h create mode 100644 contrib/build-mca-comps-outside-of-tree/btl_tcp2_addr.h create mode 100644 contrib/build-mca-comps-outside-of-tree/btl_tcp2_component.c create mode 100644 contrib/build-mca-comps-outside-of-tree/btl_tcp2_endpoint.c create mode 100644 contrib/build-mca-comps-outside-of-tree/btl_tcp2_endpoint.h create mode 100644 contrib/build-mca-comps-outside-of-tree/btl_tcp2_frag.c create mode 100644 contrib/build-mca-comps-outside-of-tree/btl_tcp2_frag.h create mode 100644 contrib/build-mca-comps-outside-of-tree/btl_tcp2_ft.c create mode 100644 contrib/build-mca-comps-outside-of-tree/btl_tcp2_ft.h create mode 100644 contrib/build-mca-comps-outside-of-tree/btl_tcp2_hdr.h create mode 100644 contrib/build-mca-comps-outside-of-tree/btl_tcp2_proc.c create mode 100644 contrib/build-mca-comps-outside-of-tree/btl_tcp2_proc.h create mode 100644 contrib/build-mca-comps-outside-of-tree/configure.ac create mode 100644 contrib/build-mca-comps-outside-of-tree/help-mpi-btl-tcp2.txt create mode 100644 contrib/build-server/README.txt create mode 100644 contrib/build-server/crontab.txt create mode 100755 contrib/build-server/hwloc-nightly-coverity.pl create mode 100755 contrib/build-server/hwloc-nightly-tarball.sh create mode 100755 contrib/build-server/hwloc-release.sh create mode 100755 contrib/build-server/install-autotools-set.sh create mode 100755 contrib/build-server/openmpi-nightly-coverity.pl create mode 100755 contrib/build-server/openmpi-nightly-tarball.sh create mode 100755 contrib/build-server/openmpi-release.sh create mode 100755 contrib/build-server/openmpi-update-www.open-mpi.org.sh create mode 100755 contrib/build-server/pmix-nightly-coverity.pl create mode 100755 contrib/build-server/pmix-nightly-tarball.sh create mode 100755 contrib/build-server/pmix-release.sh create mode 100755 contrib/build-server/remove-old.pl create mode 100755 contrib/check-btl-sm-diffs.pl create mode 100755 contrib/check-help-strings.pl create mode 100755 contrib/check-ob1-pml-diffs.pl create mode 100755 contrib/check-ob1-revision.pl create mode 100755 contrib/check-owner.pl create mode 100755 contrib/check_unnecessary_headers.sh create mode 100755 contrib/cleanperms create mode 100755 contrib/code_counter.pl create mode 100644 contrib/completion/mpirun.sh create mode 100644 contrib/completion/mpirun.zsh create mode 100644 contrib/coverity/coverity-model.c create mode 100755 contrib/dist/find-copyrights.pl create mode 100644 contrib/dist/linux/README create mode 100644 contrib/dist/linux/README.ompi-spec-generator create mode 100755 contrib/dist/linux/buildrpm.sh create mode 100755 contrib/dist/linux/buildswitcherrpm.sh create mode 100755 contrib/dist/linux/ompi-spec-generator.py create mode 100644 contrib/dist/linux/openmpi-switcher-modulefile.spec create mode 100644 contrib/dist/linux/openmpi-switcher-modulefile.tcl create mode 100644 contrib/dist/linux/openmpi.spec create mode 100644 contrib/dist/macosx-pkg/ReadMe.rtf create mode 100755 contrib/dist/macosx-pkg/buildpackage.sh create mode 100755 contrib/dist/make-authors.pl create mode 100755 contrib/dist/make-html-man-pages.pl create mode 100755 contrib/dist/make_dist_tarball create mode 120000 contrib/dist/make_tarball create mode 100644 contrib/dist/mofed/compile_debian_mlnx_example.in create mode 100644 contrib/dist/mofed/debian/changelog.in create mode 100644 contrib/dist/mofed/debian/compat create mode 100644 contrib/dist/mofed/debian/control.in create mode 100644 contrib/dist/mofed/debian/rules.in create mode 100644 contrib/dist/mofed/debian/source/format create mode 100755 contrib/find_occurence.pl create mode 100755 contrib/find_offenders.pl create mode 100755 contrib/fix_headers.pl create mode 100755 contrib/fix_indent.pl create mode 100755 contrib/gen_stats.pl create mode 100755 contrib/generate_file_list.pl create mode 100755 contrib/header_replacement.sh create mode 100644 contrib/headers.txt create mode 100644 contrib/infrastructure/README-setup-github-diff-emails.txt create mode 100644 contrib/infrastructure/README.txt create mode 100644 contrib/infrastructure/crontab-mpiteam-at-jaguar.crest.iu.edu.txt create mode 100644 contrib/infrastructure/crontab-mpiteam-at-lion.crest.iu.edu create mode 100644 contrib/infrastructure/gitdub-config.yml create mode 100755 contrib/infrastructure/github-send-commit-mails.pl create mode 100755 contrib/infrastructure/openmpi-update-www.open-mpi.org.sh create mode 100755 contrib/libadd_mca_comp_update.py create mode 100644 contrib/nightly/create_tarball.sh create mode 100755 contrib/nightly/reports/check_devel_headers.pl create mode 100755 contrib/nightly/reports/illegal_symbols_report.pl create mode 100755 contrib/nightly/update-component-owners-github-wiki.pl create mode 100755 contrib/ompi-time.sh create mode 100644 contrib/ompi_branch_check_revisions-v1.5.txt create mode 100755 contrib/ompi_branch_check_revisions.pl create mode 100644 contrib/ompi_cplusplus.sed create mode 100755 contrib/ompi_cplusplus.sh create mode 100644 contrib/ompi_cplusplus.txt create mode 100644 contrib/openmpi-valgrind.supp create mode 100644 contrib/platform/clang/align create mode 120000 contrib/platform/cray_xt3 create mode 120000 contrib/platform/cray_xt3_romio create mode 100644 contrib/platform/cray_xt_cnl_romio create mode 100755 contrib/platform/embedded/build_embedded.sh create mode 100644 contrib/platform/embedded/debug create mode 100755 contrib/platform/embedded/gen_embedded.sh create mode 100644 contrib/platform/embedded/optimized create mode 100644 contrib/platform/hadoop/cisco create mode 100644 contrib/platform/hadoop/cisco.conf create mode 100644 contrib/platform/hadoop/linux create mode 100644 contrib/platform/hadoop/linux.conf create mode 100644 contrib/platform/hadoop/mac create mode 100644 contrib/platform/hadoop/mac.conf create mode 100644 contrib/platform/ibm/debug-power6-gcc create mode 100644 contrib/platform/ibm/debug-power7-gcc create mode 100644 contrib/platform/ibm/debug-ppc32-gcc create mode 100644 contrib/platform/ibm/debug-ppc64-gcc create mode 100644 contrib/platform/ibm/optimized-power6-gcc create mode 100644 contrib/platform/ibm/optimized-power7-gcc create mode 100644 contrib/platform/ibm/optimized-ppc32-gcc create mode 100644 contrib/platform/ibm/optimized-ppc64-gcc create mode 100644 contrib/platform/intel/bend/ext create mode 100644 contrib/platform/intel/bend/ext.conf create mode 100644 contrib/platform/intel/bend/gadget create mode 100644 contrib/platform/intel/bend/gadget-optimized create mode 100644 contrib/platform/intel/bend/gadget-optimized.conf create mode 100644 contrib/platform/intel/bend/gadget.conf create mode 100644 contrib/platform/intel/bend/linux create mode 100644 contrib/platform/intel/bend/linux-optimized create mode 100644 contrib/platform/intel/bend/linux-optimized.conf create mode 100644 contrib/platform/intel/bend/linux-orcm.conf create mode 100644 contrib/platform/intel/bend/linux.conf create mode 100644 contrib/platform/intel/bend/mac create mode 100644 contrib/platform/intel/bend/mac-optimized create mode 100644 contrib/platform/intel/bend/mac-optimized.conf create mode 100644 contrib/platform/intel/bend/mac-orcm.conf create mode 100644 contrib/platform/intel/bend/mac.conf create mode 100644 contrib/platform/iu/odin/debug create mode 100644 contrib/platform/iu/odin/debug-nopmi create mode 100644 contrib/platform/iu/odin/debug-nopmi.conf create mode 100644 contrib/platform/iu/odin/debug.conf create mode 100644 contrib/platform/iu/odin/optimized create mode 100644 contrib/platform/iu/odin/optimized.conf create mode 100644 contrib/platform/iu/odin/static create mode 100644 contrib/platform/iu/odin/static.conf create mode 100644 contrib/platform/lanl/cray_xc_cle5.2/debug-common create mode 100644 contrib/platform/lanl/cray_xc_cle5.2/debug-lustre create mode 100644 contrib/platform/lanl/cray_xc_cle5.2/debug-lustre.conf create mode 100644 contrib/platform/lanl/cray_xc_cle5.2/optimized-common create mode 100644 contrib/platform/lanl/cray_xc_cle5.2/optimized-lustre create mode 100644 contrib/platform/lanl/cray_xc_cle5.2/optimized-lustre.conf create mode 100644 contrib/platform/lanl/cray_xe6/cray-common create mode 100644 contrib/platform/lanl/cray_xe6/debug-common create mode 100644 contrib/platform/lanl/cray_xe6/debug-lustre create mode 100644 contrib/platform/lanl/cray_xe6/debug-lustre.conf create mode 100644 contrib/platform/lanl/cray_xe6/gnu-common create mode 100644 contrib/platform/lanl/cray_xe6/intel-common create mode 100644 contrib/platform/lanl/cray_xe6/optimized-common create mode 100644 contrib/platform/lanl/cray_xe6/optimized-lustre create mode 100644 contrib/platform/lanl/cray_xe6/optimized-lustre.conf create mode 100644 contrib/platform/lanl/darwin/darwin-common create mode 100644 contrib/platform/lanl/darwin/debug create mode 100644 contrib/platform/lanl/darwin/debug-common create mode 100644 contrib/platform/lanl/darwin/debug-mic create mode 100644 contrib/platform/lanl/darwin/debug-mic.conf create mode 100644 contrib/platform/lanl/darwin/debug.conf create mode 100644 contrib/platform/lanl/darwin/mic-common create mode 100644 contrib/platform/lanl/darwin/optimized create mode 100644 contrib/platform/lanl/darwin/optimized-common create mode 100644 contrib/platform/lanl/darwin/optimized-mic create mode 100644 contrib/platform/lanl/darwin/optimized-mic.conf create mode 100644 contrib/platform/lanl/darwin/optimized.conf create mode 100644 contrib/platform/lanl/mac.conf create mode 100644 contrib/platform/lanl/macosx-dynamic create mode 100644 contrib/platform/lanl/macosx-dynamic-java create mode 100644 contrib/platform/lanl/macosx-dynamic-java.conf create mode 100644 contrib/platform/lanl/macosx-dynamic-optimized create mode 100644 contrib/platform/lanl/macosx-dynamic-optimized.conf create mode 100644 contrib/platform/lanl/macosx-dynamic.conf create mode 100644 contrib/platform/lanl/macosx-static-leopard create mode 100644 contrib/platform/lanl/macosx-static-leopard.conf create mode 100644 contrib/platform/lanl/macosx-static-tiger create mode 100644 contrib/platform/lanl/toss/debug create mode 100644 contrib/platform/lanl/toss/debug-common create mode 100644 contrib/platform/lanl/toss/debug-mlx create mode 100644 contrib/platform/lanl/toss/debug-mlx.conf create mode 100644 contrib/platform/lanl/toss/debug.conf create mode 100644 contrib/platform/lanl/toss/optimized create mode 100644 contrib/platform/lanl/toss/optimized-common create mode 100644 contrib/platform/lanl/toss/optimized-mlx create mode 100644 contrib/platform/lanl/toss/optimized-mlx.conf create mode 100644 contrib/platform/lanl/toss/optimized.conf create mode 100644 contrib/platform/lanl/toss/toss-common create mode 100644 contrib/platform/mellanox/optimized create mode 100644 contrib/platform/mellanox/optimized.conf create mode 100644 contrib/platform/optimized create mode 100644 contrib/platform/ornl/cray_xt_cnl_romio create mode 100644 contrib/platform/ornl/cray_xt_cnl_romio_debug create mode 100755 contrib/platform/ornl/ornl_configure.gnu create mode 100755 contrib/platform/ornl/ornl_configure.pgi create mode 100755 contrib/platform/ornl/ornl_configure_self_contained create mode 100644 contrib/platform/ps3 create mode 100644 contrib/platform/redstorm create mode 100644 contrib/platform/snl/kitten create mode 100644 contrib/platform/snl/portals4-m5 create mode 100644 contrib/platform/snl/portals4-orte create mode 100644 contrib/platform/utk/cray_xc30_darter create mode 100755 contrib/purge-tab-indents.pl create mode 100755 contrib/purge-trailing-blank-lines.pl create mode 100644 contrib/scaling/Makefile create mode 100644 contrib/scaling/Makefile.include create mode 100644 contrib/scaling/mpi_memprobe.c create mode 100644 contrib/scaling/mpi_no_op.c create mode 100644 contrib/scaling/orte_no_op.c create mode 100755 contrib/scaling/scaling.pl create mode 100755 contrib/search_compare.pl create mode 100755 contrib/search_replace.pl create mode 100644 contrib/spread/spread-init.txt create mode 100644 contrib/spread/spread.conf create mode 100755 contrib/submit_test.pl create mode 100755 contrib/symbol-hiding.pl create mode 100755 contrib/test_headers_in_ompi.pl create mode 100644 contrib/uncrustify_open_mpi.cfg create mode 100755 contrib/update-my-copyright.pl create mode 100755 contrib/whitespace-purge.sh create mode 100644 examples/Hello.java create mode 100644 examples/Makefile create mode 100644 examples/Makefile.include create mode 100644 examples/README create mode 100644 examples/Ring.java create mode 100644 examples/connectivity_c.c create mode 100644 examples/dtrace/Makefile create mode 100644 examples/dtrace/README create mode 100644 examples/dtrace/mpicommcheck.d create mode 100644 examples/dtrace/mpicommleak.c create mode 100644 examples/dtrace/mpicount.d create mode 100644 examples/dtrace/mpitrace.d create mode 100644 examples/dtrace/mpitruss.d create mode 100755 examples/dtrace/myppriv.sh create mode 100755 examples/dtrace/partrace.sh create mode 100644 examples/hello_c.c create mode 100644 examples/hello_cxx.cc create mode 100644 examples/hello_mpifh.f create mode 100644 examples/hello_oshmem_c.c create mode 100644 examples/hello_oshmem_cxx.cc create mode 100644 examples/hello_oshmemfh.f90 create mode 100644 examples/hello_usempi.f90 create mode 100644 examples/hello_usempif08.f90 create mode 100644 examples/oshmem_circular_shift.c create mode 100644 examples/oshmem_max_reduction.c create mode 100644 examples/oshmem_shmalloc.c create mode 100644 examples/oshmem_strided_puts.c create mode 100644 examples/oshmem_symmetric_data.c create mode 100644 examples/ring_c.c create mode 100644 examples/ring_cxx.cc create mode 100644 examples/ring_mpifh.f create mode 100644 examples/ring_oshmem_c.c create mode 100644 examples/ring_oshmemfh.f90 create mode 100644 examples/ring_usempi.f90 create mode 100644 examples/ring_usempif08.f90 create mode 100644 ompi/Makefile.am create mode 100644 ompi/attribute/Makefile.am create mode 100644 ompi/attribute/attribute.c create mode 100644 ompi/attribute/attribute.h create mode 100644 ompi/attribute/attribute_predefined.c create mode 100644 ompi/class/Makefile.am create mode 100644 ompi/class/ompi_seq_tracker.c create mode 100644 ompi/class/ompi_seq_tracker.h create mode 100644 ompi/communicator/Makefile.am create mode 100644 ompi/communicator/comm.c create mode 100644 ompi/communicator/comm_cid.c create mode 100644 ompi/communicator/comm_init.c create mode 100644 ompi/communicator/comm_request.c create mode 100644 ompi/communicator/comm_request.h create mode 100644 ompi/communicator/communicator.h create mode 100644 ompi/contrib/README.txt create mode 100644 ompi/contrib/libompitrace/Makefile.am create mode 100644 ompi/contrib/libompitrace/abort.c create mode 100644 ompi/contrib/libompitrace/accumulate.c create mode 100644 ompi/contrib/libompitrace/add_error_class.c create mode 100644 ompi/contrib/libompitrace/add_error_code.c create mode 100644 ompi/contrib/libompitrace/add_error_string.c create mode 100644 ompi/contrib/libompitrace/address.c create mode 100644 ompi/contrib/libompitrace/allgather.c create mode 100644 ompi/contrib/libompitrace/allgatherv.c create mode 100644 ompi/contrib/libompitrace/alloc_mem.c create mode 100644 ompi/contrib/libompitrace/allreduce.c create mode 100644 ompi/contrib/libompitrace/barrier.c create mode 100644 ompi/contrib/libompitrace/bcast.c create mode 100644 ompi/contrib/libompitrace/configure.m4 create mode 100644 ompi/contrib/libompitrace/finalize.c create mode 100644 ompi/contrib/libompitrace/init.c create mode 100644 ompi/contrib/libompitrace/isend.c create mode 100644 ompi/contrib/libompitrace/recv.c create mode 100644 ompi/contrib/libompitrace/reduce.c create mode 100644 ompi/contrib/libompitrace/request_free.c create mode 100644 ompi/contrib/libompitrace/send.c create mode 100644 ompi/contrib/libompitrace/sendrecv.c create mode 100644 ompi/datatype/Makefile.am create mode 100644 ompi/datatype/ompi_datatype.h create mode 100644 ompi/datatype/ompi_datatype_args.c create mode 100644 ompi/datatype/ompi_datatype_create.c create mode 100644 ompi/datatype/ompi_datatype_create_contiguous.c create mode 100644 ompi/datatype/ompi_datatype_create_darray.c create mode 100644 ompi/datatype/ompi_datatype_create_indexed.c create mode 100644 ompi/datatype/ompi_datatype_create_struct.c create mode 100644 ompi/datatype/ompi_datatype_create_subarray.c create mode 100644 ompi/datatype/ompi_datatype_create_vector.c create mode 100644 ompi/datatype/ompi_datatype_external.c create mode 100644 ompi/datatype/ompi_datatype_external32.c create mode 100644 ompi/datatype/ompi_datatype_get_elements.c create mode 100644 ompi/datatype/ompi_datatype_internal.h create mode 100644 ompi/datatype/ompi_datatype_match_size.c create mode 100644 ompi/datatype/ompi_datatype_module.c create mode 100644 ompi/datatype/ompi_datatype_sndrcv.c create mode 100644 ompi/debuggers/MPI_Handles_interface.txt create mode 100644 ompi/debuggers/Makefile.am create mode 100644 ompi/debuggers/debuggers.h create mode 100644 ompi/debuggers/dlopen_test.c create mode 100644 ompi/debuggers/mpihandles_interface.h create mode 100644 ompi/debuggers/msgq_interface.h create mode 100644 ompi/debuggers/ompi_common_dll.c create mode 100644 ompi/debuggers/ompi_common_dll_defs.h create mode 100644 ompi/debuggers/ompi_debugger_canary.c create mode 100644 ompi/debuggers/ompi_debuggers.c create mode 100644 ompi/debuggers/ompi_mpihandles_dll.c create mode 100644 ompi/debuggers/ompi_mpihandles_dll_defs.h create mode 100644 ompi/debuggers/ompi_msgq_dll.c create mode 100644 ompi/debuggers/ompi_msgq_dll_defs.h create mode 100644 ompi/debuggers/predefined_gap_test.c create mode 100644 ompi/debuggers/predefined_pad_test.c create mode 100644 ompi/debuggers/tv-debugger-attach.txt create mode 100644 ompi/dpm/Makefile.am create mode 100644 ompi/dpm/dpm.c create mode 100644 ompi/dpm/dpm.h create mode 100644 ompi/errhandler/Makefile.am create mode 100644 ompi/errhandler/errcode-internal.c create mode 100644 ompi/errhandler/errcode-internal.h create mode 100644 ompi/errhandler/errcode.c create mode 100644 ompi/errhandler/errcode.h create mode 100644 ompi/errhandler/errhandler.c create mode 100644 ompi/errhandler/errhandler.h create mode 100644 ompi/errhandler/errhandler_invoke.c create mode 100644 ompi/errhandler/errhandler_predefined.c create mode 100644 ompi/errhandler/errhandler_predefined.h create mode 100644 ompi/errhandler/help-mpi-errors.txt create mode 100644 ompi/etc/Makefile.am create mode 100644 ompi/etc/openmpi-totalview.tcl create mode 100644 ompi/file/Makefile.am create mode 100644 ompi/file/file.c create mode 100644 ompi/file/file.h create mode 100644 ompi/group/Makefile.am create mode 100644 ompi/group/group.c create mode 100644 ompi/group/group.h create mode 100644 ompi/group/group_bitmap.c create mode 100644 ompi/group/group_dbg.h create mode 100644 ompi/group/group_init.c create mode 100644 ompi/group/group_plist.c create mode 100644 ompi/group/group_set_rank.c create mode 100644 ompi/group/group_sporadic.c create mode 100644 ompi/group/group_strided.c create mode 100644 ompi/include/Makefile.am create mode 100644 ompi/include/mpi.h.in create mode 100644 ompi/include/mpif-config.h.in create mode 100644 ompi/include/mpif-externals.h create mode 100644 ompi/include/mpif-sentinels.h create mode 100755 ompi/include/mpif-values.pl create mode 100644 ompi/include/mpif.h.in create mode 100644 ompi/include/ompi/Makefile.am create mode 100644 ompi/include/ompi/constants.h create mode 100644 ompi/include/ompi/memchecker.h create mode 100644 ompi/include/ompi/totalview.h create mode 100644 ompi/include/ompi/types.h create mode 100644 ompi/include/ompi/version.h.in create mode 100644 ompi/include/ompi_config.h create mode 100644 ompi/info/Makefile.am create mode 100644 ompi/info/info.c create mode 100644 ompi/info/info.h create mode 100644 ompi/mca/Makefile.am create mode 100644 ompi/mca/bml/Makefile.am create mode 100644 ompi/mca/bml/base/Makefile.am create mode 100644 ompi/mca/bml/base/base.h create mode 100644 ompi/mca/bml/base/bml_base_btl.c create mode 100644 ompi/mca/bml/base/bml_base_btl.h create mode 100644 ompi/mca/bml/base/bml_base_endpoint.c create mode 100644 ompi/mca/bml/base/bml_base_frame.c create mode 100644 ompi/mca/bml/base/bml_base_ft.c create mode 100644 ompi/mca/bml/base/bml_base_init.c create mode 100644 ompi/mca/bml/base/owner.txt create mode 100644 ompi/mca/bml/bml.h create mode 100644 ompi/mca/bml/r2/Makefile.am create mode 100644 ompi/mca/bml/r2/bml_r2.c create mode 100644 ompi/mca/bml/r2/bml_r2.h create mode 100644 ompi/mca/bml/r2/bml_r2_component.c create mode 100644 ompi/mca/bml/r2/bml_r2_ft.c create mode 100644 ompi/mca/bml/r2/bml_r2_ft.h create mode 100644 ompi/mca/bml/r2/configure.m4 create mode 100644 ompi/mca/bml/r2/help-mca-bml-r2.txt create mode 100644 ompi/mca/bml/r2/owner.txt create mode 100644 ompi/mca/coll/Makefile.am create mode 100644 ompi/mca/coll/base/Makefile.am create mode 100644 ompi/mca/coll/base/README.memory_management create mode 100644 ompi/mca/coll/base/base.h create mode 100644 ompi/mca/coll/base/coll_base_allgather.c create mode 100644 ompi/mca/coll/base/coll_base_allgatherv.c create mode 100644 ompi/mca/coll/base/coll_base_allreduce.c create mode 100644 ompi/mca/coll/base/coll_base_alltoall.c create mode 100644 ompi/mca/coll/base/coll_base_alltoallv.c create mode 100644 ompi/mca/coll/base/coll_base_barrier.c create mode 100644 ompi/mca/coll/base/coll_base_bcast.c create mode 100644 ompi/mca/coll/base/coll_base_comm_select.c create mode 100644 ompi/mca/coll/base/coll_base_comm_unselect.c create mode 100644 ompi/mca/coll/base/coll_base_find_available.c create mode 100644 ompi/mca/coll/base/coll_base_frame.c create mode 100644 ompi/mca/coll/base/coll_base_functions.h create mode 100644 ompi/mca/coll/base/coll_base_gather.c create mode 100644 ompi/mca/coll/base/coll_base_reduce.c create mode 100644 ompi/mca/coll/base/coll_base_reduce_scatter.c create mode 100644 ompi/mca/coll/base/coll_base_scatter.c create mode 100644 ompi/mca/coll/base/coll_base_topo.c create mode 100644 ompi/mca/coll/base/coll_base_topo.h create mode 100644 ompi/mca/coll/base/coll_base_util.c create mode 100644 ompi/mca/coll/base/coll_base_util.h create mode 100644 ompi/mca/coll/base/coll_tags.h create mode 100644 ompi/mca/coll/base/help-mca-coll-base.txt create mode 100644 ompi/mca/coll/base/owner.txt create mode 100644 ompi/mca/coll/basic/Makefile.am create mode 100644 ompi/mca/coll/basic/coll_basic.h create mode 100644 ompi/mca/coll/basic/coll_basic_allgather.c create mode 100644 ompi/mca/coll/basic/coll_basic_allgatherv.c create mode 100644 ompi/mca/coll/basic/coll_basic_allreduce.c create mode 100644 ompi/mca/coll/basic/coll_basic_alltoall.c create mode 100644 ompi/mca/coll/basic/coll_basic_alltoallv.c create mode 100644 ompi/mca/coll/basic/coll_basic_alltoallw.c create mode 100644 ompi/mca/coll/basic/coll_basic_barrier.c create mode 100644 ompi/mca/coll/basic/coll_basic_bcast.c create mode 100644 ompi/mca/coll/basic/coll_basic_component.c create mode 100644 ompi/mca/coll/basic/coll_basic_exscan.c create mode 100644 ompi/mca/coll/basic/coll_basic_gather.c create mode 100644 ompi/mca/coll/basic/coll_basic_gatherv.c create mode 100644 ompi/mca/coll/basic/coll_basic_module.c create mode 100644 ompi/mca/coll/basic/coll_basic_neighbor_allgather.c create mode 100644 ompi/mca/coll/basic/coll_basic_neighbor_allgatherv.c create mode 100644 ompi/mca/coll/basic/coll_basic_neighbor_alltoall.c create mode 100644 ompi/mca/coll/basic/coll_basic_neighbor_alltoallv.c create mode 100644 ompi/mca/coll/basic/coll_basic_neighbor_alltoallw.c create mode 100644 ompi/mca/coll/basic/coll_basic_reduce.c create mode 100644 ompi/mca/coll/basic/coll_basic_reduce_scatter.c create mode 100644 ompi/mca/coll/basic/coll_basic_reduce_scatter_block.c create mode 100644 ompi/mca/coll/basic/coll_basic_scan.c create mode 100644 ompi/mca/coll/basic/coll_basic_scatter.c create mode 100644 ompi/mca/coll/basic/coll_basic_scatterv.c create mode 100644 ompi/mca/coll/basic/owner.txt create mode 100644 ompi/mca/coll/coll.h create mode 100644 ompi/mca/coll/cuda/Makefile.am create mode 100644 ompi/mca/coll/cuda/coll_cuda.h create mode 100644 ompi/mca/coll/cuda/coll_cuda_allreduce.c create mode 100644 ompi/mca/coll/cuda/coll_cuda_component.c create mode 100644 ompi/mca/coll/cuda/coll_cuda_exscan.c create mode 100644 ompi/mca/coll/cuda/coll_cuda_module.c create mode 100644 ompi/mca/coll/cuda/coll_cuda_reduce.c create mode 100644 ompi/mca/coll/cuda/coll_cuda_reduce_scatter_block.c create mode 100644 ompi/mca/coll/cuda/coll_cuda_scan.c create mode 100644 ompi/mca/coll/cuda/configure.m4 create mode 100644 ompi/mca/coll/cuda/help-mpi-coll-cuda.txt create mode 100644 ompi/mca/coll/cuda/owner.txt create mode 100644 ompi/mca/coll/demo/.opal_ignore create mode 100644 ompi/mca/coll/demo/Makefile.am create mode 100644 ompi/mca/coll/demo/coll_demo.h create mode 100644 ompi/mca/coll/demo/coll_demo_allgather.c create mode 100644 ompi/mca/coll/demo/coll_demo_allgatherv.c create mode 100644 ompi/mca/coll/demo/coll_demo_allreduce.c create mode 100644 ompi/mca/coll/demo/coll_demo_alltoall.c create mode 100644 ompi/mca/coll/demo/coll_demo_alltoallv.c create mode 100644 ompi/mca/coll/demo/coll_demo_alltoallw.c create mode 100644 ompi/mca/coll/demo/coll_demo_barrier.c create mode 100644 ompi/mca/coll/demo/coll_demo_bcast.c create mode 100644 ompi/mca/coll/demo/coll_demo_component.c create mode 100644 ompi/mca/coll/demo/coll_demo_exscan.c create mode 100644 ompi/mca/coll/demo/coll_demo_gather.c create mode 100644 ompi/mca/coll/demo/coll_demo_gatherv.c create mode 100644 ompi/mca/coll/demo/coll_demo_module.c create mode 100644 ompi/mca/coll/demo/coll_demo_reduce.c create mode 100644 ompi/mca/coll/demo/coll_demo_reduce_scatter.c create mode 100644 ompi/mca/coll/demo/coll_demo_scan.c create mode 100644 ompi/mca/coll/demo/coll_demo_scatter.c create mode 100644 ompi/mca/coll/demo/coll_demo_scatterv.c create mode 100644 ompi/mca/coll/demo/configure.stub create mode 100644 ompi/mca/coll/demo/owner.txt create mode 100644 ompi/mca/coll/fca/Makefile.am create mode 100644 ompi/mca/coll/fca/coll_fca.h create mode 100644 ompi/mca/coll/fca/coll_fca_api.h create mode 100644 ompi/mca/coll/fca/coll_fca_component.c create mode 100644 ompi/mca/coll/fca/coll_fca_convertor.h create mode 100644 ompi/mca/coll/fca/coll_fca_debug.h create mode 100644 ompi/mca/coll/fca/coll_fca_module.c create mode 100644 ompi/mca/coll/fca/coll_fca_ops.c create mode 100644 ompi/mca/coll/fca/configure.m4 create mode 100644 ompi/mca/coll/fca/owner.txt create mode 100644 ompi/mca/coll/hcoll/Makefile.am create mode 100644 ompi/mca/coll/hcoll/coll_hcoll.h create mode 100644 ompi/mca/coll/hcoll/coll_hcoll_component.c create mode 100644 ompi/mca/coll/hcoll/coll_hcoll_debug.h create mode 100644 ompi/mca/coll/hcoll/coll_hcoll_dtypes.h create mode 100644 ompi/mca/coll/hcoll/coll_hcoll_module.c create mode 100644 ompi/mca/coll/hcoll/coll_hcoll_ops.c create mode 100644 ompi/mca/coll/hcoll/coll_hcoll_rte.c create mode 100644 ompi/mca/coll/hcoll/configure.m4 create mode 100644 ompi/mca/coll/hcoll/owner.txt create mode 100644 ompi/mca/coll/inter/Makefile.am create mode 100644 ompi/mca/coll/inter/coll_inter.c create mode 100644 ompi/mca/coll/inter/coll_inter.h create mode 100644 ompi/mca/coll/inter/coll_inter_allgather.c create mode 100644 ompi/mca/coll/inter/coll_inter_allgatherv.c create mode 100644 ompi/mca/coll/inter/coll_inter_allreduce.c create mode 100644 ompi/mca/coll/inter/coll_inter_bcast.c create mode 100644 ompi/mca/coll/inter/coll_inter_component.c create mode 100644 ompi/mca/coll/inter/coll_inter_gather.c create mode 100644 ompi/mca/coll/inter/coll_inter_gatherv.c create mode 100644 ompi/mca/coll/inter/coll_inter_reduce.c create mode 100644 ompi/mca/coll/inter/coll_inter_scatter.c create mode 100644 ompi/mca/coll/inter/coll_inter_scatterv.c create mode 100644 ompi/mca/coll/inter/owner.txt create mode 100644 ompi/mca/coll/libnbc/Makefile.am create mode 100644 ompi/mca/coll/libnbc/coll_libnbc.h create mode 100644 ompi/mca/coll/libnbc/coll_libnbc_component.c create mode 100644 ompi/mca/coll/libnbc/libdict/dict.c create mode 100644 ompi/mca/coll/libnbc/libdict/dict.h create mode 100644 ompi/mca/coll/libnbc/libdict/dict_private.h create mode 100644 ompi/mca/coll/libnbc/libdict/hb_tree.c create mode 100644 ompi/mca/coll/libnbc/libdict/hb_tree.h create mode 100644 ompi/mca/coll/libnbc/nbc.c create mode 100644 ompi/mca/coll/libnbc/nbc_iallgather.c create mode 100644 ompi/mca/coll/libnbc/nbc_iallgatherv.c create mode 100644 ompi/mca/coll/libnbc/nbc_iallreduce.c create mode 100644 ompi/mca/coll/libnbc/nbc_ialltoall.c create mode 100644 ompi/mca/coll/libnbc/nbc_ialltoallv.c create mode 100644 ompi/mca/coll/libnbc/nbc_ialltoallw.c create mode 100644 ompi/mca/coll/libnbc/nbc_ibarrier.c create mode 100644 ompi/mca/coll/libnbc/nbc_ibcast.c create mode 100644 ompi/mca/coll/libnbc/nbc_iexscan.c create mode 100644 ompi/mca/coll/libnbc/nbc_igather.c create mode 100644 ompi/mca/coll/libnbc/nbc_igatherv.c create mode 100644 ompi/mca/coll/libnbc/nbc_ineighbor_allgather.c create mode 100644 ompi/mca/coll/libnbc/nbc_ineighbor_allgatherv.c create mode 100644 ompi/mca/coll/libnbc/nbc_ineighbor_alltoall.c create mode 100644 ompi/mca/coll/libnbc/nbc_ineighbor_alltoallv.c create mode 100644 ompi/mca/coll/libnbc/nbc_ineighbor_alltoallw.c create mode 100644 ompi/mca/coll/libnbc/nbc_internal.h create mode 100644 ompi/mca/coll/libnbc/nbc_ireduce.c create mode 100644 ompi/mca/coll/libnbc/nbc_ireduce_scatter.c create mode 100644 ompi/mca/coll/libnbc/nbc_ireduce_scatter_block.c create mode 100644 ompi/mca/coll/libnbc/nbc_iscan.c create mode 100644 ompi/mca/coll/libnbc/nbc_iscatter.c create mode 100644 ompi/mca/coll/libnbc/nbc_iscatterv.c create mode 100644 ompi/mca/coll/libnbc/nbc_neighbor_helpers.c create mode 100644 ompi/mca/coll/libnbc/owner.txt create mode 100644 ompi/mca/coll/portals4/Makefile.am create mode 100644 ompi/mca/coll/portals4/coll_portals4.h create mode 100644 ompi/mca/coll/portals4/coll_portals4_allreduce.c create mode 100644 ompi/mca/coll/portals4/coll_portals4_barrier.c create mode 100644 ompi/mca/coll/portals4/coll_portals4_bcast.c create mode 100644 ompi/mca/coll/portals4/coll_portals4_component.c create mode 100644 ompi/mca/coll/portals4/coll_portals4_gather.c create mode 100644 ompi/mca/coll/portals4/coll_portals4_reduce.c create mode 100644 ompi/mca/coll/portals4/coll_portals4_request.c create mode 100644 ompi/mca/coll/portals4/coll_portals4_request.h create mode 100644 ompi/mca/coll/portals4/coll_portals4_scatter.c create mode 100644 ompi/mca/coll/portals4/configure.m4 create mode 100644 ompi/mca/coll/portals4/owner.txt create mode 100644 ompi/mca/coll/self/Makefile.am create mode 100644 ompi/mca/coll/self/coll_self.h create mode 100644 ompi/mca/coll/self/coll_self_allgather.c create mode 100644 ompi/mca/coll/self/coll_self_allgatherv.c create mode 100644 ompi/mca/coll/self/coll_self_allreduce.c create mode 100644 ompi/mca/coll/self/coll_self_alltoall.c create mode 100644 ompi/mca/coll/self/coll_self_alltoallv.c create mode 100644 ompi/mca/coll/self/coll_self_alltoallw.c create mode 100644 ompi/mca/coll/self/coll_self_barrier.c create mode 100644 ompi/mca/coll/self/coll_self_bcast.c create mode 100644 ompi/mca/coll/self/coll_self_component.c create mode 100644 ompi/mca/coll/self/coll_self_exscan.c create mode 100644 ompi/mca/coll/self/coll_self_gather.c create mode 100644 ompi/mca/coll/self/coll_self_gatherv.c create mode 100644 ompi/mca/coll/self/coll_self_module.c create mode 100644 ompi/mca/coll/self/coll_self_reduce.c create mode 100644 ompi/mca/coll/self/coll_self_reduce_scatter.c create mode 100644 ompi/mca/coll/self/coll_self_scan.c create mode 100644 ompi/mca/coll/self/coll_self_scatter.c create mode 100644 ompi/mca/coll/self/coll_self_scatterv.c create mode 100644 ompi/mca/coll/self/owner.txt create mode 100644 ompi/mca/coll/sm/Makefile.am create mode 100644 ompi/mca/coll/sm/coll_sm.h create mode 100644 ompi/mca/coll/sm/coll_sm_allgather.c create mode 100644 ompi/mca/coll/sm/coll_sm_allgatherv.c create mode 100644 ompi/mca/coll/sm/coll_sm_allreduce.c create mode 100644 ompi/mca/coll/sm/coll_sm_alltoall.c create mode 100644 ompi/mca/coll/sm/coll_sm_alltoallv.c create mode 100644 ompi/mca/coll/sm/coll_sm_alltoallw.c create mode 100644 ompi/mca/coll/sm/coll_sm_barrier.c create mode 100644 ompi/mca/coll/sm/coll_sm_bcast.c create mode 100644 ompi/mca/coll/sm/coll_sm_component.c create mode 100644 ompi/mca/coll/sm/coll_sm_exscan.c create mode 100644 ompi/mca/coll/sm/coll_sm_gather.c create mode 100644 ompi/mca/coll/sm/coll_sm_gatherv.c create mode 100644 ompi/mca/coll/sm/coll_sm_module.c create mode 100644 ompi/mca/coll/sm/coll_sm_reduce.c create mode 100644 ompi/mca/coll/sm/coll_sm_reduce_scatter.c create mode 100644 ompi/mca/coll/sm/coll_sm_scan.c create mode 100644 ompi/mca/coll/sm/coll_sm_scatter.c create mode 100644 ompi/mca/coll/sm/coll_sm_scatterv.c create mode 100644 ompi/mca/coll/sm/help-mpi-coll-sm.txt create mode 100644 ompi/mca/coll/sm/memory-layout.ppt create mode 100644 ompi/mca/coll/sm/owner.txt create mode 100644 ompi/mca/coll/sync/Makefile.am create mode 100644 ompi/mca/coll/sync/coll_sync.h create mode 100644 ompi/mca/coll/sync/coll_sync_bcast.c create mode 100644 ompi/mca/coll/sync/coll_sync_component.c create mode 100644 ompi/mca/coll/sync/coll_sync_exscan.c create mode 100644 ompi/mca/coll/sync/coll_sync_gather.c create mode 100644 ompi/mca/coll/sync/coll_sync_gatherv.c create mode 100644 ompi/mca/coll/sync/coll_sync_module.c create mode 100644 ompi/mca/coll/sync/coll_sync_reduce.c create mode 100644 ompi/mca/coll/sync/coll_sync_reduce_scatter.c create mode 100644 ompi/mca/coll/sync/coll_sync_scan.c create mode 100644 ompi/mca/coll/sync/coll_sync_scatter.c create mode 100644 ompi/mca/coll/sync/coll_sync_scatterv.c create mode 100644 ompi/mca/coll/sync/help-coll-sync.txt create mode 100644 ompi/mca/coll/sync/owner.txt create mode 100644 ompi/mca/coll/tuned/Makefile.am create mode 100644 ompi/mca/coll/tuned/coll_tuned.h create mode 100644 ompi/mca/coll/tuned/coll_tuned_allgather_decision.c create mode 100644 ompi/mca/coll/tuned/coll_tuned_allgatherv_decision.c create mode 100644 ompi/mca/coll/tuned/coll_tuned_allreduce_decision.c create mode 100644 ompi/mca/coll/tuned/coll_tuned_alltoall_decision.c create mode 100644 ompi/mca/coll/tuned/coll_tuned_alltoallv_decision.c create mode 100644 ompi/mca/coll/tuned/coll_tuned_barrier_decision.c create mode 100644 ompi/mca/coll/tuned/coll_tuned_bcast_decision.c create mode 100644 ompi/mca/coll/tuned/coll_tuned_component.c create mode 100644 ompi/mca/coll/tuned/coll_tuned_decision_dynamic.c create mode 100644 ompi/mca/coll/tuned/coll_tuned_decision_fixed.c create mode 100644 ompi/mca/coll/tuned/coll_tuned_dynamic_file.c create mode 100644 ompi/mca/coll/tuned/coll_tuned_dynamic_file.h create mode 100644 ompi/mca/coll/tuned/coll_tuned_dynamic_rules.c create mode 100644 ompi/mca/coll/tuned/coll_tuned_dynamic_rules.h create mode 100644 ompi/mca/coll/tuned/coll_tuned_gather_decision.c create mode 100644 ompi/mca/coll/tuned/coll_tuned_module.c create mode 100644 ompi/mca/coll/tuned/coll_tuned_reduce_decision.c create mode 100644 ompi/mca/coll/tuned/coll_tuned_reduce_scatter_decision.c create mode 100644 ompi/mca/coll/tuned/coll_tuned_scatter_decision.c create mode 100644 ompi/mca/coll/tuned/owner.txt create mode 100644 ompi/mca/common/Makefile.am create mode 100644 ompi/mca/common/ompio/Makefile.am create mode 100644 ompi/mca/common/ompio/common_ompio.h create mode 100644 ompi/mca/common/ompio/common_ompio_file_open.c create mode 100644 ompi/mca/common/ompio/common_ompio_file_read.c create mode 100644 ompi/mca/common/ompio/common_ompio_file_view.c create mode 100644 ompi/mca/common/ompio/common_ompio_file_write.c create mode 100644 ompi/mca/common/ompio/common_ompio_print_queue.c create mode 100644 ompi/mca/common/ompio/common_ompio_print_queue.h create mode 100644 ompi/mca/common/ompio/configure.m4 create mode 100644 ompi/mca/crcp/Makefile.am create mode 100644 ompi/mca/crcp/base/Makefile.am create mode 100644 ompi/mca/crcp/base/base.h create mode 100644 ompi/mca/crcp/base/crcp_base_fns.c create mode 100644 ompi/mca/crcp/base/crcp_base_frame.c create mode 100644 ompi/mca/crcp/base/crcp_base_select.c create mode 100644 ompi/mca/crcp/base/owner.txt create mode 100644 ompi/mca/crcp/bkmrk/Makefile.am create mode 100644 ompi/mca/crcp/bkmrk/configure.m4 create mode 100644 ompi/mca/crcp/bkmrk/crcp_bkmrk.h create mode 100644 ompi/mca/crcp/bkmrk/crcp_bkmrk_btl.c create mode 100644 ompi/mca/crcp/bkmrk/crcp_bkmrk_btl.h create mode 100644 ompi/mca/crcp/bkmrk/crcp_bkmrk_component.c create mode 100644 ompi/mca/crcp/bkmrk/crcp_bkmrk_module.c create mode 100644 ompi/mca/crcp/bkmrk/crcp_bkmrk_pml.c create mode 100644 ompi/mca/crcp/bkmrk/crcp_bkmrk_pml.h create mode 100644 ompi/mca/crcp/bkmrk/owner.txt create mode 100644 ompi/mca/crcp/crcp.h create mode 100644 ompi/mca/crcp/ompi_crcp.7in create mode 100644 ompi/mca/fbtl/Makefile.am create mode 100644 ompi/mca/fbtl/base/Makefile.am create mode 100644 ompi/mca/fbtl/base/base.h create mode 100644 ompi/mca/fbtl/base/fbtl_base_file_select.c create mode 100644 ompi/mca/fbtl/base/fbtl_base_file_unselect.c create mode 100644 ompi/mca/fbtl/base/fbtl_base_find_available.c create mode 100644 ompi/mca/fbtl/base/fbtl_base_frame.c create mode 100644 ompi/mca/fbtl/base/owner.txt create mode 100644 ompi/mca/fbtl/configure.m4 create mode 100644 ompi/mca/fbtl/fbtl.h create mode 100644 ompi/mca/fbtl/plfs/Makefile.am create mode 100644 ompi/mca/fbtl/plfs/configure.m4 create mode 100644 ompi/mca/fbtl/plfs/fbtl_plfs.c create mode 100644 ompi/mca/fbtl/plfs/fbtl_plfs.h create mode 100644 ompi/mca/fbtl/plfs/fbtl_plfs_component.c create mode 100644 ompi/mca/fbtl/plfs/fbtl_plfs_ipreadv.c create mode 100644 ompi/mca/fbtl/plfs/fbtl_plfs_ipwritev.c create mode 100644 ompi/mca/fbtl/plfs/fbtl_plfs_preadv.c create mode 100644 ompi/mca/fbtl/plfs/fbtl_plfs_pwritev.c create mode 100644 ompi/mca/fbtl/plfs/owner.txt create mode 100644 ompi/mca/fbtl/posix/Makefile.am create mode 100644 ompi/mca/fbtl/posix/configure.m4 create mode 100644 ompi/mca/fbtl/posix/fbtl_posix.c create mode 100644 ompi/mca/fbtl/posix/fbtl_posix.h create mode 100644 ompi/mca/fbtl/posix/fbtl_posix_component.c create mode 100644 ompi/mca/fbtl/posix/fbtl_posix_ipreadv.c create mode 100644 ompi/mca/fbtl/posix/fbtl_posix_ipwritev.c create mode 100644 ompi/mca/fbtl/posix/fbtl_posix_lock.c create mode 100644 ompi/mca/fbtl/posix/fbtl_posix_preadv.c create mode 100644 ompi/mca/fbtl/posix/fbtl_posix_pwritev.c create mode 100644 ompi/mca/fbtl/posix/owner.txt create mode 100644 ompi/mca/fbtl/pvfs2/Makefile.am create mode 100644 ompi/mca/fbtl/pvfs2/configure.m4 create mode 100644 ompi/mca/fbtl/pvfs2/fbtl_pvfs2.c create mode 100644 ompi/mca/fbtl/pvfs2/fbtl_pvfs2.h create mode 100644 ompi/mca/fbtl/pvfs2/fbtl_pvfs2_component.c create mode 100644 ompi/mca/fbtl/pvfs2/fbtl_pvfs2_ipreadv.c create mode 100644 ompi/mca/fbtl/pvfs2/fbtl_pvfs2_ipwritev.c create mode 100644 ompi/mca/fbtl/pvfs2/fbtl_pvfs2_preadv.c create mode 100644 ompi/mca/fbtl/pvfs2/fbtl_pvfs2_pwritev.c create mode 100644 ompi/mca/fbtl/pvfs2/owner.txt create mode 100644 ompi/mca/fcoll/Makefile.am create mode 100644 ompi/mca/fcoll/base/Makefile.am create mode 100644 ompi/mca/fcoll/base/base.h create mode 100644 ompi/mca/fcoll/base/fcoll_base_coll_array.c create mode 100644 ompi/mca/fcoll/base/fcoll_base_coll_array.h create mode 100644 ompi/mca/fcoll/base/fcoll_base_file_select.c create mode 100644 ompi/mca/fcoll/base/fcoll_base_file_unselect.c create mode 100644 ompi/mca/fcoll/base/fcoll_base_find_available.c create mode 100644 ompi/mca/fcoll/base/fcoll_base_frame.c create mode 100644 ompi/mca/fcoll/base/fcoll_base_sort.c create mode 100644 ompi/mca/fcoll/base/owner.txt create mode 100644 ompi/mca/fcoll/configure.m4 create mode 100644 ompi/mca/fcoll/dynamic/Makefile.am create mode 100644 ompi/mca/fcoll/dynamic/fcoll_dynamic.h create mode 100644 ompi/mca/fcoll/dynamic/fcoll_dynamic_component.c create mode 100644 ompi/mca/fcoll/dynamic/fcoll_dynamic_file_read_all.c create mode 100644 ompi/mca/fcoll/dynamic/fcoll_dynamic_file_write_all.c create mode 100644 ompi/mca/fcoll/dynamic/fcoll_dynamic_module.c create mode 100644 ompi/mca/fcoll/dynamic/owner.txt create mode 100644 ompi/mca/fcoll/dynamic_gen2/Makefile.am create mode 100644 ompi/mca/fcoll/dynamic_gen2/fcoll_dynamic_gen2.h create mode 100644 ompi/mca/fcoll/dynamic_gen2/fcoll_dynamic_gen2_component.c create mode 100644 ompi/mca/fcoll/dynamic_gen2/fcoll_dynamic_gen2_file_read_all.c create mode 100644 ompi/mca/fcoll/dynamic_gen2/fcoll_dynamic_gen2_file_write_all.c create mode 100644 ompi/mca/fcoll/dynamic_gen2/fcoll_dynamic_gen2_module.c create mode 100644 ompi/mca/fcoll/dynamic_gen2/owner.txt create mode 100644 ompi/mca/fcoll/fcoll.h create mode 100644 ompi/mca/fcoll/individual/Makefile.am create mode 100644 ompi/mca/fcoll/individual/fcoll_individual.h create mode 100644 ompi/mca/fcoll/individual/fcoll_individual_component.c create mode 100644 ompi/mca/fcoll/individual/fcoll_individual_file_read_all.c create mode 100644 ompi/mca/fcoll/individual/fcoll_individual_file_write_all.c create mode 100644 ompi/mca/fcoll/individual/fcoll_individual_module.c create mode 100644 ompi/mca/fcoll/individual/owner.txt create mode 100644 ompi/mca/fcoll/static/Makefile.am create mode 100644 ompi/mca/fcoll/static/fcoll_static.h create mode 100644 ompi/mca/fcoll/static/fcoll_static_component.c create mode 100644 ompi/mca/fcoll/static/fcoll_static_file_read_all.c create mode 100644 ompi/mca/fcoll/static/fcoll_static_file_write_all.c create mode 100644 ompi/mca/fcoll/static/fcoll_static_module.c create mode 100644 ompi/mca/fcoll/static/owner.txt create mode 100644 ompi/mca/fcoll/two_phase/Makefile.am create mode 100644 ompi/mca/fcoll/two_phase/fcoll_two_phase.h create mode 100644 ompi/mca/fcoll/two_phase/fcoll_two_phase_component.c create mode 100644 ompi/mca/fcoll/two_phase/fcoll_two_phase_file_read_all.c create mode 100644 ompi/mca/fcoll/two_phase/fcoll_two_phase_file_write_all.c create mode 100644 ompi/mca/fcoll/two_phase/fcoll_two_phase_module.c create mode 100644 ompi/mca/fcoll/two_phase/fcoll_two_phase_support_fns.c create mode 100644 ompi/mca/fcoll/two_phase/owner.txt create mode 100644 ompi/mca/fs/Makefile.am create mode 100644 ompi/mca/fs/base/Makefile.am create mode 100644 ompi/mca/fs/base/base.h create mode 100644 ompi/mca/fs/base/fs_base_file_select.c create mode 100644 ompi/mca/fs/base/fs_base_file_unselect.c create mode 100644 ompi/mca/fs/base/fs_base_find_available.c create mode 100644 ompi/mca/fs/base/fs_base_frame.c create mode 100644 ompi/mca/fs/base/fs_base_get_parent_dir.c create mode 100644 ompi/mca/fs/base/owner.txt create mode 100644 ompi/mca/fs/configure.m4 create mode 100644 ompi/mca/fs/fs.h create mode 100644 ompi/mca/fs/lustre/.opal_unignore create mode 100644 ompi/mca/fs/lustre/Makefile.am create mode 100644 ompi/mca/fs/lustre/configure.m4 create mode 100644 ompi/mca/fs/lustre/fs_lustre.c create mode 100644 ompi/mca/fs/lustre/fs_lustre.h create mode 100644 ompi/mca/fs/lustre/fs_lustre_component.c create mode 100644 ompi/mca/fs/lustre/fs_lustre_file_close.c create mode 100644 ompi/mca/fs/lustre/fs_lustre_file_delete.c create mode 100644 ompi/mca/fs/lustre/fs_lustre_file_get_size.c create mode 100644 ompi/mca/fs/lustre/fs_lustre_file_open.c create mode 100644 ompi/mca/fs/lustre/fs_lustre_file_set_size.c create mode 100644 ompi/mca/fs/lustre/fs_lustre_file_sync.c create mode 100644 ompi/mca/fs/lustre/owner.txt create mode 100644 ompi/mca/fs/plfs/Makefile.am create mode 100644 ompi/mca/fs/plfs/configure.m4 create mode 100644 ompi/mca/fs/plfs/fs_plfs.c create mode 100644 ompi/mca/fs/plfs/fs_plfs.h create mode 100644 ompi/mca/fs/plfs/fs_plfs_component.c create mode 100644 ompi/mca/fs/plfs/fs_plfs_file_close.c create mode 100644 ompi/mca/fs/plfs/fs_plfs_file_delete.c create mode 100644 ompi/mca/fs/plfs/fs_plfs_file_get_size.c create mode 100644 ompi/mca/fs/plfs/fs_plfs_file_open.c create mode 100644 ompi/mca/fs/plfs/fs_plfs_file_set_size.c create mode 100644 ompi/mca/fs/plfs/fs_plfs_file_sync.c create mode 100644 ompi/mca/fs/plfs/owner.txt create mode 100644 ompi/mca/fs/pvfs2/Makefile.am create mode 100644 ompi/mca/fs/pvfs2/configure.m4 create mode 100644 ompi/mca/fs/pvfs2/fs_pvfs2.c create mode 100644 ompi/mca/fs/pvfs2/fs_pvfs2.h create mode 100644 ompi/mca/fs/pvfs2/fs_pvfs2_component.c create mode 100644 ompi/mca/fs/pvfs2/fs_pvfs2_file_close.c create mode 100644 ompi/mca/fs/pvfs2/fs_pvfs2_file_delete.c create mode 100644 ompi/mca/fs/pvfs2/fs_pvfs2_file_get_size.c create mode 100644 ompi/mca/fs/pvfs2/fs_pvfs2_file_open.c create mode 100644 ompi/mca/fs/pvfs2/fs_pvfs2_file_set_size.c create mode 100644 ompi/mca/fs/pvfs2/fs_pvfs2_file_sync.c create mode 100644 ompi/mca/fs/pvfs2/owner.txt create mode 100644 ompi/mca/fs/ufs/Makefile.am create mode 100644 ompi/mca/fs/ufs/fs_ufs.c create mode 100644 ompi/mca/fs/ufs/fs_ufs.h create mode 100644 ompi/mca/fs/ufs/fs_ufs_component.c create mode 100644 ompi/mca/fs/ufs/fs_ufs_file_close.c create mode 100644 ompi/mca/fs/ufs/fs_ufs_file_delete.c create mode 100644 ompi/mca/fs/ufs/fs_ufs_file_get_size.c create mode 100644 ompi/mca/fs/ufs/fs_ufs_file_open.c create mode 100644 ompi/mca/fs/ufs/fs_ufs_file_set_size.c create mode 100644 ompi/mca/fs/ufs/fs_ufs_file_sync.c create mode 100644 ompi/mca/fs/ufs/owner.txt create mode 100644 ompi/mca/hook/Makefile.am create mode 100644 ompi/mca/hook/base/Makefile.am create mode 100644 ompi/mca/hook/base/base.h create mode 100644 ompi/mca/hook/base/help-mca-hook-base.txt create mode 100644 ompi/mca/hook/base/hook_base.c create mode 100644 ompi/mca/hook/base/owner.txt create mode 100644 ompi/mca/hook/configure.m4 create mode 100644 ompi/mca/hook/demo/.opal_ignore create mode 100644 ompi/mca/hook/demo/Makefile.am create mode 100644 ompi/mca/hook/demo/configure.m4 create mode 100644 ompi/mca/hook/demo/hook_demo.h create mode 100644 ompi/mca/hook/demo/hook_demo_component.c create mode 100644 ompi/mca/hook/demo/hook_demo_fns.c create mode 100644 ompi/mca/hook/demo/owner.txt create mode 100644 ompi/mca/hook/hook.h create mode 100644 ompi/mca/io/Makefile.am create mode 100644 ompi/mca/io/base/Makefile.am create mode 100644 ompi/mca/io/base/base.h create mode 100644 ompi/mca/io/base/io_base_component_list.c create mode 100644 ompi/mca/io/base/io_base_delete.c create mode 100644 ompi/mca/io/base/io_base_file_select.c create mode 100644 ompi/mca/io/base/io_base_find_available.c create mode 100644 ompi/mca/io/base/io_base_frame.c create mode 100644 ompi/mca/io/base/io_base_register_datarep.c create mode 100644 ompi/mca/io/base/io_base_request.c create mode 100644 ompi/mca/io/base/io_base_request.h create mode 100644 ompi/mca/io/base/owner.txt create mode 100644 ompi/mca/io/configure.m4 create mode 100644 ompi/mca/io/io.h create mode 100644 ompi/mca/io/ompio/Makefile.am create mode 100644 ompi/mca/io/ompio/configure.m4 create mode 100644 ompi/mca/io/ompio/io_ompio.c create mode 100644 ompi/mca/io/ompio/io_ompio.h create mode 100644 ompi/mca/io/ompio/io_ompio_aggregators.c create mode 100644 ompi/mca/io/ompio/io_ompio_aggregators.h create mode 100644 ompi/mca/io/ompio/io_ompio_component.c create mode 100644 ompi/mca/io/ompio/io_ompio_file_open.c create mode 100644 ompi/mca/io/ompio/io_ompio_file_read.c create mode 100644 ompi/mca/io/ompio/io_ompio_file_set_view.c create mode 100644 ompi/mca/io/ompio/io_ompio_file_write.c create mode 100644 ompi/mca/io/ompio/io_ompio_module.c create mode 100644 ompi/mca/io/ompio/io_ompio_request.c create mode 100644 ompi/mca/io/ompio/io_ompio_request.h create mode 100644 ompi/mca/io/ompio/owner.txt create mode 100644 ompi/mca/io/romio314/.gitignore create mode 100644 ompi/mca/io/romio314/Makefile.am create mode 100644 ompi/mca/io/romio314/REFRESH_NOTES.txt create mode 100644 ompi/mca/io/romio314/autogen.subdirs create mode 100644 ompi/mca/io/romio314/configure.m4 create mode 100644 ompi/mca/io/romio314/ompi.patch create mode 100644 ompi/mca/io/romio314/owner.txt create mode 100644 ompi/mca/io/romio314/romio/.codingcheck create mode 100644 ompi/mca/io/romio314/romio/.config_params create mode 100644 ompi/mca/io/romio314/romio/COPYRIGHT create mode 100644 ompi/mca/io/romio314/romio/Makefile.am create mode 100644 ompi/mca/io/romio314/romio/Makefile.options create mode 100644 ompi/mca/io/romio314/romio/README create mode 100644 ompi/mca/io/romio314/romio/README_OMPI create mode 100644 ompi/mca/io/romio314/romio/adio/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/.gitignore create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/ad_gpfs.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/ad_gpfs.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/ad_gpfs_aggrs.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/ad_gpfs_aggrs.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/ad_gpfs_close.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/ad_gpfs_flush.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/ad_gpfs_hints.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/ad_gpfs_open.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/ad_gpfs_rdcoll.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/ad_gpfs_tuning.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/ad_gpfs_tuning.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/ad_gpfs_wrcoll.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/bg/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/bg/ad_bg_aggrs.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/bg/ad_bg_aggrs.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/bg/ad_bg_pset.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/bg/ad_bg_pset.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/pe/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/pe/ad_pe_aggrs.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gpfs/pe/ad_pe_aggrs.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gridftp/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gridftp/ad_gridftp.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gridftp/ad_gridftp.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gridftp/ad_gridftp_close.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gridftp/ad_gridftp_delete.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gridftp/ad_gridftp_fcntl.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gridftp/ad_gridftp_features.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gridftp/ad_gridftp_flush.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gridftp/ad_gridftp_hints.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gridftp/ad_gridftp_open.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gridftp/ad_gridftp_read.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gridftp/ad_gridftp_resize.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gridftp/ad_gridftp_write.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_gridftp/globus_routines.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_hfs/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/ad_hfs/README create mode 100644 ompi/mca/io/romio314/romio/adio/ad_hfs/ad_hfs.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_hfs/ad_hfs.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_hfs/ad_hfs_fcntl.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_hfs/ad_hfs_open.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_hfs/ad_hfs_read.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_hfs/ad_hfs_resize.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_hfs/ad_hfs_write.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_lustre/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/ad_lustre/README create mode 100644 ompi/mca/io/romio314/romio/adio/ad_lustre/ad_lustre.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_lustre/ad_lustre.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_lustre/ad_lustre_aggregate.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_lustre/ad_lustre_fcntl.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_lustre/ad_lustre_hints.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_lustre/ad_lustre_open.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_lustre/ad_lustre_rwcontig.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_lustre/ad_lustre_wrcoll.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_lustre/ad_lustre_wrstr.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_nfs/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/ad_nfs/ad_nfs.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_nfs/ad_nfs.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_nfs/ad_nfs_done.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_nfs/ad_nfs_fcntl.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_nfs/ad_nfs_features.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_nfs/ad_nfs_getsh.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_nfs/ad_nfs_hints.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_nfs/ad_nfs_iread.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_nfs/ad_nfs_iwrite.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_nfs/ad_nfs_open.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_nfs/ad_nfs_read.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_nfs/ad_nfs_resize.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_nfs/ad_nfs_setsh.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_nfs/ad_nfs_wait.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_nfs/ad_nfs_write.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_ntfs/ad_ntfs.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_ntfs/ad_ntfs.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_ntfs/ad_ntfs_close.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_ntfs/ad_ntfs_done.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_ntfs/ad_ntfs_fcntl.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_ntfs/ad_ntfs_feature.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_ntfs/ad_ntfs_flush.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_ntfs/ad_ntfs_iread.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_ntfs/ad_ntfs_iwrite.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_ntfs/ad_ntfs_open.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_ntfs/ad_ntfs_read.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_ntfs/ad_ntfs_resize.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_ntfs/ad_ntfs_wait.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_ntfs/ad_ntfs_write.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_panfs/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/ad_panfs/ad_panfs.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_panfs/ad_panfs.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_panfs/ad_panfs_hints.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_panfs/ad_panfs_open.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_panfs/ad_panfs_read.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_panfs/ad_panfs_resize.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_panfs/ad_panfs_write.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pfs/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pfs/ad_pfs.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pfs/ad_pfs.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pfs/ad_pfs_done.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pfs/ad_pfs_fcntl.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pfs/ad_pfs_flush.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pfs/ad_pfs_hints.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pfs/ad_pfs_iread.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pfs/ad_pfs_iwrite.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pfs/ad_pfs_open.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pfs/ad_pfs_read.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pfs/ad_pfs_wait.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pfs/ad_pfs_write.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_piofs/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/ad_piofs/README create mode 100644 ompi/mca/io/romio314/romio/adio/ad_piofs/ad_piofs.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_piofs/ad_piofs.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_piofs/ad_piofs_fcntl.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_piofs/ad_piofs_features.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_piofs/ad_piofs_hints.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_piofs/ad_piofs_open.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_piofs/ad_piofs_read.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_piofs/ad_piofs_write.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs/ad_pvfs.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs/ad_pvfs.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs/ad_pvfs_close.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs/ad_pvfs_delete.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs/ad_pvfs_fcntl.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs/ad_pvfs_flush.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs/ad_pvfs_hints.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs/ad_pvfs_open.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs/ad_pvfs_read.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs/ad_pvfs_resize.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs/ad_pvfs_write.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2_aio.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2_close.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2_common.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2_common.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2_delete.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2_fcntl.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2_features.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2_flush.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2_hints.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2_io.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2_io_dtype.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2_io_list.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2_open.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2_read.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2_read_list_classic.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2_resize.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2_write.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_pvfs2/ad_pvfs2_write_list_classic.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_sfs/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/ad_sfs/README create mode 100644 ompi/mca/io/romio314/romio/adio/ad_sfs/ad_sfs.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_sfs/ad_sfs.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_sfs/ad_sfs_fcntl.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_sfs/ad_sfs_flush.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_sfs/ad_sfs_open.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs_close.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs_delete.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs_done.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs_fcntl.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs_flush.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs_getsh.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs_hints.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs_iread.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs_iwrite.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs_open.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs_rdcoll.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs_read.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs_resize.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs_seek.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs_setsh.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs_wait.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs_wrcoll.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_testfs/ad_testfs_write.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_ufs/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/ad_ufs/ad_ufs.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_ufs/ad_ufs.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_ufs/ad_ufs_open.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_xfs/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/ad_xfs/ad_xfs.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_xfs/ad_xfs.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_xfs/ad_xfs_fcntl.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_xfs/ad_xfs_hints.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_xfs/ad_xfs_open.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_xfs/ad_xfs_read.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_xfs/ad_xfs_resize.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_xfs/ad_xfs_write.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_zoidfs/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/ad_zoidfs/ad_zoidfs.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_zoidfs/ad_zoidfs.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_zoidfs/ad_zoidfs_close.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_zoidfs/ad_zoidfs_common.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_zoidfs/ad_zoidfs_common.h create mode 100644 ompi/mca/io/romio314/romio/adio/ad_zoidfs/ad_zoidfs_delete.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_zoidfs/ad_zoidfs_fcntl.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_zoidfs/ad_zoidfs_features.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_zoidfs/ad_zoidfs_flush.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_zoidfs/ad_zoidfs_io.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_zoidfs/ad_zoidfs_open.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_zoidfs/ad_zoidfs_read_list.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_zoidfs/ad_zoidfs_resize.c create mode 100644 ompi/mca/io/romio314/romio/adio/ad_zoidfs/ad_zoidfs_write_list.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_aggregate.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_aggregate_new.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_close.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_coll_build_req_new.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_coll_exch_new.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_darray.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_delete.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_done.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_done_fake.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_end.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_fcntl.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_features.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_flush.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_fstype.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_get_sh_fp.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_hints.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_init.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_io_coll.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_iopen.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_iread.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_iread_fake.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_iwrite.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_iwrite_fake.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_open.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_opencoll.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_opencoll_failsafe.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_opencoll_scalable.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_prealloc.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_read.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_read_coll.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_read_str.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_read_str_naive.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_resize.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_seek.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_set_sh_fp.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_set_view.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_subarray.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_threaded_io.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_wait.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_wait_fake.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_write.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_write_coll.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_write_nolock.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_write_str.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/ad_write_str_naive.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/adi_close.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/async_list.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/byte_offset.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/cb_config_list.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/eof_offset.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/error.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/flatten.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/get_fp_posn.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/greq_fns.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/heap-sort.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/hint_fns.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/iscontig.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/lock.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/malloc.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/p2p_aggregation.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/req_malloc.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/shfp_fname.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/status_setb.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/strfns.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/system_hints.c create mode 100644 ompi/mca/io/romio314/romio/adio/common/utils.c create mode 100644 ompi/mca/io/romio314/romio/adio/include/BaseIOErrMsgs.msg create mode 100644 ompi/mca/io/romio314/romio/adio/include/adio.h create mode 100644 ompi/mca/io/romio314/romio/adio/include/adio_cb_config_list.h create mode 100644 ompi/mca/io/romio314/romio/adio/include/adio_extern.h create mode 100644 ompi/mca/io/romio314/romio/adio/include/adioi.h create mode 100644 ompi/mca/io/romio314/romio/adio/include/adioi_errmsg.h create mode 100644 ompi/mca/io/romio314/romio/adio/include/adioi_error.h create mode 100644 ompi/mca/io/romio314/romio/adio/include/adioi_fs_proto.h create mode 100644 ompi/mca/io/romio314/romio/adio/include/heap-sort.h create mode 100644 ompi/mca/io/romio314/romio/adio/include/hint_fns.h create mode 100644 ompi/mca/io/romio314/romio/adio/include/mpio_error.h create mode 100644 ompi/mca/io/romio314/romio/adio/include/mpipr.h create mode 100644 ompi/mca/io/romio314/romio/adio/include/mpiu_external32.h create mode 100644 ompi/mca/io/romio314/romio/adio/include/mpiu_greq.h create mode 100644 ompi/mca/io/romio314/romio/adio/include/nopackage.h create mode 100644 ompi/mca/io/romio314/romio/adio/include/romioconf-undefs.h create mode 100755 ompi/mca/io/romio314/romio/autogen.sh create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_am.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_atomic.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_attr_alias.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_bugfix.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_cache.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_cc.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_coverage.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_cxx.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_f77.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_f77old.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_fc.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_libs.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_make.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_mpi.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_romio.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_runlog.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_shl.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_shm.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_subcfg.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/aclocal_util.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/ax_prefix_config_h.m4 create mode 100644 ompi/mca/io/romio314/romio/confdb/ax_tls.m4 create mode 100644 ompi/mca/io/romio314/romio/configure.ac create mode 100644 ompi/mca/io/romio314/romio/doc/README create mode 100755 ompi/mca/io/romio314/romio/doc/makepubpage.sh create mode 100644 ompi/mca/io/romio314/romio/doc/pubs.bib create mode 100644 ompi/mca/io/romio314/romio/doc/romio.bib create mode 100644 ompi/mca/io/romio314/romio/doc/source-guide.tex create mode 100644 ompi/mca/io/romio314/romio/doc/users-guide.pdf create mode 100644 ompi/mca/io/romio314/romio/doc/users-guide.tex create mode 100644 ompi/mca/io/romio314/romio/include/io_romio_conv.h create mode 100644 ompi/mca/io/romio314/romio/include/mpio.h.in create mode 100644 ompi/mca/io/romio314/romio/include/mpiof.h.in create mode 100644 ompi/mca/io/romio314/romio/localdefs.in create mode 100644 ompi/mca/io/romio314/romio/mpi-io/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/mpi-io/close.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/delete.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/file_c2f.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/file_f2c.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/closef.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/deletef.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/fsyncf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/get_amodef.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/get_atomf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/get_bytofff.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/get_errhf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/get_extentf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/get_groupf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/get_infof.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/get_posn_shf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/get_posnf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/get_sizef.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/get_viewf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/iotestf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/iowaitf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/iread_atf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/iread_shf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/ireadf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/iwrite_atf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/iwrite_shf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/iwritef.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/openf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/preallocf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/rd_atallbf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/rd_atallef.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/read_allbf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/read_allef.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/read_allf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/read_atallf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/read_atf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/read_ordbf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/read_ordef.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/read_ordf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/read_shf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/readf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/seek_shf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/seekf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/set_atomf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/set_errhf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/set_infof.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/set_sizef.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/set_viewf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/wr_atallbf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/wr_atallef.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/write_allbf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/write_allef.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/write_allf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/write_atallf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/write_atf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/write_ordbf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/write_ordef.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/write_ordf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/write_shf.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fortran/writef.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/fsync.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/get_amode.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/get_atom.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/get_bytoff.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/get_errh.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/get_extent.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/get_group.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/get_info.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/get_posn.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/get_posn_sh.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/get_size.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/get_view.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/glue/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/mpi-io/glue/default/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/mpi-io/glue/default/mpio_err.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/glue/default/mpio_file.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/glue/large_count.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/glue/mpich/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/mpi-io/glue/mpich/mpio_err.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/glue/mpich/mpio_file.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/glue/openmpi/Makefile.mk create mode 100644 ompi/mca/io/romio314/romio/mpi-io/glue/openmpi/mpio_err.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/glue/openmpi/mpio_file.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/ioreq_c2f.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/ioreq_f2c.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/iotest.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/iotestall.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/iotestany.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/iotestsome.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/iowait.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/iowaitall.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/iowaitany.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/iowaitsome.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/iread.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/iread_at.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/iread_sh.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/iwrite.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/iwrite_at.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/iwrite_sh.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/mpich_fileutil.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/mpioimpl.h create mode 100644 ompi/mca/io/romio314/romio/mpi-io/mpioprof.h create mode 100644 ompi/mca/io/romio314/romio/mpi-io/mpir-mpioinit.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/mpiu_external32.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/mpiu_greq.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/open.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/prealloc.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/rd_atallb.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/rd_atalle.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/read.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/read_all.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/read_allb.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/read_alle.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/read_at.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/read_atall.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/read_ord.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/read_ordb.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/read_orde.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/read_sh.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/register_datarep.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/seek.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/seek_sh.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/set_atom.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/set_errh.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/set_info.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/set_size.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/set_view.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/wr_atallb.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/wr_atalle.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/write.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/write_all.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/write_allb.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/write_alle.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/write_at.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/write_atall.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/write_ord.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/write_ordb.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/write_orde.c create mode 100644 ompi/mca/io/romio314/romio/mpi-io/write_sh.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/array/Makefile.in create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/array/darray.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/array/fortran/Makefile.in create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/array/fortran/darrayf.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/array/fortran/subarrayf.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/array/subarray.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/Makefile.in create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/fortran/Makefile.in create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/fortran/info_createf.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/fortran/info_deletef.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/fortran/info_dupf.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/fortran/info_freef.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/fortran/info_getf.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/fortran/info_getnksf.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/fortran/info_getnthf.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/fortran/info_getvlnf.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/fortran/info_setf.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/info_c2f.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/info_create.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/info_delete.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/info_dup.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/info_f2c.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/info_free.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/info_get.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/info_getnks.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/info_getnth.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/info_getvln.c create mode 100644 ompi/mca/io/romio314/romio/mpi2-other/info/info_set.c create mode 100644 ompi/mca/io/romio314/romio/test-internal/Makefile.am create mode 100644 ompi/mca/io/romio314/romio/test-internal/file_realms_test.c create mode 100644 ompi/mca/io/romio314/romio/test-internal/heap_test.c create mode 100644 ompi/mca/io/romio314/romio/test-internal/io_bounds_test.c create mode 100644 ompi/mca/io/romio314/romio/test/.codingcheck create mode 100644 ompi/mca/io/romio314/romio/test/Makefile.am create mode 100644 ompi/mca/io/romio314/romio/test/Mfile.in create mode 100644 ompi/mca/io/romio314/romio/test/README create mode 100644 ompi/mca/io/romio314/romio/test/aggregation1.c create mode 100644 ompi/mca/io/romio314/romio/test/aggregation2.c create mode 100644 ompi/mca/io/romio314/romio/test/async-multiple.c create mode 100644 ompi/mca/io/romio314/romio/test/async.c create mode 100644 ompi/mca/io/romio314/romio/test/atomicity.c create mode 100644 ompi/mca/io/romio314/romio/test/big_extents.c create mode 100644 ompi/mca/io/romio314/romio/test/coll_perf.c create mode 100644 ompi/mca/io/romio314/romio/test/coll_test.c create mode 100644 ompi/mca/io/romio314/romio/test/creat_excl.c create mode 100644 ompi/mca/io/romio314/romio/test/darray_read.c create mode 100644 ompi/mca/io/romio314/romio/test/error.c create mode 100644 ompi/mca/io/romio314/romio/test/excl.c create mode 100644 ompi/mca/io/romio314/romio/test/external32.c create mode 100644 ompi/mca/io/romio314/romio/test/fcoll_test.f.in create mode 100644 ompi/mca/io/romio314/romio/test/file_info.c create mode 100644 ompi/mca/io/romio314/romio/test/fmisc.f.in create mode 100644 ompi/mca/io/romio314/romio/test/fperf.f.in create mode 100644 ompi/mca/io/romio314/romio/test/hindexed.c create mode 100644 ompi/mca/io/romio314/romio/test/i_noncontig.c create mode 100644 ompi/mca/io/romio314/romio/test/large_array.c create mode 100644 ompi/mca/io/romio314/romio/test/large_file.c.in create mode 100644 ompi/mca/io/romio314/romio/test/misc.c.in create mode 100644 ompi/mca/io/romio314/romio/test/noncontig.c create mode 100644 ompi/mca/io/romio314/romio/test/noncontig_coll.c create mode 100644 ompi/mca/io/romio314/romio/test/noncontig_coll2.c create mode 100644 ompi/mca/io/romio314/romio/test/ordered_fp.c create mode 100644 ompi/mca/io/romio314/romio/test/perf.c create mode 100644 ompi/mca/io/romio314/romio/test/pfcoll_test.f.in create mode 100644 ompi/mca/io/romio314/romio/test/psimple.c create mode 100644 ompi/mca/io/romio314/romio/test/rtest.in create mode 100644 ompi/mca/io/romio314/romio/test/runtests.in create mode 100644 ompi/mca/io/romio314/romio/test/shared_fp.c create mode 100644 ompi/mca/io/romio314/romio/test/simple.c create mode 100644 ompi/mca/io/romio314/romio/test/split_coll.c create mode 100644 ompi/mca/io/romio314/romio/test/status.c create mode 100644 ompi/mca/io/romio314/romio/test/types_with_zeros.c create mode 100644 ompi/mca/io/romio314/romio/util/nfslock.c create mode 100644 ompi/mca/io/romio314/romio/util/romioinstall.in create mode 100755 ompi/mca/io/romio314/romio/util/tarch create mode 100644 ompi/mca/io/romio314/src/Makefile.extra create mode 100644 ompi/mca/io/romio314/src/io_romio314.h create mode 100644 ompi/mca/io/romio314/src/io_romio314_component.c create mode 100644 ompi/mca/io/romio314/src/io_romio314_file_open.c create mode 100644 ompi/mca/io/romio314/src/io_romio314_file_read.c create mode 100644 ompi/mca/io/romio314/src/io_romio314_file_write.c create mode 100644 ompi/mca/io/romio314/src/io_romio314_module.c create mode 100644 ompi/mca/mca.h create mode 100644 ompi/mca/mtl/Makefile.am create mode 100644 ompi/mca/mtl/base/Makefile.am create mode 100644 ompi/mca/mtl/base/base.h create mode 100644 ompi/mca/mtl/base/mtl_base_datatype.h create mode 100644 ompi/mca/mtl/base/mtl_base_frame.c create mode 100644 ompi/mca/mtl/base/owner.txt create mode 100644 ompi/mca/mtl/configure.m4 create mode 100644 ompi/mca/mtl/mtl.h create mode 100644 ompi/mca/mtl/mxm/Makefile.am create mode 100644 ompi/mca/mtl/mxm/configure.m4 create mode 100644 ompi/mca/mtl/mxm/help-mtl-mxm.txt create mode 100644 ompi/mca/mtl/mxm/mtl_mxm.c create mode 100644 ompi/mca/mtl/mxm/mtl_mxm.h create mode 100644 ompi/mca/mtl/mxm/mtl_mxm_cancel.c create mode 100644 ompi/mca/mtl/mxm/mtl_mxm_component.c create mode 100644 ompi/mca/mtl/mxm/mtl_mxm_debug.h create mode 100644 ompi/mca/mtl/mxm/mtl_mxm_endpoint.c create mode 100644 ompi/mca/mtl/mxm/mtl_mxm_endpoint.h create mode 100644 ompi/mca/mtl/mxm/mtl_mxm_probe.c create mode 100644 ompi/mca/mtl/mxm/mtl_mxm_recv.c create mode 100644 ompi/mca/mtl/mxm/mtl_mxm_request.h create mode 100644 ompi/mca/mtl/mxm/mtl_mxm_send.c create mode 100644 ompi/mca/mtl/mxm/mtl_mxm_types.h create mode 100644 ompi/mca/mtl/mxm/owner.txt create mode 100644 ompi/mca/mtl/ofi/Makefile.am create mode 100644 ompi/mca/mtl/ofi/configure.m4 create mode 100644 ompi/mca/mtl/ofi/help-mtl-ofi.txt create mode 100644 ompi/mca/mtl/ofi/mtl_ofi.c create mode 100644 ompi/mca/mtl/ofi/mtl_ofi.h create mode 100644 ompi/mca/mtl/ofi/mtl_ofi_compat.h create mode 100644 ompi/mca/mtl/ofi/mtl_ofi_component.c create mode 100644 ompi/mca/mtl/ofi/mtl_ofi_endpoint.c create mode 100644 ompi/mca/mtl/ofi/mtl_ofi_endpoint.h create mode 100644 ompi/mca/mtl/ofi/mtl_ofi_request.h create mode 100644 ompi/mca/mtl/ofi/mtl_ofi_types.h create mode 100644 ompi/mca/mtl/ofi/owner.txt create mode 100644 ompi/mca/mtl/ofi/post_configure.sh create mode 100644 ompi/mca/mtl/portals4/Makefile.am create mode 100644 ompi/mca/mtl/portals4/configure.m4 create mode 100644 ompi/mca/mtl/portals4/mtl_portals4.c create mode 100644 ompi/mca/mtl/portals4/mtl_portals4.h create mode 100644 ompi/mca/mtl/portals4/mtl_portals4_cancel.c create mode 100644 ompi/mca/mtl/portals4/mtl_portals4_component.c create mode 100644 ompi/mca/mtl/portals4/mtl_portals4_endpoint.h create mode 100644 ompi/mca/mtl/portals4/mtl_portals4_flowctl.c create mode 100644 ompi/mca/mtl/portals4/mtl_portals4_flowctl.h create mode 100644 ompi/mca/mtl/portals4/mtl_portals4_message.c create mode 100644 ompi/mca/mtl/portals4/mtl_portals4_message.h create mode 100644 ompi/mca/mtl/portals4/mtl_portals4_probe.c create mode 100644 ompi/mca/mtl/portals4/mtl_portals4_recv.c create mode 100644 ompi/mca/mtl/portals4/mtl_portals4_recv_short.c create mode 100644 ompi/mca/mtl/portals4/mtl_portals4_recv_short.h create mode 100644 ompi/mca/mtl/portals4/mtl_portals4_request.h create mode 100644 ompi/mca/mtl/portals4/mtl_portals4_send.c create mode 100644 ompi/mca/mtl/portals4/owner.txt create mode 100644 ompi/mca/mtl/portals4/post_configure.sh create mode 100644 ompi/mca/mtl/psm/Makefile.am create mode 100644 ompi/mca/mtl/psm/configure.m4 create mode 100644 ompi/mca/mtl/psm/help-mtl-psm.txt create mode 100644 ompi/mca/mtl/psm/mtl_psm.c create mode 100644 ompi/mca/mtl/psm/mtl_psm.h create mode 100644 ompi/mca/mtl/psm/mtl_psm_cancel.c create mode 100644 ompi/mca/mtl/psm/mtl_psm_component.c create mode 100644 ompi/mca/mtl/psm/mtl_psm_endpoint.c create mode 100644 ompi/mca/mtl/psm/mtl_psm_endpoint.h create mode 100644 ompi/mca/mtl/psm/mtl_psm_probe.c create mode 100644 ompi/mca/mtl/psm/mtl_psm_recv.c create mode 100644 ompi/mca/mtl/psm/mtl_psm_request.h create mode 100644 ompi/mca/mtl/psm/mtl_psm_send.c create mode 100644 ompi/mca/mtl/psm/mtl_psm_types.h create mode 100644 ompi/mca/mtl/psm/owner.txt create mode 100644 ompi/mca/mtl/psm/post_configure.sh create mode 100644 ompi/mca/mtl/psm2/Makefile.am create mode 100644 ompi/mca/mtl/psm2/configure.m4 create mode 100644 ompi/mca/mtl/psm2/help-mtl-psm2.txt create mode 100644 ompi/mca/mtl/psm2/mtl_psm2.c create mode 100644 ompi/mca/mtl/psm2/mtl_psm2.h create mode 100644 ompi/mca/mtl/psm2/mtl_psm2_cancel.c create mode 100644 ompi/mca/mtl/psm2/mtl_psm2_component.c create mode 100644 ompi/mca/mtl/psm2/mtl_psm2_endpoint.c create mode 100644 ompi/mca/mtl/psm2/mtl_psm2_endpoint.h create mode 100644 ompi/mca/mtl/psm2/mtl_psm2_probe.c create mode 100644 ompi/mca/mtl/psm2/mtl_psm2_recv.c create mode 100644 ompi/mca/mtl/psm2/mtl_psm2_request.h create mode 100644 ompi/mca/mtl/psm2/mtl_psm2_send.c create mode 100644 ompi/mca/mtl/psm2/mtl_psm2_types.h create mode 100644 ompi/mca/mtl/psm2/owner.txt create mode 100644 ompi/mca/mtl/psm2/post_configure.sh create mode 100644 ompi/mca/op/Makefile.am create mode 100644 ompi/mca/op/base/Makefile.include create mode 100644 ompi/mca/op/base/base.h create mode 100644 ompi/mca/op/base/functions.h create mode 100644 ompi/mca/op/base/op_base_find_available.c create mode 100644 ompi/mca/op/base/op_base_frame.c create mode 100644 ompi/mca/op/base/op_base_functions.c create mode 100644 ompi/mca/op/base/op_base_op_select.c create mode 100644 ompi/mca/op/base/owner.txt create mode 100644 ompi/mca/op/example/.opal_ignore create mode 100644 ompi/mca/op/example/Makefile.am create mode 100644 ompi/mca/op/example/README.txt create mode 100644 ompi/mca/op/example/configure.m4 create mode 100644 ompi/mca/op/example/op_example.h create mode 100644 ompi/mca/op/example/op_example_component.c create mode 100644 ompi/mca/op/example/op_example_module_bxor.c create mode 100644 ompi/mca/op/example/op_example_module_max.c create mode 100644 ompi/mca/op/example/owner.txt create mode 100644 ompi/mca/op/op.h create mode 100644 ompi/mca/osc/Makefile.am create mode 100644 ompi/mca/osc/base/Makefile.am create mode 100644 ompi/mca/osc/base/base.h create mode 100644 ompi/mca/osc/base/osc_base_frame.c create mode 100644 ompi/mca/osc/base/osc_base_init.c create mode 100644 ompi/mca/osc/base/osc_base_obj_convert.c create mode 100644 ompi/mca/osc/base/osc_base_obj_convert.h create mode 100644 ompi/mca/osc/base/owner.txt create mode 100644 ompi/mca/osc/osc.h create mode 100644 ompi/mca/osc/portals4/Makefile.am create mode 100644 ompi/mca/osc/portals4/configure.m4 create mode 100644 ompi/mca/osc/portals4/osc_portals4.h create mode 100644 ompi/mca/osc/portals4/osc_portals4_active_target.c create mode 100644 ompi/mca/osc/portals4/osc_portals4_comm.c create mode 100644 ompi/mca/osc/portals4/osc_portals4_component.c create mode 100644 ompi/mca/osc/portals4/osc_portals4_passive_target.c create mode 100644 ompi/mca/osc/portals4/osc_portals4_request.c create mode 100644 ompi/mca/osc/portals4/osc_portals4_request.h create mode 100644 ompi/mca/osc/portals4/owner.txt create mode 100644 ompi/mca/osc/pt2pt/Makefile.am create mode 100644 ompi/mca/osc/pt2pt/configure.m4 create mode 100644 ompi/mca/osc/pt2pt/osc_pt2pt.h create mode 100644 ompi/mca/osc/pt2pt/osc_pt2pt_active_target.c create mode 100644 ompi/mca/osc/pt2pt/osc_pt2pt_comm.c create mode 100644 ompi/mca/osc/pt2pt/osc_pt2pt_component.c create mode 100644 ompi/mca/osc/pt2pt/osc_pt2pt_data_move.c create mode 100644 ompi/mca/osc/pt2pt/osc_pt2pt_data_move.h create mode 100644 ompi/mca/osc/pt2pt/osc_pt2pt_frag.c create mode 100644 ompi/mca/osc/pt2pt/osc_pt2pt_frag.h create mode 100644 ompi/mca/osc/pt2pt/osc_pt2pt_header.h create mode 100644 ompi/mca/osc/pt2pt/osc_pt2pt_module.c create mode 100644 ompi/mca/osc/pt2pt/osc_pt2pt_passive_target.c create mode 100644 ompi/mca/osc/pt2pt/osc_pt2pt_pending_frag.h create mode 100644 ompi/mca/osc/pt2pt/osc_pt2pt_request.c create mode 100644 ompi/mca/osc/pt2pt/osc_pt2pt_request.h create mode 100644 ompi/mca/osc/pt2pt/osc_pt2pt_sync.c create mode 100644 ompi/mca/osc/pt2pt/osc_pt2pt_sync.h create mode 100644 ompi/mca/osc/pt2pt/owner.txt create mode 100644 ompi/mca/osc/rdma/Makefile.am create mode 100644 ompi/mca/osc/rdma/configure.m4 create mode 100644 ompi/mca/osc/rdma/osc_rdma.h create mode 100644 ompi/mca/osc/rdma/osc_rdma_accumulate.c create mode 100644 ompi/mca/osc/rdma/osc_rdma_accumulate.h create mode 100644 ompi/mca/osc/rdma/osc_rdma_active_target.c create mode 100644 ompi/mca/osc/rdma/osc_rdma_active_target.h create mode 100644 ompi/mca/osc/rdma/osc_rdma_comm.c create mode 100644 ompi/mca/osc/rdma/osc_rdma_comm.h create mode 100644 ompi/mca/osc/rdma/osc_rdma_component.c create mode 100644 ompi/mca/osc/rdma/osc_rdma_dynamic.c create mode 100644 ompi/mca/osc/rdma/osc_rdma_dynamic.h create mode 100644 ompi/mca/osc/rdma/osc_rdma_frag.c create mode 100644 ompi/mca/osc/rdma/osc_rdma_frag.h create mode 100644 ompi/mca/osc/rdma/osc_rdma_lock.h create mode 100644 ompi/mca/osc/rdma/osc_rdma_module.c create mode 100644 ompi/mca/osc/rdma/osc_rdma_passive_target.c create mode 100644 ompi/mca/osc/rdma/osc_rdma_passive_target.h create mode 100644 ompi/mca/osc/rdma/osc_rdma_peer.c create mode 100644 ompi/mca/osc/rdma/osc_rdma_peer.h create mode 100644 ompi/mca/osc/rdma/osc_rdma_request.c create mode 100644 ompi/mca/osc/rdma/osc_rdma_request.h create mode 100644 ompi/mca/osc/rdma/osc_rdma_sync.c create mode 100644 ompi/mca/osc/rdma/osc_rdma_sync.h create mode 100644 ompi/mca/osc/rdma/osc_rdma_types.h create mode 100644 ompi/mca/osc/rdma/owner.txt create mode 100644 ompi/mca/osc/sm/Makefile.am create mode 100644 ompi/mca/osc/sm/osc_sm.h create mode 100644 ompi/mca/osc/sm/osc_sm_active_target.c create mode 100644 ompi/mca/osc/sm/osc_sm_comm.c create mode 100644 ompi/mca/osc/sm/osc_sm_component.c create mode 100644 ompi/mca/osc/sm/osc_sm_passive_target.c create mode 100644 ompi/mca/osc/sm/owner.txt create mode 100644 ompi/mca/pml/Makefile.am create mode 100644 ompi/mca/pml/base/Makefile.am create mode 100644 ompi/mca/pml/base/base.h create mode 100644 ompi/mca/pml/base/owner.txt create mode 100644 ompi/mca/pml/base/pml_base_bsend.c create mode 100644 ompi/mca/pml/base/pml_base_bsend.h create mode 100644 ompi/mca/pml/base/pml_base_frame.c create mode 100644 ompi/mca/pml/base/pml_base_ft.c create mode 100644 ompi/mca/pml/base/pml_base_recvreq.c create mode 100644 ompi/mca/pml/base/pml_base_recvreq.h create mode 100644 ompi/mca/pml/base/pml_base_request.c create mode 100644 ompi/mca/pml/base/pml_base_request.h create mode 100644 ompi/mca/pml/base/pml_base_request_dbg.h create mode 100644 ompi/mca/pml/base/pml_base_select.c create mode 100644 ompi/mca/pml/base/pml_base_sendreq.c create mode 100644 ompi/mca/pml/base/pml_base_sendreq.h create mode 100644 ompi/mca/pml/bfo/.opal_ignore create mode 100644 ompi/mca/pml/bfo/Makefile.am create mode 100644 ompi/mca/pml/bfo/README create mode 100644 ompi/mca/pml/bfo/configure.m4 create mode 100644 ompi/mca/pml/bfo/help-mpi-pml-bfo.txt create mode 100644 ompi/mca/pml/bfo/owner.txt create mode 100644 ompi/mca/pml/bfo/pml_bfo.c create mode 100644 ompi/mca/pml/bfo/pml_bfo.h create mode 100644 ompi/mca/pml/bfo/pml_bfo_comm.c create mode 100644 ompi/mca/pml/bfo/pml_bfo_comm.h create mode 100644 ompi/mca/pml/bfo/pml_bfo_component.c create mode 100644 ompi/mca/pml/bfo/pml_bfo_component.h create mode 100644 ompi/mca/pml/bfo/pml_bfo_cuda.c create mode 100644 ompi/mca/pml/bfo/pml_bfo_failover.c create mode 100644 ompi/mca/pml/bfo/pml_bfo_failover.h create mode 100644 ompi/mca/pml/bfo/pml_bfo_hdr.h create mode 100644 ompi/mca/pml/bfo/pml_bfo_iprobe.c create mode 100644 ompi/mca/pml/bfo/pml_bfo_irecv.c create mode 100644 ompi/mca/pml/bfo/pml_bfo_isend.c create mode 100644 ompi/mca/pml/bfo/pml_bfo_progress.c create mode 100644 ompi/mca/pml/bfo/pml_bfo_rdma.c create mode 100644 ompi/mca/pml/bfo/pml_bfo_rdma.h create mode 100644 ompi/mca/pml/bfo/pml_bfo_rdmafrag.c create mode 100644 ompi/mca/pml/bfo/pml_bfo_rdmafrag.h create mode 100644 ompi/mca/pml/bfo/pml_bfo_recvfrag.c create mode 100644 ompi/mca/pml/bfo/pml_bfo_recvfrag.h create mode 100644 ompi/mca/pml/bfo/pml_bfo_recvreq.c create mode 100644 ompi/mca/pml/bfo/pml_bfo_recvreq.h create mode 100644 ompi/mca/pml/bfo/pml_bfo_sendreq.c create mode 100644 ompi/mca/pml/bfo/pml_bfo_sendreq.h create mode 100644 ompi/mca/pml/bfo/pml_bfo_start.c create mode 100644 ompi/mca/pml/bfo/post_configure.sh create mode 100644 ompi/mca/pml/cm/Makefile.am create mode 100644 ompi/mca/pml/cm/owner.txt create mode 100644 ompi/mca/pml/cm/pml_cm.c create mode 100644 ompi/mca/pml/cm/pml_cm.h create mode 100644 ompi/mca/pml/cm/pml_cm_cancel.c create mode 100644 ompi/mca/pml/cm/pml_cm_component.c create mode 100644 ompi/mca/pml/cm/pml_cm_component.h create mode 100644 ompi/mca/pml/cm/pml_cm_recvreq.c create mode 100644 ompi/mca/pml/cm/pml_cm_recvreq.h create mode 100644 ompi/mca/pml/cm/pml_cm_request.c create mode 100644 ompi/mca/pml/cm/pml_cm_request.h create mode 100644 ompi/mca/pml/cm/pml_cm_sendreq.c create mode 100644 ompi/mca/pml/cm/pml_cm_sendreq.h create mode 100644 ompi/mca/pml/cm/pml_cm_start.c create mode 100644 ompi/mca/pml/cm/post_configure.sh create mode 100644 ompi/mca/pml/configure.m4 create mode 100644 ompi/mca/pml/crcpw/Makefile.am create mode 100644 ompi/mca/pml/crcpw/configure.m4 create mode 100644 ompi/mca/pml/crcpw/owner.txt create mode 100644 ompi/mca/pml/crcpw/pml_crcpw.h create mode 100644 ompi/mca/pml/crcpw/pml_crcpw_component.c create mode 100644 ompi/mca/pml/crcpw/pml_crcpw_module.c create mode 100644 ompi/mca/pml/example/.opal_ignore create mode 100644 ompi/mca/pml/example/Makefile.am create mode 100644 ompi/mca/pml/example/pml_example.c create mode 100644 ompi/mca/pml/example/pml_example.h create mode 100644 ompi/mca/pml/example/pml_example_cancel.c create mode 100644 ompi/mca/pml/example/pml_example_component.c create mode 100644 ompi/mca/pml/example/pml_example_iprobe.c create mode 100644 ompi/mca/pml/example/pml_example_irecv.c create mode 100644 ompi/mca/pml/example/pml_example_isend.c create mode 100644 ompi/mca/pml/example/pml_example_proc.c create mode 100644 ompi/mca/pml/example/pml_example_proc.h create mode 100644 ompi/mca/pml/example/pml_example_progress.c create mode 100644 ompi/mca/pml/example/pml_example_ptl.c create mode 100644 ompi/mca/pml/example/pml_example_ptl.h create mode 100644 ompi/mca/pml/example/pml_example_recvfrag.c create mode 100644 ompi/mca/pml/example/pml_example_recvfrag.h create mode 100644 ompi/mca/pml/example/pml_example_recvreq.c create mode 100644 ompi/mca/pml/example/pml_example_recvreq.h create mode 100644 ompi/mca/pml/example/pml_example_sendreq.c create mode 100644 ompi/mca/pml/example/pml_example_sendreq.h create mode 100644 ompi/mca/pml/example/pml_example_start.c create mode 100644 ompi/mca/pml/monitoring/Makefile.am create mode 100644 ompi/mca/pml/monitoring/README create mode 100644 ompi/mca/pml/monitoring/pml_monitoring.c create mode 100644 ompi/mca/pml/monitoring/pml_monitoring.h create mode 100644 ompi/mca/pml/monitoring/pml_monitoring_comm.c create mode 100644 ompi/mca/pml/monitoring/pml_monitoring_component.c create mode 100644 ompi/mca/pml/monitoring/pml_monitoring_iprobe.c create mode 100644 ompi/mca/pml/monitoring/pml_monitoring_irecv.c create mode 100644 ompi/mca/pml/monitoring/pml_monitoring_isend.c create mode 100644 ompi/mca/pml/monitoring/pml_monitoring_start.c create mode 100644 ompi/mca/pml/ob1/Makefile.am create mode 100644 ompi/mca/pml/ob1/configure.m4 create mode 100644 ompi/mca/pml/ob1/help-mpi-pml-ob1.txt create mode 100644 ompi/mca/pml/ob1/owner.txt create mode 100644 ompi/mca/pml/ob1/pml_ob1.c create mode 100644 ompi/mca/pml/ob1/pml_ob1.h create mode 100644 ompi/mca/pml/ob1/pml_ob1_comm.c create mode 100644 ompi/mca/pml/ob1/pml_ob1_comm.h create mode 100644 ompi/mca/pml/ob1/pml_ob1_component.c create mode 100644 ompi/mca/pml/ob1/pml_ob1_component.h create mode 100644 ompi/mca/pml/ob1/pml_ob1_cuda.c create mode 100644 ompi/mca/pml/ob1/pml_ob1_hdr.h create mode 100644 ompi/mca/pml/ob1/pml_ob1_iprobe.c create mode 100644 ompi/mca/pml/ob1/pml_ob1_irecv.c create mode 100644 ompi/mca/pml/ob1/pml_ob1_isend.c create mode 100644 ompi/mca/pml/ob1/pml_ob1_progress.c create mode 100644 ompi/mca/pml/ob1/pml_ob1_rdma.c create mode 100644 ompi/mca/pml/ob1/pml_ob1_rdma.h create mode 100644 ompi/mca/pml/ob1/pml_ob1_rdmafrag.c create mode 100644 ompi/mca/pml/ob1/pml_ob1_rdmafrag.h create mode 100644 ompi/mca/pml/ob1/pml_ob1_recvfrag.c create mode 100644 ompi/mca/pml/ob1/pml_ob1_recvfrag.h create mode 100644 ompi/mca/pml/ob1/pml_ob1_recvreq.c create mode 100644 ompi/mca/pml/ob1/pml_ob1_recvreq.h create mode 100644 ompi/mca/pml/ob1/pml_ob1_sendreq.c create mode 100644 ompi/mca/pml/ob1/pml_ob1_sendreq.h create mode 100644 ompi/mca/pml/ob1/pml_ob1_start.c create mode 100644 ompi/mca/pml/ob1/post_configure.sh create mode 100644 ompi/mca/pml/pml.h create mode 100644 ompi/mca/pml/pml_constants.h create mode 100644 ompi/mca/pml/ucx/Makefile.am create mode 100644 ompi/mca/pml/ucx/configure.m4 create mode 100644 ompi/mca/pml/ucx/pml_ucx.c create mode 100644 ompi/mca/pml/ucx/pml_ucx.h create mode 100644 ompi/mca/pml/ucx/pml_ucx_component.c create mode 100644 ompi/mca/pml/ucx/pml_ucx_datatype.c create mode 100644 ompi/mca/pml/ucx/pml_ucx_datatype.h create mode 100644 ompi/mca/pml/ucx/pml_ucx_freelist.h create mode 100644 ompi/mca/pml/ucx/pml_ucx_request.c create mode 100644 ompi/mca/pml/ucx/pml_ucx_request.h create mode 100644 ompi/mca/pml/v/Makefile.am create mode 100644 ompi/mca/pml/v/configure.m4 create mode 100644 ompi/mca/pml/v/owner.txt create mode 100644 ompi/mca/pml/v/pml_v.h create mode 100644 ompi/mca/pml/v/pml_v_component.c create mode 100644 ompi/mca/pml/v/pml_v_output.c create mode 100644 ompi/mca/pml/v/pml_v_output.h create mode 100644 ompi/mca/pml/yalla/Makefile.am create mode 100644 ompi/mca/pml/yalla/configure.m4 create mode 100644 ompi/mca/pml/yalla/owner.txt create mode 100644 ompi/mca/pml/yalla/pml_yalla.c create mode 100644 ompi/mca/pml/yalla/pml_yalla.h create mode 100644 ompi/mca/pml/yalla/pml_yalla_component.c create mode 100644 ompi/mca/pml/yalla/pml_yalla_datatype.c create mode 100644 ompi/mca/pml/yalla/pml_yalla_datatype.h create mode 100644 ompi/mca/pml/yalla/pml_yalla_freelist.h create mode 100644 ompi/mca/pml/yalla/pml_yalla_request.c create mode 100644 ompi/mca/pml/yalla/pml_yalla_request.h create mode 100644 ompi/mca/rte/Makefile.am create mode 100644 ompi/mca/rte/base/Makefile.am create mode 100644 ompi/mca/rte/base/base.h create mode 100644 ompi/mca/rte/base/rte_base_frame.c create mode 100644 ompi/mca/rte/configure.m4 create mode 100644 ompi/mca/rte/orte/Makefile.am create mode 100644 ompi/mca/rte/orte/configure.m4 create mode 100644 ompi/mca/rte/orte/rte_orte.h create mode 100644 ompi/mca/rte/orte/rte_orte_component.c create mode 100644 ompi/mca/rte/orte/rte_orte_module.c create mode 100644 ompi/mca/rte/rte.h create mode 100644 ompi/mca/sharedfp/Makefile.am create mode 100644 ompi/mca/sharedfp/base/Makefile.am create mode 100644 ompi/mca/sharedfp/base/base.h create mode 100644 ompi/mca/sharedfp/base/owner.txt create mode 100644 ompi/mca/sharedfp/base/sharedfp_base_file_select.c create mode 100644 ompi/mca/sharedfp/base/sharedfp_base_file_unselect.c create mode 100644 ompi/mca/sharedfp/base/sharedfp_base_find_available.c create mode 100644 ompi/mca/sharedfp/base/sharedfp_base_frame.c create mode 100644 ompi/mca/sharedfp/configure.m4 create mode 100644 ompi/mca/sharedfp/individual/Makefile.am create mode 100644 ompi/mca/sharedfp/individual/owner.txt create mode 100644 ompi/mca/sharedfp/individual/sharedfp_individual.c create mode 100644 ompi/mca/sharedfp/individual/sharedfp_individual.h create mode 100644 ompi/mca/sharedfp/individual/sharedfp_individual_collaborate_data.c create mode 100644 ompi/mca/sharedfp/individual/sharedfp_individual_component.c create mode 100644 ompi/mca/sharedfp/individual/sharedfp_individual_file_open.c create mode 100644 ompi/mca/sharedfp/individual/sharedfp_individual_get_position.c create mode 100644 ompi/mca/sharedfp/individual/sharedfp_individual_gettime.c create mode 100644 ompi/mca/sharedfp/individual/sharedfp_individual_insert_metadata.c create mode 100644 ompi/mca/sharedfp/individual/sharedfp_individual_iwrite.c create mode 100644 ompi/mca/sharedfp/individual/sharedfp_individual_read.c create mode 100644 ompi/mca/sharedfp/individual/sharedfp_individual_seek.c create mode 100644 ompi/mca/sharedfp/individual/sharedfp_individual_write.c create mode 100644 ompi/mca/sharedfp/lockedfile/Makefile.am create mode 100644 ompi/mca/sharedfp/lockedfile/owner.txt create mode 100644 ompi/mca/sharedfp/lockedfile/sharedfp_lockedfile.c create mode 100644 ompi/mca/sharedfp/lockedfile/sharedfp_lockedfile.h create mode 100644 ompi/mca/sharedfp/lockedfile/sharedfp_lockedfile_component.c create mode 100644 ompi/mca/sharedfp/lockedfile/sharedfp_lockedfile_file_open.c create mode 100644 ompi/mca/sharedfp/lockedfile/sharedfp_lockedfile_get_position.c create mode 100644 ompi/mca/sharedfp/lockedfile/sharedfp_lockedfile_iread.c create mode 100644 ompi/mca/sharedfp/lockedfile/sharedfp_lockedfile_iwrite.c create mode 100644 ompi/mca/sharedfp/lockedfile/sharedfp_lockedfile_read.c create mode 100644 ompi/mca/sharedfp/lockedfile/sharedfp_lockedfile_request_position.c create mode 100644 ompi/mca/sharedfp/lockedfile/sharedfp_lockedfile_seek.c create mode 100644 ompi/mca/sharedfp/lockedfile/sharedfp_lockedfile_write.c create mode 100644 ompi/mca/sharedfp/sharedfp.h create mode 100644 ompi/mca/sharedfp/sm/Makefile.am create mode 100644 ompi/mca/sharedfp/sm/configure.m4 create mode 100644 ompi/mca/sharedfp/sm/owner.txt create mode 100644 ompi/mca/sharedfp/sm/sharedfp_sm.c create mode 100644 ompi/mca/sharedfp/sm/sharedfp_sm.h create mode 100644 ompi/mca/sharedfp/sm/sharedfp_sm_component.c create mode 100644 ompi/mca/sharedfp/sm/sharedfp_sm_file_open.c create mode 100644 ompi/mca/sharedfp/sm/sharedfp_sm_get_position.c create mode 100644 ompi/mca/sharedfp/sm/sharedfp_sm_iread.c create mode 100644 ompi/mca/sharedfp/sm/sharedfp_sm_iwrite.c create mode 100644 ompi/mca/sharedfp/sm/sharedfp_sm_read.c create mode 100644 ompi/mca/sharedfp/sm/sharedfp_sm_request_position.c create mode 100644 ompi/mca/sharedfp/sm/sharedfp_sm_seek.c create mode 100644 ompi/mca/sharedfp/sm/sharedfp_sm_write.c create mode 100644 ompi/mca/topo/Makefile.am create mode 100644 ompi/mca/topo/base/Makefile.am create mode 100644 ompi/mca/topo/base/base.h create mode 100644 ompi/mca/topo/base/owner.txt create mode 100644 ompi/mca/topo/base/topo_base_cart_coords.c create mode 100644 ompi/mca/topo/base/topo_base_cart_create.c create mode 100644 ompi/mca/topo/base/topo_base_cart_get.c create mode 100644 ompi/mca/topo/base/topo_base_cart_map.c create mode 100644 ompi/mca/topo/base/topo_base_cart_rank.c create mode 100644 ompi/mca/topo/base/topo_base_cart_shift.c create mode 100644 ompi/mca/topo/base/topo_base_cart_sub.c create mode 100644 ompi/mca/topo/base/topo_base_cartdim_get.c create mode 100644 ompi/mca/topo/base/topo_base_comm_select.c create mode 100644 ompi/mca/topo/base/topo_base_dist_graph_create.c create mode 100644 ompi/mca/topo/base/topo_base_dist_graph_create_adjacent.c create mode 100644 ompi/mca/topo/base/topo_base_dist_graph_neighbors.c create mode 100644 ompi/mca/topo/base/topo_base_dist_graph_neighbors_count.c create mode 100644 ompi/mca/topo/base/topo_base_find_available.c create mode 100644 ompi/mca/topo/base/topo_base_frame.c create mode 100644 ompi/mca/topo/base/topo_base_graph_create.c create mode 100644 ompi/mca/topo/base/topo_base_graph_get.c create mode 100644 ompi/mca/topo/base/topo_base_graph_map.c create mode 100644 ompi/mca/topo/base/topo_base_graph_neighbors.c create mode 100644 ompi/mca/topo/base/topo_base_graph_neighbors_count.c create mode 100644 ompi/mca/topo/base/topo_base_graphdims_get.c create mode 100644 ompi/mca/topo/base/topo_base_lazy_init.c create mode 100644 ompi/mca/topo/basic/Makefile.am create mode 100644 ompi/mca/topo/basic/owner.txt create mode 100644 ompi/mca/topo/basic/topo_basic.h create mode 100644 ompi/mca/topo/basic/topo_basic_component.c create mode 100644 ompi/mca/topo/example/.opal_ignore create mode 100644 ompi/mca/topo/example/Makefile.am create mode 100644 ompi/mca/topo/example/owner.txt create mode 100644 ompi/mca/topo/example/topo_example.h create mode 100644 ompi/mca/topo/example/topo_example_cart_map.c create mode 100644 ompi/mca/topo/example/topo_example_component.c create mode 100644 ompi/mca/topo/example/topo_example_graph_map.c create mode 100644 ompi/mca/topo/example/topo_example_module.c create mode 100644 ompi/mca/topo/topo.h create mode 100644 ompi/mca/topo/treematch/Makefile.am create mode 100644 ompi/mca/topo/treematch/configure.m4 create mode 100644 ompi/mca/topo/treematch/topo_treematch.h create mode 100644 ompi/mca/topo/treematch/topo_treematch_component.c create mode 100644 ompi/mca/topo/treematch/topo_treematch_dist_graph_create.c create mode 100644 ompi/mca/topo/treematch/topo_treematch_module.c create mode 100644 ompi/mca/topo/treematch/treematch/COPYING create mode 100644 ompi/mca/topo/treematch/treematch/IntConstantInitializedVector.c create mode 100644 ompi/mca/topo/treematch/treematch/IntConstantInitializedVector.h create mode 100644 ompi/mca/topo/treematch/treematch/LICENSE create mode 100644 ompi/mca/topo/treematch/treematch/tgt_map.c create mode 100644 ompi/mca/topo/treematch/treematch/tgt_to_mat.c create mode 100644 ompi/mca/topo/treematch/treematch/tm_bucket.c create mode 100644 ompi/mca/topo/treematch/treematch/tm_bucket.h create mode 100644 ompi/mca/topo/treematch/treematch/tm_hwloc.c create mode 100644 ompi/mca/topo/treematch/treematch/tm_hwloc.h create mode 100644 ompi/mca/topo/treematch/treematch/tm_kpartitioning.c create mode 100644 ompi/mca/topo/treematch/treematch/tm_kpartitioning.h create mode 100644 ompi/mca/topo/treematch/treematch/tm_malloc.c create mode 100644 ompi/mca/topo/treematch/treematch/tm_malloc.h create mode 100644 ompi/mca/topo/treematch/treematch/tm_mapping.c create mode 100644 ompi/mca/topo/treematch/treematch/tm_mapping.h create mode 100644 ompi/mca/topo/treematch/treematch/tm_mt.c create mode 100644 ompi/mca/topo/treematch/treematch/tm_mt.h create mode 100644 ompi/mca/topo/treematch/treematch/tm_thread_pool.c create mode 100644 ompi/mca/topo/treematch/treematch/tm_thread_pool.h create mode 100644 ompi/mca/topo/treematch/treematch/tm_timings.c create mode 100644 ompi/mca/topo/treematch/treematch/tm_timings.h create mode 100644 ompi/mca/topo/treematch/treematch/tm_tree.c create mode 100644 ompi/mca/topo/treematch/treematch/tm_tree.h create mode 100644 ompi/mca/topo/treematch/treematch/tm_verbose.c create mode 100644 ompi/mca/topo/treematch/treematch/tm_verbose.h create mode 100644 ompi/mca/topo/treematch/treematch/uthash.h create mode 100644 ompi/mca/vprotocol/Makefile.am create mode 100644 ompi/mca/vprotocol/base/Makefile.am create mode 100644 ompi/mca/vprotocol/base/base.h create mode 100644 ompi/mca/vprotocol/base/owner.txt create mode 100644 ompi/mca/vprotocol/base/vprotocol_base.c create mode 100644 ompi/mca/vprotocol/base/vprotocol_base_parasite.c create mode 100644 ompi/mca/vprotocol/base/vprotocol_base_request.c create mode 100644 ompi/mca/vprotocol/base/vprotocol_base_request.h create mode 100644 ompi/mca/vprotocol/base/vprotocol_base_select.c create mode 100644 ompi/mca/vprotocol/example/.opal_ignore create mode 100644 ompi/mca/vprotocol/example/Makefile.am create mode 100644 ompi/mca/vprotocol/example/owner.txt create mode 100644 ompi/mca/vprotocol/example/vprotocol_example.c create mode 100644 ompi/mca/vprotocol/example/vprotocol_example.h create mode 100644 ompi/mca/vprotocol/example/vprotocol_example_comm.c create mode 100644 ompi/mca/vprotocol/example/vprotocol_example_component.c create mode 100644 ompi/mca/vprotocol/example/vprotocol_example_probe.c create mode 100644 ompi/mca/vprotocol/example/vprotocol_example_proc.c create mode 100644 ompi/mca/vprotocol/example/vprotocol_example_progress.c create mode 100644 ompi/mca/vprotocol/example/vprotocol_example_recv.c create mode 100644 ompi/mca/vprotocol/example/vprotocol_example_send.c create mode 100644 ompi/mca/vprotocol/example/vprotocol_example_start.c create mode 100644 ompi/mca/vprotocol/example/vprotocol_example_start.h create mode 100644 ompi/mca/vprotocol/example/vprotocol_example_wait.c create mode 100644 ompi/mca/vprotocol/example/vprotocol_example_wait.h create mode 100644 ompi/mca/vprotocol/pessimist/Makefile.am create mode 100644 ompi/mca/vprotocol/pessimist/owner.txt create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist.c create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist.h create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_comm.c create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_component.c create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_event.c create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_event.h create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_eventlog.c create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_eventlog.h create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_eventlog_protocol.h create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_probe.c create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_proc.c create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_progress.c create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_recv.c create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_request.c create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_request.h create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_send.c create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_sender_based.c create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_sender_based.h create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_sender_based_types.h create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_start.c create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_start.h create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_wait.c create mode 100644 ompi/mca/vprotocol/pessimist/vprotocol_pessimist_wait.h create mode 100644 ompi/mca/vprotocol/vprotocol.h create mode 100644 ompi/message/Makefile.am create mode 100644 ompi/message/message.c create mode 100644 ompi/message/message.h create mode 100644 ompi/mpi/Makefile.am create mode 100644 ompi/mpi/c/Makefile.am create mode 100644 ompi/mpi/c/abort.c create mode 100644 ompi/mpi/c/accumulate.c create mode 100644 ompi/mpi/c/add_error_class.c create mode 100644 ompi/mpi/c/add_error_code.c create mode 100644 ompi/mpi/c/add_error_string.c create mode 100644 ompi/mpi/c/address.c create mode 100644 ompi/mpi/c/allgather.c create mode 100644 ompi/mpi/c/allgatherv.c create mode 100644 ompi/mpi/c/alloc_mem.c create mode 100644 ompi/mpi/c/allreduce.c create mode 100644 ompi/mpi/c/alltoall.c create mode 100644 ompi/mpi/c/alltoallv.c create mode 100644 ompi/mpi/c/alltoallw.c create mode 100644 ompi/mpi/c/attr_delete.c create mode 100644 ompi/mpi/c/attr_fn.c create mode 100644 ompi/mpi/c/attr_get.c create mode 100644 ompi/mpi/c/attr_put.c create mode 100644 ompi/mpi/c/barrier.c create mode 100644 ompi/mpi/c/bcast.c create mode 100644 ompi/mpi/c/bindings.h create mode 100644 ompi/mpi/c/bsend.c create mode 100644 ompi/mpi/c/bsend_init.c create mode 100644 ompi/mpi/c/buffer_attach.c create mode 100644 ompi/mpi/c/buffer_detach.c create mode 100644 ompi/mpi/c/cancel.c create mode 100644 ompi/mpi/c/cart_coords.c create mode 100644 ompi/mpi/c/cart_create.c create mode 100644 ompi/mpi/c/cart_get.c create mode 100644 ompi/mpi/c/cart_map.c create mode 100644 ompi/mpi/c/cart_rank.c create mode 100644 ompi/mpi/c/cart_shift.c create mode 100644 ompi/mpi/c/cart_sub.c create mode 100644 ompi/mpi/c/cartdim_get.c create mode 100644 ompi/mpi/c/close_port.c create mode 100644 ompi/mpi/c/comm_accept.c create mode 100644 ompi/mpi/c/comm_c2f.c create mode 100644 ompi/mpi/c/comm_call_errhandler.c create mode 100644 ompi/mpi/c/comm_compare.c create mode 100644 ompi/mpi/c/comm_connect.c create mode 100644 ompi/mpi/c/comm_create.c create mode 100644 ompi/mpi/c/comm_create_errhandler.c create mode 100644 ompi/mpi/c/comm_create_group.c create mode 100644 ompi/mpi/c/comm_create_keyval.c create mode 100644 ompi/mpi/c/comm_delete_attr.c create mode 100644 ompi/mpi/c/comm_disconnect.c create mode 100644 ompi/mpi/c/comm_dup.c create mode 100644 ompi/mpi/c/comm_dup_with_info.c create mode 100644 ompi/mpi/c/comm_f2c.c create mode 100644 ompi/mpi/c/comm_free.c create mode 100644 ompi/mpi/c/comm_free_keyval.c create mode 100644 ompi/mpi/c/comm_get_attr.c create mode 100644 ompi/mpi/c/comm_get_errhandler.c create mode 100644 ompi/mpi/c/comm_get_info.c create mode 100644 ompi/mpi/c/comm_get_name.c create mode 100644 ompi/mpi/c/comm_get_parent.c create mode 100644 ompi/mpi/c/comm_group.c create mode 100644 ompi/mpi/c/comm_idup.c create mode 100644 ompi/mpi/c/comm_join.c create mode 100644 ompi/mpi/c/comm_rank.c create mode 100644 ompi/mpi/c/comm_remote_group.c create mode 100644 ompi/mpi/c/comm_remote_size.c create mode 100644 ompi/mpi/c/comm_set_attr.c create mode 100644 ompi/mpi/c/comm_set_errhandler.c create mode 100644 ompi/mpi/c/comm_set_info.c create mode 100644 ompi/mpi/c/comm_set_name.c create mode 100644 ompi/mpi/c/comm_size.c create mode 100644 ompi/mpi/c/comm_spawn.c create mode 100644 ompi/mpi/c/comm_spawn_multiple.c create mode 100644 ompi/mpi/c/comm_split.c create mode 100644 ompi/mpi/c/comm_split_type.c create mode 100644 ompi/mpi/c/comm_test_inter.c create mode 100644 ompi/mpi/c/compare_and_swap.c create mode 100644 ompi/mpi/c/dims_create.c create mode 100644 ompi/mpi/c/dist_graph_create.c create mode 100644 ompi/mpi/c/dist_graph_create_adjacent.c create mode 100644 ompi/mpi/c/dist_graph_neighbors.c create mode 100644 ompi/mpi/c/dist_graph_neighbors_count.c create mode 100644 ompi/mpi/c/errhandler_c2f.c create mode 100644 ompi/mpi/c/errhandler_create.c create mode 100644 ompi/mpi/c/errhandler_f2c.c create mode 100644 ompi/mpi/c/errhandler_free.c create mode 100644 ompi/mpi/c/errhandler_get.c create mode 100644 ompi/mpi/c/errhandler_set.c create mode 100644 ompi/mpi/c/error_class.c create mode 100644 ompi/mpi/c/error_string.c create mode 100644 ompi/mpi/c/exscan.c create mode 100644 ompi/mpi/c/fetch_and_op.c create mode 100644 ompi/mpi/c/file_c2f.c create mode 100644 ompi/mpi/c/file_call_errhandler.c create mode 100644 ompi/mpi/c/file_close.c create mode 100644 ompi/mpi/c/file_create_errhandler.c create mode 100644 ompi/mpi/c/file_delete.c create mode 100644 ompi/mpi/c/file_f2c.c create mode 100644 ompi/mpi/c/file_get_amode.c create mode 100644 ompi/mpi/c/file_get_atomicity.c create mode 100644 ompi/mpi/c/file_get_byte_offset.c create mode 100644 ompi/mpi/c/file_get_errhandler.c create mode 100644 ompi/mpi/c/file_get_group.c create mode 100644 ompi/mpi/c/file_get_info.c create mode 100644 ompi/mpi/c/file_get_position.c create mode 100644 ompi/mpi/c/file_get_position_shared.c create mode 100644 ompi/mpi/c/file_get_size.c create mode 100644 ompi/mpi/c/file_get_type_extent.c create mode 100644 ompi/mpi/c/file_get_view.c create mode 100644 ompi/mpi/c/file_iread.c create mode 100644 ompi/mpi/c/file_iread_all.c create mode 100644 ompi/mpi/c/file_iread_at.c create mode 100644 ompi/mpi/c/file_iread_at_all.c create mode 100644 ompi/mpi/c/file_iread_shared.c create mode 100644 ompi/mpi/c/file_iwrite.c create mode 100644 ompi/mpi/c/file_iwrite_all.c create mode 100644 ompi/mpi/c/file_iwrite_at.c create mode 100644 ompi/mpi/c/file_iwrite_at_all.c create mode 100644 ompi/mpi/c/file_iwrite_shared.c create mode 100644 ompi/mpi/c/file_open.c create mode 100644 ompi/mpi/c/file_preallocate.c create mode 100644 ompi/mpi/c/file_read.c create mode 100644 ompi/mpi/c/file_read_all.c create mode 100644 ompi/mpi/c/file_read_all_begin.c create mode 100644 ompi/mpi/c/file_read_all_end.c create mode 100644 ompi/mpi/c/file_read_at.c create mode 100644 ompi/mpi/c/file_read_at_all.c create mode 100644 ompi/mpi/c/file_read_at_all_begin.c create mode 100644 ompi/mpi/c/file_read_at_all_end.c create mode 100644 ompi/mpi/c/file_read_ordered.c create mode 100644 ompi/mpi/c/file_read_ordered_begin.c create mode 100644 ompi/mpi/c/file_read_ordered_end.c create mode 100644 ompi/mpi/c/file_read_shared.c create mode 100644 ompi/mpi/c/file_seek.c create mode 100644 ompi/mpi/c/file_seek_shared.c create mode 100644 ompi/mpi/c/file_set_atomicity.c create mode 100644 ompi/mpi/c/file_set_errhandler.c create mode 100644 ompi/mpi/c/file_set_info.c create mode 100644 ompi/mpi/c/file_set_size.c create mode 100644 ompi/mpi/c/file_set_view.c create mode 100644 ompi/mpi/c/file_sync.c create mode 100644 ompi/mpi/c/file_write.c create mode 100644 ompi/mpi/c/file_write_all.c create mode 100644 ompi/mpi/c/file_write_all_begin.c create mode 100644 ompi/mpi/c/file_write_all_end.c create mode 100644 ompi/mpi/c/file_write_at.c create mode 100644 ompi/mpi/c/file_write_at_all.c create mode 100644 ompi/mpi/c/file_write_at_all_begin.c create mode 100644 ompi/mpi/c/file_write_at_all_end.c create mode 100644 ompi/mpi/c/file_write_ordered.c create mode 100644 ompi/mpi/c/file_write_ordered_begin.c create mode 100644 ompi/mpi/c/file_write_ordered_end.c create mode 100644 ompi/mpi/c/file_write_shared.c create mode 100644 ompi/mpi/c/finalize.c create mode 100644 ompi/mpi/c/finalized.c create mode 100644 ompi/mpi/c/free_mem.c create mode 100644 ompi/mpi/c/gather.c create mode 100644 ompi/mpi/c/gatherv.c create mode 100644 ompi/mpi/c/get.c create mode 100644 ompi/mpi/c/get_accumulate.c create mode 100644 ompi/mpi/c/get_address.c create mode 100644 ompi/mpi/c/get_count.c create mode 100644 ompi/mpi/c/get_elements.c create mode 100644 ompi/mpi/c/get_elements_x.c create mode 100644 ompi/mpi/c/get_library_version.c create mode 100644 ompi/mpi/c/get_processor_name.c create mode 100644 ompi/mpi/c/get_version.c create mode 100644 ompi/mpi/c/graph_create.c create mode 100644 ompi/mpi/c/graph_get.c create mode 100644 ompi/mpi/c/graph_map.c create mode 100644 ompi/mpi/c/graph_neighbors.c create mode 100644 ompi/mpi/c/graph_neighbors_count.c create mode 100644 ompi/mpi/c/graphdims_get.c create mode 100644 ompi/mpi/c/grequest_complete.c create mode 100644 ompi/mpi/c/grequest_start.c create mode 100644 ompi/mpi/c/group_c2f.c create mode 100644 ompi/mpi/c/group_compare.c create mode 100644 ompi/mpi/c/group_difference.c create mode 100644 ompi/mpi/c/group_excl.c create mode 100644 ompi/mpi/c/group_f2c.c create mode 100644 ompi/mpi/c/group_free.c create mode 100644 ompi/mpi/c/group_incl.c create mode 100644 ompi/mpi/c/group_intersection.c create mode 100644 ompi/mpi/c/group_range_excl.c create mode 100644 ompi/mpi/c/group_range_incl.c create mode 100644 ompi/mpi/c/group_rank.c create mode 100644 ompi/mpi/c/group_size.c create mode 100644 ompi/mpi/c/group_translate_ranks.c create mode 100644 ompi/mpi/c/group_union.c create mode 100644 ompi/mpi/c/iallgather.c create mode 100644 ompi/mpi/c/iallgatherv.c create mode 100644 ompi/mpi/c/iallreduce.c create mode 100644 ompi/mpi/c/ialltoall.c create mode 100644 ompi/mpi/c/ialltoallv.c create mode 100644 ompi/mpi/c/ialltoallw.c create mode 100644 ompi/mpi/c/ibarrier.c create mode 100644 ompi/mpi/c/ibcast.c create mode 100644 ompi/mpi/c/ibsend.c create mode 100644 ompi/mpi/c/iexscan.c create mode 100644 ompi/mpi/c/igather.c create mode 100644 ompi/mpi/c/igatherv.c create mode 100644 ompi/mpi/c/improbe.c create mode 100644 ompi/mpi/c/imrecv.c create mode 100644 ompi/mpi/c/ineighbor_allgather.c create mode 100644 ompi/mpi/c/ineighbor_allgatherv.c create mode 100644 ompi/mpi/c/ineighbor_alltoall.c create mode 100644 ompi/mpi/c/ineighbor_alltoallv.c create mode 100644 ompi/mpi/c/ineighbor_alltoallw.c create mode 100644 ompi/mpi/c/info_c2f.c create mode 100644 ompi/mpi/c/info_create.c create mode 100644 ompi/mpi/c/info_delete.c create mode 100644 ompi/mpi/c/info_dup.c create mode 100644 ompi/mpi/c/info_f2c.c create mode 100644 ompi/mpi/c/info_free.c create mode 100644 ompi/mpi/c/info_get.c create mode 100644 ompi/mpi/c/info_get_nkeys.c create mode 100644 ompi/mpi/c/info_get_nthkey.c create mode 100644 ompi/mpi/c/info_get_valuelen.c create mode 100644 ompi/mpi/c/info_set.c create mode 100644 ompi/mpi/c/init.c create mode 100644 ompi/mpi/c/init_thread.c create mode 100644 ompi/mpi/c/initialized.c create mode 100644 ompi/mpi/c/intercomm_create.c create mode 100644 ompi/mpi/c/intercomm_merge.c create mode 100644 ompi/mpi/c/iprobe.c create mode 100644 ompi/mpi/c/irecv.c create mode 100644 ompi/mpi/c/ireduce.c create mode 100644 ompi/mpi/c/ireduce_scatter.c create mode 100644 ompi/mpi/c/ireduce_scatter_block.c create mode 100644 ompi/mpi/c/irsend.c create mode 100644 ompi/mpi/c/is_thread_main.c create mode 100644 ompi/mpi/c/iscan.c create mode 100644 ompi/mpi/c/iscatter.c create mode 100644 ompi/mpi/c/iscatterv.c create mode 100644 ompi/mpi/c/isend.c create mode 100644 ompi/mpi/c/issend.c create mode 100644 ompi/mpi/c/keyval_create.c create mode 100644 ompi/mpi/c/keyval_free.c create mode 100644 ompi/mpi/c/lookup_name.c create mode 100644 ompi/mpi/c/message_c2f.c create mode 100644 ompi/mpi/c/message_f2c.c create mode 100644 ompi/mpi/c/mprobe.c create mode 100644 ompi/mpi/c/mrecv.c create mode 100644 ompi/mpi/c/neighbor_allgather.c create mode 100644 ompi/mpi/c/neighbor_allgatherv.c create mode 100644 ompi/mpi/c/neighbor_alltoall.c create mode 100644 ompi/mpi/c/neighbor_alltoallv.c create mode 100644 ompi/mpi/c/neighbor_alltoallw.c create mode 100644 ompi/mpi/c/op_c2f.c create mode 100644 ompi/mpi/c/op_commutative.c create mode 100644 ompi/mpi/c/op_create.c create mode 100644 ompi/mpi/c/op_f2c.c create mode 100644 ompi/mpi/c/op_free.c create mode 100644 ompi/mpi/c/open_port.c create mode 100644 ompi/mpi/c/pack.c create mode 100644 ompi/mpi/c/pack_external.c create mode 100644 ompi/mpi/c/pack_external_size.c create mode 100644 ompi/mpi/c/pack_size.c create mode 100644 ompi/mpi/c/pcontrol.c create mode 100644 ompi/mpi/c/probe.c create mode 100644 ompi/mpi/c/profile/Makefile.am create mode 100644 ompi/mpi/c/publish_name.c create mode 100644 ompi/mpi/c/put.c create mode 100644 ompi/mpi/c/query_thread.c create mode 100644 ompi/mpi/c/raccumulate.c create mode 100644 ompi/mpi/c/recv.c create mode 100644 ompi/mpi/c/recv_init.c create mode 100644 ompi/mpi/c/reduce.c create mode 100644 ompi/mpi/c/reduce_local.c create mode 100644 ompi/mpi/c/reduce_scatter.c create mode 100644 ompi/mpi/c/reduce_scatter_block.c create mode 100644 ompi/mpi/c/register_datarep.c create mode 100644 ompi/mpi/c/request_c2f.c create mode 100644 ompi/mpi/c/request_f2c.c create mode 100644 ompi/mpi/c/request_free.c create mode 100644 ompi/mpi/c/request_get_status.c create mode 100644 ompi/mpi/c/rget.c create mode 100644 ompi/mpi/c/rget_accumulate.c create mode 100644 ompi/mpi/c/rput.c create mode 100644 ompi/mpi/c/rsend.c create mode 100644 ompi/mpi/c/rsend_init.c create mode 100644 ompi/mpi/c/scan.c create mode 100644 ompi/mpi/c/scatter.c create mode 100644 ompi/mpi/c/scatterv.c create mode 100644 ompi/mpi/c/send.c create mode 100644 ompi/mpi/c/send_init.c create mode 100644 ompi/mpi/c/sendrecv.c create mode 100644 ompi/mpi/c/sendrecv_replace.c create mode 100644 ompi/mpi/c/ssend.c create mode 100644 ompi/mpi/c/ssend_init.c create mode 100644 ompi/mpi/c/start.c create mode 100644 ompi/mpi/c/startall.c create mode 100644 ompi/mpi/c/status_c2f.c create mode 100644 ompi/mpi/c/status_f2c.c create mode 100644 ompi/mpi/c/status_set_cancelled.c create mode 100644 ompi/mpi/c/status_set_elements.c create mode 100644 ompi/mpi/c/status_set_elements_x.c create mode 100644 ompi/mpi/c/test.c create mode 100644 ompi/mpi/c/test_cancelled.c create mode 100644 ompi/mpi/c/testall.c create mode 100644 ompi/mpi/c/testany.c create mode 100644 ompi/mpi/c/testsome.c create mode 100644 ompi/mpi/c/topo_test.c create mode 100644 ompi/mpi/c/type_c2f.c create mode 100644 ompi/mpi/c/type_commit.c create mode 100644 ompi/mpi/c/type_contiguous.c create mode 100644 ompi/mpi/c/type_create_darray.c create mode 100644 ompi/mpi/c/type_create_f90_complex.c create mode 100644 ompi/mpi/c/type_create_f90_integer.c create mode 100644 ompi/mpi/c/type_create_f90_real.c create mode 100644 ompi/mpi/c/type_create_hindexed.c create mode 100644 ompi/mpi/c/type_create_hindexed_block.c create mode 100644 ompi/mpi/c/type_create_hvector.c create mode 100644 ompi/mpi/c/type_create_indexed_block.c create mode 100644 ompi/mpi/c/type_create_keyval.c create mode 100644 ompi/mpi/c/type_create_resized.c create mode 100644 ompi/mpi/c/type_create_struct.c create mode 100644 ompi/mpi/c/type_create_subarray.c create mode 100644 ompi/mpi/c/type_delete_attr.c create mode 100644 ompi/mpi/c/type_dup.c create mode 100644 ompi/mpi/c/type_extent.c create mode 100644 ompi/mpi/c/type_f2c.c create mode 100644 ompi/mpi/c/type_free.c create mode 100644 ompi/mpi/c/type_free_keyval.c create mode 100644 ompi/mpi/c/type_get_attr.c create mode 100644 ompi/mpi/c/type_get_contents.c create mode 100644 ompi/mpi/c/type_get_envelope.c create mode 100644 ompi/mpi/c/type_get_extent.c create mode 100644 ompi/mpi/c/type_get_extent_x.c create mode 100644 ompi/mpi/c/type_get_name.c create mode 100644 ompi/mpi/c/type_get_true_extent.c create mode 100644 ompi/mpi/c/type_get_true_extent_x.c create mode 100644 ompi/mpi/c/type_hindexed.c create mode 100644 ompi/mpi/c/type_hvector.c create mode 100644 ompi/mpi/c/type_indexed.c create mode 100644 ompi/mpi/c/type_lb.c create mode 100644 ompi/mpi/c/type_match_size.c create mode 100644 ompi/mpi/c/type_set_attr.c create mode 100644 ompi/mpi/c/type_set_name.c create mode 100644 ompi/mpi/c/type_size.c create mode 100644 ompi/mpi/c/type_size_x.c create mode 100644 ompi/mpi/c/type_struct.c create mode 100644 ompi/mpi/c/type_ub.c create mode 100644 ompi/mpi/c/type_vector.c create mode 100644 ompi/mpi/c/unpack.c create mode 100644 ompi/mpi/c/unpack_external.c create mode 100644 ompi/mpi/c/unpublish_name.c create mode 100644 ompi/mpi/c/wait.c create mode 100644 ompi/mpi/c/waitall.c create mode 100644 ompi/mpi/c/waitany.c create mode 100644 ompi/mpi/c/waitsome.c create mode 100644 ompi/mpi/c/win_allocate.c create mode 100644 ompi/mpi/c/win_allocate_shared.c create mode 100644 ompi/mpi/c/win_attach.c create mode 100644 ompi/mpi/c/win_c2f.c create mode 100644 ompi/mpi/c/win_call_errhandler.c create mode 100644 ompi/mpi/c/win_complete.c create mode 100644 ompi/mpi/c/win_create.c create mode 100644 ompi/mpi/c/win_create_dynamic.c create mode 100644 ompi/mpi/c/win_create_errhandler.c create mode 100644 ompi/mpi/c/win_create_keyval.c create mode 100644 ompi/mpi/c/win_delete_attr.c create mode 100644 ompi/mpi/c/win_detach.c create mode 100644 ompi/mpi/c/win_f2c.c create mode 100644 ompi/mpi/c/win_fence.c create mode 100644 ompi/mpi/c/win_flush.c create mode 100644 ompi/mpi/c/win_flush_all.c create mode 100644 ompi/mpi/c/win_flush_local.c create mode 100644 ompi/mpi/c/win_flush_local_all.c create mode 100644 ompi/mpi/c/win_free.c create mode 100644 ompi/mpi/c/win_free_keyval.c create mode 100644 ompi/mpi/c/win_get_attr.c create mode 100644 ompi/mpi/c/win_get_errhandler.c create mode 100644 ompi/mpi/c/win_get_group.c create mode 100644 ompi/mpi/c/win_get_info.c create mode 100644 ompi/mpi/c/win_get_name.c create mode 100644 ompi/mpi/c/win_lock.c create mode 100644 ompi/mpi/c/win_lock_all.c create mode 100644 ompi/mpi/c/win_post.c create mode 100644 ompi/mpi/c/win_set_attr.c create mode 100644 ompi/mpi/c/win_set_errhandler.c create mode 100644 ompi/mpi/c/win_set_info.c create mode 100644 ompi/mpi/c/win_set_name.c create mode 100644 ompi/mpi/c/win_shared_query.c create mode 100644 ompi/mpi/c/win_start.c create mode 100644 ompi/mpi/c/win_sync.c create mode 100644 ompi/mpi/c/win_test.c create mode 100644 ompi/mpi/c/win_unlock.c create mode 100644 ompi/mpi/c/win_unlock_all.c create mode 100644 ompi/mpi/c/win_wait.c create mode 100644 ompi/mpi/c/wtick.c create mode 100644 ompi/mpi/c/wtime.c create mode 100644 ompi/mpi/cxx/Makefile.am create mode 100644 ompi/mpi/cxx/comm.cc create mode 100644 ompi/mpi/cxx/comm.h create mode 100644 ompi/mpi/cxx/comm_inln.h create mode 100644 ompi/mpi/cxx/constants.h create mode 100644 ompi/mpi/cxx/cxx_glue.c create mode 100644 ompi/mpi/cxx/cxx_glue.h create mode 100644 ompi/mpi/cxx/datatype.cc create mode 100644 ompi/mpi/cxx/datatype.h create mode 100644 ompi/mpi/cxx/datatype_inln.h create mode 100644 ompi/mpi/cxx/errhandler.h create mode 100644 ompi/mpi/cxx/errhandler_inln.h create mode 100644 ompi/mpi/cxx/exception.h create mode 100644 ompi/mpi/cxx/file.cc create mode 100644 ompi/mpi/cxx/file.h create mode 100644 ompi/mpi/cxx/file_inln.h create mode 100644 ompi/mpi/cxx/functions.h create mode 100644 ompi/mpi/cxx/functions_inln.h create mode 100644 ompi/mpi/cxx/group.h create mode 100644 ompi/mpi/cxx/group_inln.h create mode 100644 ompi/mpi/cxx/info.h create mode 100644 ompi/mpi/cxx/info_inln.h create mode 100644 ompi/mpi/cxx/intercepts.cc create mode 100644 ompi/mpi/cxx/intercomm.h create mode 100644 ompi/mpi/cxx/intercomm_inln.h create mode 100644 ompi/mpi/cxx/intracomm.h create mode 100644 ompi/mpi/cxx/intracomm_inln.h create mode 100644 ompi/mpi/cxx/mpicxx.cc create mode 100644 ompi/mpi/cxx/mpicxx.h create mode 100644 ompi/mpi/cxx/op.h create mode 100644 ompi/mpi/cxx/op_inln.h create mode 100644 ompi/mpi/cxx/request.h create mode 100644 ompi/mpi/cxx/request_inln.h create mode 100644 ompi/mpi/cxx/status.h create mode 100644 ompi/mpi/cxx/status_inln.h create mode 100644 ompi/mpi/cxx/topology.h create mode 100644 ompi/mpi/cxx/topology_inln.h create mode 100644 ompi/mpi/cxx/win.cc create mode 100644 ompi/mpi/cxx/win.h create mode 100644 ompi/mpi/cxx/win_inln.h create mode 100644 ompi/mpi/fortran/base/Makefile.am create mode 100644 ompi/mpi/fortran/base/attr-fn-int-callback-interfaces.h create mode 100644 ompi/mpi/fortran/base/attr_fn_f.c create mode 100644 ompi/mpi/fortran/base/constants.h create mode 100644 ompi/mpi/fortran/base/conversion-fn-null-int-interface.h create mode 100644 ompi/mpi/fortran/base/conversion_fn_null_f.c create mode 100644 ompi/mpi/fortran/base/datarep.h create mode 100644 ompi/mpi/fortran/base/f90_accessors.c create mode 100644 ompi/mpi/fortran/base/fint_2_int.h create mode 100644 ompi/mpi/fortran/base/fortran_base_strings.h create mode 100755 ompi/mpi/fortran/base/gen-mpi-mangling.pl create mode 100755 ompi/mpi/fortran/base/gen-mpi-sizeof.pl create mode 100644 ompi/mpi/fortran/base/strings.c create mode 100644 ompi/mpi/fortran/base/test_constants_f.c create mode 100644 ompi/mpi/fortran/c_to_integer_kind_mapping.pdf create mode 100644 ompi/mpi/fortran/common_sym_whitelist.txt create mode 100644 ompi/mpi/fortran/configure-fortran-output-bottom.h create mode 100644 ompi/mpi/fortran/configure-fortran-output.h.in create mode 100644 ompi/mpi/fortran/mpiext/Makefile.am create mode 100644 ompi/mpi/fortran/mpif-h/Makefile.am create mode 100644 ompi/mpi/fortran/mpif-h/abort_f.c create mode 100644 ompi/mpi/fortran/mpif-h/accumulate_f.c create mode 100644 ompi/mpi/fortran/mpif-h/add_error_class_f.c create mode 100644 ompi/mpi/fortran/mpif-h/add_error_code_f.c create mode 100644 ompi/mpi/fortran/mpif-h/add_error_string_f.c create mode 100644 ompi/mpi/fortran/mpif-h/address_f.c create mode 100644 ompi/mpi/fortran/mpif-h/aint_add_f.c create mode 100644 ompi/mpi/fortran/mpif-h/aint_diff_f.c create mode 100644 ompi/mpi/fortran/mpif-h/allgather_f.c create mode 100644 ompi/mpi/fortran/mpif-h/allgatherv_f.c create mode 100644 ompi/mpi/fortran/mpif-h/alloc_mem_f.c create mode 100644 ompi/mpi/fortran/mpif-h/allreduce_f.c create mode 100644 ompi/mpi/fortran/mpif-h/alltoall_f.c create mode 100644 ompi/mpi/fortran/mpif-h/alltoallv_f.c create mode 100644 ompi/mpi/fortran/mpif-h/alltoallw_f.c create mode 100644 ompi/mpi/fortran/mpif-h/attr_delete_f.c create mode 100644 ompi/mpi/fortran/mpif-h/attr_get_f.c create mode 100644 ompi/mpi/fortran/mpif-h/attr_put_f.c create mode 100644 ompi/mpi/fortran/mpif-h/barrier_f.c create mode 100644 ompi/mpi/fortran/mpif-h/bcast_f.c create mode 100644 ompi/mpi/fortran/mpif-h/bindings.h create mode 100644 ompi/mpi/fortran/mpif-h/bsend_f.c create mode 100644 ompi/mpi/fortran/mpif-h/bsend_init_f.c create mode 100644 ompi/mpi/fortran/mpif-h/buffer_attach_f.c create mode 100644 ompi/mpi/fortran/mpif-h/buffer_detach_f.c create mode 100644 ompi/mpi/fortran/mpif-h/cancel_f.c create mode 100644 ompi/mpi/fortran/mpif-h/cart_coords_f.c create mode 100644 ompi/mpi/fortran/mpif-h/cart_create_f.c create mode 100644 ompi/mpi/fortran/mpif-h/cart_get_f.c create mode 100644 ompi/mpi/fortran/mpif-h/cart_map_f.c create mode 100644 ompi/mpi/fortran/mpif-h/cart_rank_f.c create mode 100644 ompi/mpi/fortran/mpif-h/cart_shift_f.c create mode 100644 ompi/mpi/fortran/mpif-h/cart_sub_f.c create mode 100644 ompi/mpi/fortran/mpif-h/cartdim_get_f.c create mode 100644 ompi/mpi/fortran/mpif-h/close_port_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_accept_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_call_errhandler_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_compare_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_connect_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_create_errhandler_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_create_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_create_group_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_create_keyval_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_delete_attr_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_disconnect_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_dup_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_dup_with_info_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_free_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_free_keyval_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_get_attr_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_get_errhandler_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_get_info_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_get_name_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_get_parent_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_group_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_idup_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_join_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_rank_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_remote_group_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_remote_size_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_set_attr_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_set_errhandler_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_set_info_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_set_name_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_size_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_spawn_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_spawn_multiple_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_split_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_split_type_f.c create mode 100644 ompi/mpi/fortran/mpif-h/comm_test_inter_f.c create mode 100644 ompi/mpi/fortran/mpif-h/compare_and_swap_f.c create mode 100644 ompi/mpi/fortran/mpif-h/dims_create_f.c create mode 100644 ompi/mpi/fortran/mpif-h/dist_graph_create_adjacent_f.c create mode 100644 ompi/mpi/fortran/mpif-h/dist_graph_create_f.c create mode 100644 ompi/mpi/fortran/mpif-h/dist_graph_neighbors_count_f.c create mode 100644 ompi/mpi/fortran/mpif-h/dist_graph_neighbors_f.c create mode 100644 ompi/mpi/fortran/mpif-h/errhandler_create_f.c create mode 100644 ompi/mpi/fortran/mpif-h/errhandler_free_f.c create mode 100644 ompi/mpi/fortran/mpif-h/errhandler_get_f.c create mode 100644 ompi/mpi/fortran/mpif-h/errhandler_set_f.c create mode 100644 ompi/mpi/fortran/mpif-h/error_class_f.c create mode 100644 ompi/mpi/fortran/mpif-h/error_string_f.c create mode 100644 ompi/mpi/fortran/mpif-h/exscan_f.c create mode 100644 ompi/mpi/fortran/mpif-h/f_sync_reg_f.c create mode 100644 ompi/mpi/fortran/mpif-h/fetch_and_op_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_call_errhandler_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_close_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_create_errhandler_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_delete_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_get_amode_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_get_atomicity_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_get_byte_offset_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_get_errhandler_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_get_group_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_get_info_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_get_position_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_get_position_shared_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_get_size_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_get_type_extent_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_get_view_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_iread_all_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_iread_at_all_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_iread_at_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_iread_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_iread_shared_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_iwrite_all_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_iwrite_at_all_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_iwrite_at_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_iwrite_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_iwrite_shared_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_open_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_preallocate_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_read_all_begin_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_read_all_end_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_read_all_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_read_at_all_begin_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_read_at_all_end_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_read_at_all_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_read_at_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_read_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_read_ordered_begin_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_read_ordered_end_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_read_ordered_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_read_shared_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_seek_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_seek_shared_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_set_atomicity_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_set_errhandler_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_set_info_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_set_size_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_set_view_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_sync_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_write_all_begin_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_write_all_end_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_write_all_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_write_at_all_begin_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_write_at_all_end_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_write_at_all_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_write_at_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_write_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_write_ordered_begin_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_write_ordered_end_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_write_ordered_f.c create mode 100644 ompi/mpi/fortran/mpif-h/file_write_shared_f.c create mode 100644 ompi/mpi/fortran/mpif-h/finalize_f.c create mode 100644 ompi/mpi/fortran/mpif-h/finalized_f.c create mode 100644 ompi/mpi/fortran/mpif-h/free_mem_f.c create mode 100644 ompi/mpi/fortran/mpif-h/gather_f.c create mode 100644 ompi/mpi/fortran/mpif-h/gatherv_f.c create mode 100644 ompi/mpi/fortran/mpif-h/get_accumulate_f.c create mode 100644 ompi/mpi/fortran/mpif-h/get_address_f.c create mode 100644 ompi/mpi/fortran/mpif-h/get_count_f.c create mode 100644 ompi/mpi/fortran/mpif-h/get_elements_f.c create mode 100644 ompi/mpi/fortran/mpif-h/get_elements_x_f.c create mode 100644 ompi/mpi/fortran/mpif-h/get_f.c create mode 100644 ompi/mpi/fortran/mpif-h/get_library_version_f.c create mode 100644 ompi/mpi/fortran/mpif-h/get_processor_name_f.c create mode 100644 ompi/mpi/fortran/mpif-h/get_version_f.c create mode 100644 ompi/mpi/fortran/mpif-h/graph_create_f.c create mode 100644 ompi/mpi/fortran/mpif-h/graph_get_f.c create mode 100644 ompi/mpi/fortran/mpif-h/graph_map_f.c create mode 100644 ompi/mpi/fortran/mpif-h/graph_neighbors_count_f.c create mode 100644 ompi/mpi/fortran/mpif-h/graph_neighbors_f.c create mode 100644 ompi/mpi/fortran/mpif-h/graphdims_get_f.c create mode 100644 ompi/mpi/fortran/mpif-h/grequest_complete_f.c create mode 100644 ompi/mpi/fortran/mpif-h/grequest_start_f.c create mode 100644 ompi/mpi/fortran/mpif-h/group_compare_f.c create mode 100644 ompi/mpi/fortran/mpif-h/group_difference_f.c create mode 100644 ompi/mpi/fortran/mpif-h/group_excl_f.c create mode 100644 ompi/mpi/fortran/mpif-h/group_free_f.c create mode 100644 ompi/mpi/fortran/mpif-h/group_incl_f.c create mode 100644 ompi/mpi/fortran/mpif-h/group_intersection_f.c create mode 100644 ompi/mpi/fortran/mpif-h/group_range_excl_f.c create mode 100644 ompi/mpi/fortran/mpif-h/group_range_incl_f.c create mode 100644 ompi/mpi/fortran/mpif-h/group_rank_f.c create mode 100644 ompi/mpi/fortran/mpif-h/group_size_f.c create mode 100644 ompi/mpi/fortran/mpif-h/group_translate_ranks_f.c create mode 100644 ompi/mpi/fortran/mpif-h/group_union_f.c create mode 100644 ompi/mpi/fortran/mpif-h/iallgather_f.c create mode 100644 ompi/mpi/fortran/mpif-h/iallgatherv_f.c create mode 100644 ompi/mpi/fortran/mpif-h/iallreduce_f.c create mode 100644 ompi/mpi/fortran/mpif-h/ialltoall_f.c create mode 100644 ompi/mpi/fortran/mpif-h/ialltoallv_f.c create mode 100644 ompi/mpi/fortran/mpif-h/ialltoallw_f.c create mode 100644 ompi/mpi/fortran/mpif-h/ibarrier_f.c create mode 100644 ompi/mpi/fortran/mpif-h/ibcast_f.c create mode 100644 ompi/mpi/fortran/mpif-h/ibsend_f.c create mode 100644 ompi/mpi/fortran/mpif-h/iexscan_f.c create mode 100644 ompi/mpi/fortran/mpif-h/igather_f.c create mode 100644 ompi/mpi/fortran/mpif-h/igatherv_f.c create mode 100644 ompi/mpi/fortran/mpif-h/improbe_f.c create mode 100644 ompi/mpi/fortran/mpif-h/imrecv_f.c create mode 100644 ompi/mpi/fortran/mpif-h/ineighbor_allgather_f.c create mode 100644 ompi/mpi/fortran/mpif-h/ineighbor_allgatherv_f.c create mode 100644 ompi/mpi/fortran/mpif-h/ineighbor_alltoall_f.c create mode 100644 ompi/mpi/fortran/mpif-h/ineighbor_alltoallv_f.c create mode 100644 ompi/mpi/fortran/mpif-h/ineighbor_alltoallw_f.c create mode 100644 ompi/mpi/fortran/mpif-h/info_create_f.c create mode 100644 ompi/mpi/fortran/mpif-h/info_delete_f.c create mode 100644 ompi/mpi/fortran/mpif-h/info_dup_f.c create mode 100644 ompi/mpi/fortran/mpif-h/info_free_f.c create mode 100644 ompi/mpi/fortran/mpif-h/info_get_f.c create mode 100644 ompi/mpi/fortran/mpif-h/info_get_nkeys_f.c create mode 100644 ompi/mpi/fortran/mpif-h/info_get_nthkey_f.c create mode 100644 ompi/mpi/fortran/mpif-h/info_get_valuelen_f.c create mode 100644 ompi/mpi/fortran/mpif-h/info_set_f.c create mode 100644 ompi/mpi/fortran/mpif-h/init_f.c create mode 100644 ompi/mpi/fortran/mpif-h/init_thread_f.c create mode 100644 ompi/mpi/fortran/mpif-h/initialized_f.c create mode 100644 ompi/mpi/fortran/mpif-h/intercomm_create_f.c create mode 100644 ompi/mpi/fortran/mpif-h/intercomm_merge_f.c create mode 100644 ompi/mpi/fortran/mpif-h/iprobe_f.c create mode 100644 ompi/mpi/fortran/mpif-h/irecv_f.c create mode 100644 ompi/mpi/fortran/mpif-h/ireduce_f.c create mode 100644 ompi/mpi/fortran/mpif-h/ireduce_scatter_block_f.c create mode 100644 ompi/mpi/fortran/mpif-h/ireduce_scatter_f.c create mode 100644 ompi/mpi/fortran/mpif-h/irsend_f.c create mode 100644 ompi/mpi/fortran/mpif-h/is_thread_main_f.c create mode 100644 ompi/mpi/fortran/mpif-h/iscan_f.c create mode 100644 ompi/mpi/fortran/mpif-h/iscatter_f.c create mode 100644 ompi/mpi/fortran/mpif-h/iscatterv_f.c create mode 100644 ompi/mpi/fortran/mpif-h/isend_f.c create mode 100644 ompi/mpi/fortran/mpif-h/issend_f.c create mode 100644 ompi/mpi/fortran/mpif-h/keyval_create_f.c create mode 100644 ompi/mpi/fortran/mpif-h/keyval_free_f.c create mode 100644 ompi/mpi/fortran/mpif-h/lookup_name_f.c create mode 100644 ompi/mpi/fortran/mpif-h/mprobe_f.c create mode 100644 ompi/mpi/fortran/mpif-h/mrecv_f.c create mode 100644 ompi/mpi/fortran/mpif-h/neighbor_allgather_f.c create mode 100644 ompi/mpi/fortran/mpif-h/neighbor_allgatherv_f.c create mode 100644 ompi/mpi/fortran/mpif-h/neighbor_alltoall_f.c create mode 100644 ompi/mpi/fortran/mpif-h/neighbor_alltoallv_f.c create mode 100644 ompi/mpi/fortran/mpif-h/neighbor_alltoallw_f.c create mode 100644 ompi/mpi/fortran/mpif-h/op_commutative_f.c create mode 100644 ompi/mpi/fortran/mpif-h/op_create_f.c create mode 100644 ompi/mpi/fortran/mpif-h/op_free_f.c create mode 100644 ompi/mpi/fortran/mpif-h/open_port_f.c create mode 100644 ompi/mpi/fortran/mpif-h/pack_external_f.c create mode 100644 ompi/mpi/fortran/mpif-h/pack_external_size_f.c create mode 100644 ompi/mpi/fortran/mpif-h/pack_f.c create mode 100644 ompi/mpi/fortran/mpif-h/pack_size_f.c create mode 100644 ompi/mpi/fortran/mpif-h/pcontrol_f.c create mode 100644 ompi/mpi/fortran/mpif-h/probe_f.c create mode 100644 ompi/mpi/fortran/mpif-h/profile/Makefile.am create mode 100644 ompi/mpi/fortran/mpif-h/prototypes_mpi.h create mode 100644 ompi/mpi/fortran/mpif-h/publish_name_f.c create mode 100644 ompi/mpi/fortran/mpif-h/put_f.c create mode 100644 ompi/mpi/fortran/mpif-h/query_thread_f.c create mode 100644 ompi/mpi/fortran/mpif-h/raccumulate_f.c create mode 100644 ompi/mpi/fortran/mpif-h/recv_f.c create mode 100644 ompi/mpi/fortran/mpif-h/recv_init_f.c create mode 100644 ompi/mpi/fortran/mpif-h/reduce_f.c create mode 100644 ompi/mpi/fortran/mpif-h/reduce_local_f.c create mode 100644 ompi/mpi/fortran/mpif-h/reduce_scatter_block_f.c create mode 100644 ompi/mpi/fortran/mpif-h/reduce_scatter_f.c create mode 100644 ompi/mpi/fortran/mpif-h/register_datarep_f.c create mode 100644 ompi/mpi/fortran/mpif-h/request_free_f.c create mode 100644 ompi/mpi/fortran/mpif-h/request_get_status_f.c create mode 100644 ompi/mpi/fortran/mpif-h/rget_accumulate_f.c create mode 100644 ompi/mpi/fortran/mpif-h/rget_f.c create mode 100644 ompi/mpi/fortran/mpif-h/rput_f.c create mode 100644 ompi/mpi/fortran/mpif-h/rsend_f.c create mode 100644 ompi/mpi/fortran/mpif-h/rsend_init_f.c create mode 100644 ompi/mpi/fortran/mpif-h/scan_f.c create mode 100644 ompi/mpi/fortran/mpif-h/scatter_f.c create mode 100644 ompi/mpi/fortran/mpif-h/scatterv_f.c create mode 100644 ompi/mpi/fortran/mpif-h/send_f.c create mode 100644 ompi/mpi/fortran/mpif-h/send_init_f.c create mode 100644 ompi/mpi/fortran/mpif-h/sendrecv_f.c create mode 100644 ompi/mpi/fortran/mpif-h/sendrecv_replace_f.c create mode 100644 ompi/mpi/fortran/mpif-h/ssend_f.c create mode 100644 ompi/mpi/fortran/mpif-h/ssend_init_f.c create mode 100644 ompi/mpi/fortran/mpif-h/start_f.c create mode 100644 ompi/mpi/fortran/mpif-h/startall_f.c create mode 100644 ompi/mpi/fortran/mpif-h/status-conversion.h create mode 100644 ompi/mpi/fortran/mpif-h/status_set_cancelled_f.c create mode 100644 ompi/mpi/fortran/mpif-h/status_set_elements_f.c create mode 100644 ompi/mpi/fortran/mpif-h/status_set_elements_x_f.c create mode 100644 ompi/mpi/fortran/mpif-h/test_cancelled_f.c create mode 100644 ompi/mpi/fortran/mpif-h/test_f.c create mode 100644 ompi/mpi/fortran/mpif-h/testall_f.c create mode 100644 ompi/mpi/fortran/mpif-h/testany_f.c create mode 100644 ompi/mpi/fortran/mpif-h/testsome_f.c create mode 100644 ompi/mpi/fortran/mpif-h/topo_test_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_commit_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_contiguous_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_create_darray_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_create_f90_complex_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_create_f90_integer_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_create_f90_real_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_create_hindexed_block_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_create_hindexed_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_create_hvector_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_create_indexed_block_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_create_keyval_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_create_resized_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_create_struct_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_create_subarray_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_delete_attr_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_dup_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_extent_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_free_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_free_keyval_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_get_attr_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_get_contents_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_get_envelope_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_get_extent_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_get_extent_x_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_get_name_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_get_true_extent_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_get_true_extent_x_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_hindexed_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_hvector_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_indexed_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_lb_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_match_size_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_set_attr_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_set_name_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_size_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_size_x_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_struct_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_ub_f.c create mode 100644 ompi/mpi/fortran/mpif-h/type_vector_f.c create mode 100644 ompi/mpi/fortran/mpif-h/unpack_external_f.c create mode 100644 ompi/mpi/fortran/mpif-h/unpack_f.c create mode 100644 ompi/mpi/fortran/mpif-h/unpublish_name_f.c create mode 100644 ompi/mpi/fortran/mpif-h/wait_f.c create mode 100644 ompi/mpi/fortran/mpif-h/waitall_f.c create mode 100644 ompi/mpi/fortran/mpif-h/waitany_f.c create mode 100644 ompi/mpi/fortran/mpif-h/waitsome_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_allocate_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_allocate_shared_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_attach_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_call_errhandler_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_complete_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_create_dynamic_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_create_errhandler_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_create_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_create_keyval_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_delete_attr_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_detach_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_fence_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_flush_all_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_flush_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_flush_local_all_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_flush_local_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_free_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_free_keyval_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_get_attr_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_get_errhandler_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_get_group_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_get_info_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_get_name_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_lock_all_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_lock_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_post_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_set_attr_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_set_errhandler_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_set_info_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_set_name_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_shared_query_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_start_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_sync_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_test_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_unlock_all_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_unlock_f.c create mode 100644 ompi/mpi/fortran/mpif-h/win_wait_f.c create mode 100644 ompi/mpi/fortran/mpif-h/wtick_f.c create mode 100644 ompi/mpi/fortran/mpif-h/wtime_f.c create mode 100644 ompi/mpi/fortran/use-mpi-f08/Makefile.am create mode 100644 ompi/mpi/fortran/use-mpi-f08/abort_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/accumulate_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/add_error_class_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/add_error_code_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/add_error_string_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/aint_add_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/aint_diff_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/allgather_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/allgatherv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/alloc_mem_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/allreduce_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/alltoall_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/alltoallv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/alltoallw_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/barrier_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/bcast_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/bsend_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/bsend_init_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/buffer_attach_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/buffer_detach.c create mode 100644 ompi/mpi/fortran/use-mpi-f08/buffer_detach_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/cancel_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/cart_coords_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/cart_create_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/cart_get_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/cart_map_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/cart_rank_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/cart_shift_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/cart_sub_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/cartdim_get_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/close_port_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_accept_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_call_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_compare_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_connect_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_create_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_create_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_create_group_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_create_keyval_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_delete_attr_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_disconnect_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_dup_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_dup_with_info_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_free_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_free_keyval_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_get_attr_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_get_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_get_info_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_get_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_get_parent_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_group_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_idup_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_join_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_rank_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_remote_group_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_remote_size_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_set_attr_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_set_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_set_info_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_set_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_size_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_spawn_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_spawn_multiple_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_split_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_split_type_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/comm_test_inter_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/compare_and_swap_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/constants.c create mode 100644 ompi/mpi/fortran/use-mpi-f08/dims_create_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/dist_graph_create_adjacent_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/dist_graph_create_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/dist_graph_neighbors_count_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/dist_graph_neighbors_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/errhandler_free_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/error_class_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/error_string_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/exscan_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/f_sync_reg_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/fetch_and_op_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_call_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_close_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_create_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_delete_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_get_amode_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_get_atomicity_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_get_byte_offset_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_get_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_get_group_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_get_info_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_get_position_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_get_position_shared_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_get_size_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_get_type_extent_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_get_view_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_iread_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_iread_at_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_iread_at_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_iread_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_iread_shared_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_iwrite_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_iwrite_at_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_iwrite_at_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_iwrite_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_iwrite_shared_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_open_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_preallocate_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_read_all_begin_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_read_all_end_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_read_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_read_at_all_begin_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_read_at_all_end_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_read_at_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_read_at_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_read_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_read_ordered_begin_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_read_ordered_end_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_read_ordered_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_read_shared_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_seek_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_seek_shared_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_set_atomicity_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_set_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_set_info_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_set_size_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_set_view_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_sync_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_write_all_begin_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_write_all_end_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_write_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_write_at_all_begin_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_write_at_all_end_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_write_at_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_write_at_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_write_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_write_ordered_begin_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_write_ordered_end_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_write_ordered_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/file_write_shared_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/finalize_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/finalized_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/free_mem_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/gather_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/gatherv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/get_accumulate_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/get_address_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/get_count_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/get_elements_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/get_elements_x_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/get_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/get_library_version_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/get_processor_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/get_version_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/graph_create_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/graph_get_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/graph_map_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/graph_neighbors_count_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/graph_neighbors_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/graphdims_get_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/grequest_complete_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/grequest_start_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/group_compare_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/group_difference_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/group_excl_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/group_free_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/group_incl_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/group_intersection_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/group_range_excl_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/group_range_incl_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/group_rank_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/group_size_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/group_translate_ranks_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/group_union_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/iallgather_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/iallgatherv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/iallreduce_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/ialltoall_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/ialltoallv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/ialltoallw_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/ibarrier_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/ibcast_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/ibsend_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/iexscan_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/igather_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/igatherv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/improbe_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/imrecv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/ineighbor_allgather_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/ineighbor_allgatherv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/ineighbor_alltoall_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/ineighbor_alltoallv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/ineighbor_alltoallw_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/info_create_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/info_delete_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/info_dup_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/info_free_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/info_get_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/info_get_nkeys_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/info_get_nthkey_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/info_get_valuelen_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/info_set_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/init_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/init_thread_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/initialized_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/intercomm_create_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/intercomm_merge_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/iprobe_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/irecv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/ireduce_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/ireduce_scatter_block_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/ireduce_scatter_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/irsend_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/is_thread_main_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/iscan_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/iscatter_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/iscatterv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/isend_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/issend_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/lookup_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/mod/Makefile.am create mode 100644 ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-callbacks.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-interfaces-callbacks.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-interfaces.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-types.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/mpi-f-interfaces-bind.h create mode 100644 ompi/mpi/fortran/use-mpi-f08/mpi-f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/mprobe_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/mrecv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/neighbor_allgather_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/neighbor_allgatherv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/neighbor_alltoall_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/neighbor_alltoallv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/neighbor_alltoallw_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/op_commutative_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/op_create_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/op_free_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/open_port_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/pack_external_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/pack_external_size_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/pack_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/pack_size_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/pcontrol_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/pmpi-f-interfaces-bind.h create mode 100644 ompi/mpi/fortran/use-mpi-f08/probe_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pabort_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/paccumulate_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/padd_error_class_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/padd_error_code_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/padd_error_string_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/paint_add_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/paint_diff_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pallgather_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pallgatherv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/palloc_mem_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pallreduce_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/palltoall_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/palltoallv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/palltoallw_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pbarrier_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pbcast_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pbsend_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pbsend_init_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pbuffer_attach_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pbuffer_detach_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcancel_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcart_coords_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcart_create_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcart_get_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcart_map_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcart_rank_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcart_shift_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcart_sub_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcartdim_get_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pclose_port_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_accept_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_call_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_compare_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_connect_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_create_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_create_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_create_group_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_create_keyval_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_delete_attr_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_disconnect_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_dup_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_dup_with_info_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_free_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_free_keyval_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_get_attr_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_get_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_get_info_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_get_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_get_parent_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_group_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_idup_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_join_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_rank_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_remote_group_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_remote_size_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_set_attr_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_set_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_set_info_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_set_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_size_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_spawn_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_spawn_multiple_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_split_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_split_type_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcomm_test_inter_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pcompare_and_swap_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pdims_create_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pdist_graph_create_adjacent_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pdist_graph_create_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pdist_graph_neighbors_count_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pdist_graph_neighbors_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/perrhandler_free_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/perror_class_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/perror_string_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pexscan_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pf_sync_reg_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfetch_and_op_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_call_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_close_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_create_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_delete_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_get_amode_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_get_atomicity_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_get_byte_offset_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_get_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_get_group_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_get_info_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_get_position_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_get_position_shared_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_get_size_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_get_type_extent_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_get_view_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_iread_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_iread_at_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_iread_at_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_iread_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_iread_shared_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_iwrite_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_iwrite_at_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_iwrite_at_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_iwrite_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_iwrite_shared_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_open_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_preallocate_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_read_all_begin_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_read_all_end_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_read_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_read_at_all_begin_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_read_at_all_end_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_read_at_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_read_at_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_read_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_read_ordered_begin_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_read_ordered_end_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_read_ordered_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_read_shared_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_seek_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_seek_shared_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_set_atomicity_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_set_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_set_info_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_set_size_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_set_view_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_sync_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_write_all_begin_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_write_all_end_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_write_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_write_at_all_begin_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_write_at_all_end_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_write_at_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_write_at_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_write_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_write_ordered_begin_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_write_ordered_end_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_write_ordered_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_write_shared_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfinalize_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfinalized_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfree_mem_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgather_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgatherv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pget_accumulate_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pget_address_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pget_count_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pget_elements_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pget_elements_x_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pget_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pget_library_version_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pget_processor_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pget_version_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgraph_create_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgraph_get_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgraph_map_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgraph_neighbors_count_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgraph_neighbors_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgraphdims_get_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgrequest_complete_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgrequest_start_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgroup_compare_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgroup_difference_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgroup_excl_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgroup_free_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgroup_incl_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgroup_intersection_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgroup_range_excl_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgroup_range_incl_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgroup_rank_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgroup_size_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgroup_translate_ranks_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pgroup_union_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/piallgather_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/piallgatherv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/piallreduce_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pialltoall_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pialltoallv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pialltoallw_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pibarrier_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pibcast_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pibsend_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/piexscan_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pigather_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pigatherv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pimprobe_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pimrecv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pineighbor_allgather_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pineighbor_allgatherv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pineighbor_alltoall_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pineighbor_alltoallv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pineighbor_alltoallw_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pinfo_create_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pinfo_delete_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pinfo_dup_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pinfo_free_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pinfo_get_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pinfo_get_nkeys_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pinfo_get_nthkey_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pinfo_get_valuelen_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pinfo_set_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pinit_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pinit_thread_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pinitialized_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pintercomm_create_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pintercomm_merge_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/piprobe_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pirecv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pireduce_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pireduce_scatter_block_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pireduce_scatter_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pirsend_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pis_thread_main_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/piscan_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/piscatter_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/piscatterv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pisend_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pissend_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/plookup_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pmprobe_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pmrecv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pneighbor_allgather_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pneighbor_allgatherv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pneighbor_alltoall_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pneighbor_alltoallv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pneighbor_alltoallw_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pop_commutative_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pop_create_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pop_free_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/popen_port_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ppack_external_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ppack_external_size_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ppack_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ppack_size_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ppcontrol_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pprobe_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ppublish_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pput_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pquery_thread_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/praccumulate_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/precv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/precv_init_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/preduce_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/preduce_local_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/preduce_scatter_block_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/preduce_scatter_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pregister_datarep_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/prequest_free_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/prequest_get_status_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/prget_accumulate_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/prget_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/prput_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/prsend_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/prsend_init_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pscan_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pscatter_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pscatterv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/psend_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/psend_init_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/psendrecv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/psendrecv_replace_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pssend_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pssend_init_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pstart_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pstartall_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pstatus_set_cancelled_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pstatus_set_elements_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pstatus_set_elements_x_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptest_cancelled_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptest_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptestall_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptestany_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptestsome_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptopo_test_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_commit_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_contiguous_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_create_darray_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_create_f90_complex_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_create_f90_integer_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_create_f90_real_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_create_hindexed_block_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_create_hindexed_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_create_hvector_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_create_indexed_block_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_create_keyval_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_create_resized_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_create_struct_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_create_subarray_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_delete_attr_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_dup_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_free_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_free_keyval_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_get_attr_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_get_contents_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_get_envelope_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_get_extent_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_get_extent_x_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_get_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_get_true_extent_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_get_true_extent_x_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_indexed_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_match_size_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_set_attr_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_set_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_size_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_size_x_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/ptype_vector_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/punpack_external_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/punpack_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/punpublish_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwait_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwaitall_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwaitany_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwaitsome_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_allocate_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_allocate_shared_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_attach_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_call_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_complete_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_create_dynamic_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_create_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_create_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_create_keyval_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_delete_attr_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_detach_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_fence_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_flush_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_flush_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_flush_local_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_flush_local_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_free_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_free_keyval_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_get_attr_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_get_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_get_group_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_get_info_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_get_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_lock_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_lock_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_post_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_set_attr_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_set_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_set_info_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_set_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_shared_query_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_start_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_sync_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_test_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_unlock_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_unlock_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pwin_wait_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/publish_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/put_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/query_thread_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/raccumulate_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/recv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/recv_init_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/reduce_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/reduce_local_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/reduce_scatter_block_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/reduce_scatter_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/register_datarep_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/request_free_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/request_get_status_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/rget_accumulate_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/rget_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/rput_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/rsend_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/rsend_init_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/scan_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/scatter_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/scatterv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/send_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/send_init_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/sendrecv_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/sendrecv_replace_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/ssend_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/ssend_init_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/start_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/startall_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/status_set_cancelled_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/status_set_elements_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/status_set_elements_x_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/test_cancelled_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/test_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/testall_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/testany_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/tests/contig.f90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/tests/print_array.c create mode 100644 ompi/mpi/fortran/use-mpi-f08/testsome_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/topo_test_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_commit_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_contiguous_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_create_darray_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_create_f90_complex_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_create_f90_integer_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_create_f90_real_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_create_hindexed_block_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_create_hindexed_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_create_hvector_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_create_indexed_block_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_create_keyval_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_create_resized_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_create_struct_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_create_subarray_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_delete_attr_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_dup_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_free_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_free_keyval_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_get_attr_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_get_contents_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_get_envelope_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_get_extent_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_get_extent_x_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_get_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_get_true_extent_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_get_true_extent_x_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_indexed_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_match_size_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_set_attr_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_set_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_size_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_size_x_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/type_vector_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/unpack_external_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/unpack_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/unpublish_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/wait_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/waitall_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/waitany_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/waitsome_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_allocate_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_allocate_shared_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_attach_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_call_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_complete_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_create_dynamic_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_create_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_create_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_create_keyval_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_delete_attr_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_detach_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_fence_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_flush_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_flush_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_flush_local_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_flush_local_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_free_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_free_keyval_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_get_attr_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_get_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_get_group_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_get_info_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_get_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_lock_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_lock_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_post_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_set_attr_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_set_errhandler_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_set_info_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_set_name_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_shared_query_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_start_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_sync_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_test_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_unlock_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_unlock_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/win_wait_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-ignore-tkr/Makefile.am create mode 100644 ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h.in create mode 100644 ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-interfaces.h.in create mode 100644 ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr.F90 create mode 100644 ompi/mpi/fortran/use-mpi-tkr/Makefile.am create mode 100644 ompi/mpi/fortran/use-mpi-tkr/fortran_kinds.sh.in create mode 100644 ompi/mpi/fortran/use-mpi-tkr/fortran_sizes.h.in create mode 100644 ompi/mpi/fortran/use-mpi-tkr/mpi-f90-cptr-interfaces.h create mode 100644 ompi/mpi/fortran/use-mpi-tkr/mpi-f90-file-interfaces.h create mode 100644 ompi/mpi/fortran/use-mpi-tkr/mpi-f90-interfaces.h create mode 100644 ompi/mpi/fortran/use-mpi-tkr/mpi.F90 create mode 100644 ompi/mpi/fortran/use-mpi-tkr/mpi_aint_add_f90.f90 create mode 100644 ompi/mpi/fortran/use-mpi-tkr/mpi_aint_diff_f90.f90 create mode 100644 ompi/mpi/fortran/use-mpi-tkr/mpi_comm_spawn_multiple_f90.f90 create mode 100644 ompi/mpi/fortran/use-mpi-tkr/mpi_testall_f90.f90 create mode 100644 ompi/mpi/fortran/use-mpi-tkr/mpi_testsome_f90.f90 create mode 100644 ompi/mpi/fortran/use-mpi-tkr/mpi_waitall_f90.f90 create mode 100644 ompi/mpi/fortran/use-mpi-tkr/mpi_waitsome_f90.f90 create mode 100644 ompi/mpi/fortran/use-mpi-tkr/mpi_wtick_f90.f90 create mode 100644 ompi/mpi/fortran/use-mpi-tkr/mpi_wtime_f90.f90 create mode 100644 ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-cptr-interfaces.h create mode 100644 ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-file-interfaces.h create mode 100644 ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-interfaces.h create mode 100644 ompi/mpi/fortran/use-mpi-tkr/test/align_c.c create mode 100644 ompi/mpi/fortran/use-mpi-tkr/test/print_align.f90 create mode 100644 ompi/mpi/fortran/use-mpi-tkr/test/print_ikinds.f90 create mode 100644 ompi/mpi/fortran/use-mpi-tkr/test/print_prec_range.f90 create mode 100644 ompi/mpi/fortran/use-mpi-tkr/test/print_rkinds.f90 create mode 100644 ompi/mpi/fortran/use-mpi-tkr/test/send_t.c create mode 100644 ompi/mpi/fortran/use-mpi-tkr/test/test_send.f90 create mode 100644 ompi/mpi/help-mpi-api.txt create mode 100644 ompi/mpi/java/Makefile.am create mode 100644 ompi/mpi/java/README create mode 100644 ompi/mpi/java/c/Makefile.am create mode 100644 ompi/mpi/java/c/mpiJava.h create mode 100644 ompi/mpi/java/c/mpi_CartComm.c create mode 100644 ompi/mpi/java/c/mpi_Comm.c create mode 100644 ompi/mpi/java/c/mpi_Constant.c create mode 100644 ompi/mpi/java/c/mpi_Count.c create mode 100644 ompi/mpi/java/c/mpi_Datatype.c create mode 100644 ompi/mpi/java/c/mpi_Errhandler.c create mode 100644 ompi/mpi/java/c/mpi_File.c create mode 100644 ompi/mpi/java/c/mpi_GraphComm.c create mode 100644 ompi/mpi/java/c/mpi_Group.c create mode 100644 ompi/mpi/java/c/mpi_Info.c create mode 100644 ompi/mpi/java/c/mpi_Intercomm.c create mode 100644 ompi/mpi/java/c/mpi_Intracomm.c create mode 100644 ompi/mpi/java/c/mpi_MPI.c create mode 100644 ompi/mpi/java/c/mpi_Message.c create mode 100644 ompi/mpi/java/c/mpi_Op.c create mode 100644 ompi/mpi/java/c/mpi_Prequest.c create mode 100644 ompi/mpi/java/c/mpi_Request.c create mode 100644 ompi/mpi/java/c/mpi_Status.c create mode 100644 ompi/mpi/java/c/mpi_Win.c create mode 100644 ompi/mpi/java/java/CartComm.java create mode 100644 ompi/mpi/java/java/CartParms.java create mode 100644 ompi/mpi/java/java/Comm.java create mode 100644 ompi/mpi/java/java/Constant.java create mode 100644 ompi/mpi/java/java/Count.java create mode 100644 ompi/mpi/java/java/Datatype.java create mode 100644 ompi/mpi/java/java/DistGraphNeighbors.java create mode 100644 ompi/mpi/java/java/DoubleComplex.java create mode 100644 ompi/mpi/java/java/DoubleInt.java create mode 100644 ompi/mpi/java/java/Errhandler.java create mode 100644 ompi/mpi/java/java/File.java create mode 100644 ompi/mpi/java/java/FileView.java create mode 100644 ompi/mpi/java/java/FloatComplex.java create mode 100644 ompi/mpi/java/java/FloatInt.java create mode 100644 ompi/mpi/java/java/Freeable.java create mode 100644 ompi/mpi/java/java/GraphComm.java create mode 100644 ompi/mpi/java/java/GraphParms.java create mode 100644 ompi/mpi/java/java/Group.java create mode 100644 ompi/mpi/java/java/Info.java create mode 100644 ompi/mpi/java/java/Int2.java create mode 100644 ompi/mpi/java/java/Intercomm.java create mode 100644 ompi/mpi/java/java/Intracomm.java create mode 100644 ompi/mpi/java/java/LongInt.java create mode 100644 ompi/mpi/java/java/MPI.java create mode 100644 ompi/mpi/java/java/MPIException.java create mode 100644 ompi/mpi/java/java/Makefile.am create mode 100644 ompi/mpi/java/java/Message.java create mode 100644 ompi/mpi/java/java/Op.java create mode 100644 ompi/mpi/java/java/Prequest.java create mode 100644 ompi/mpi/java/java/Request.java create mode 100644 ompi/mpi/java/java/ShiftParms.java create mode 100644 ompi/mpi/java/java/ShortInt.java create mode 100644 ompi/mpi/java/java/Status.java create mode 100644 ompi/mpi/java/java/Struct.java create mode 100644 ompi/mpi/java/java/UserFunction.java create mode 100644 ompi/mpi/java/java/Version.java create mode 100644 ompi/mpi/java/java/Win.java create mode 100755 ompi/mpi/man/make_manpage.pl create mode 100644 ompi/mpi/man/man3/MPI.3in create mode 100644 ompi/mpi/man/man3/MPI_Abort.3in create mode 100644 ompi/mpi/man/man3/MPI_Accumulate.3in create mode 100644 ompi/mpi/man/man3/MPI_Add_error_class.3in create mode 100644 ompi/mpi/man/man3/MPI_Add_error_code.3in create mode 100644 ompi/mpi/man/man3/MPI_Add_error_string.3in create mode 100644 ompi/mpi/man/man3/MPI_Address.3in create mode 100644 ompi/mpi/man/man3/MPI_Aint_add.3in create mode 100644 ompi/mpi/man/man3/MPI_Aint_diff.3in create mode 100644 ompi/mpi/man/man3/MPI_Allgather.3in create mode 100644 ompi/mpi/man/man3/MPI_Allgatherv.3in create mode 100644 ompi/mpi/man/man3/MPI_Alloc_mem.3in create mode 100644 ompi/mpi/man/man3/MPI_Allreduce.3in create mode 100644 ompi/mpi/man/man3/MPI_Alltoall.3in create mode 100644 ompi/mpi/man/man3/MPI_Alltoallv.3in create mode 100644 ompi/mpi/man/man3/MPI_Alltoallw.3in create mode 100644 ompi/mpi/man/man3/MPI_Attr_delete.3in create mode 100644 ompi/mpi/man/man3/MPI_Attr_get.3in create mode 100644 ompi/mpi/man/man3/MPI_Attr_put.3in create mode 100644 ompi/mpi/man/man3/MPI_Barrier.3in create mode 100644 ompi/mpi/man/man3/MPI_Bcast.3in create mode 100644 ompi/mpi/man/man3/MPI_Bsend.3in create mode 100644 ompi/mpi/man/man3/MPI_Bsend_init.3in create mode 100644 ompi/mpi/man/man3/MPI_Buffer_attach.3in create mode 100644 ompi/mpi/man/man3/MPI_Buffer_detach.3in create mode 100644 ompi/mpi/man/man3/MPI_Cancel.3in create mode 100644 ompi/mpi/man/man3/MPI_Cart_coords.3in create mode 100644 ompi/mpi/man/man3/MPI_Cart_create.3in create mode 100644 ompi/mpi/man/man3/MPI_Cart_get.3in create mode 100644 ompi/mpi/man/man3/MPI_Cart_map.3in create mode 100644 ompi/mpi/man/man3/MPI_Cart_rank.3in create mode 100644 ompi/mpi/man/man3/MPI_Cart_shift.3in create mode 100644 ompi/mpi/man/man3/MPI_Cart_sub.3in create mode 100644 ompi/mpi/man/man3/MPI_Cartdim_get.3in create mode 100644 ompi/mpi/man/man3/MPI_Close_port.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_accept.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_c2f.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_call_errhandler.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_compare.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_connect.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_create.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_create_errhandler.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_create_group.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_create_keyval.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_delete_attr.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_disconnect.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_dup.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_dup_with_info.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_f2c.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_free.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_free_keyval.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_get_attr.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_get_errhandler.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_get_info.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_get_name.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_get_parent.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_group.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_idup.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_join.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_rank.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_remote_group.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_remote_size.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_set_attr.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_set_errhandler.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_set_info.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_set_name.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_size.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_spawn.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_spawn_multiple.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_split.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_split_type.3in create mode 100644 ompi/mpi/man/man3/MPI_Comm_test_inter.3in create mode 100644 ompi/mpi/man/man3/MPI_Compare_and_swap.3in create mode 100644 ompi/mpi/man/man3/MPI_Dims_create.3in create mode 100644 ompi/mpi/man/man3/MPI_Dist_graph_create.3in create mode 100644 ompi/mpi/man/man3/MPI_Dist_graph_create_adjacent.3in create mode 100644 ompi/mpi/man/man3/MPI_Dist_graph_neighbors.3in create mode 100644 ompi/mpi/man/man3/MPI_Dist_graph_neighbors_count.3in create mode 100644 ompi/mpi/man/man3/MPI_Errhandler_create.3in create mode 100644 ompi/mpi/man/man3/MPI_Errhandler_free.3in create mode 100644 ompi/mpi/man/man3/MPI_Errhandler_get.3in create mode 100644 ompi/mpi/man/man3/MPI_Errhandler_set.3in create mode 100644 ompi/mpi/man/man3/MPI_Error_class.3in create mode 100644 ompi/mpi/man/man3/MPI_Error_string.3in create mode 100644 ompi/mpi/man/man3/MPI_Exscan.3in create mode 100644 ompi/mpi/man/man3/MPI_Fetch_and_op.3in create mode 100644 ompi/mpi/man/man3/MPI_File_c2f.3in create mode 100644 ompi/mpi/man/man3/MPI_File_call_errhandler.3in create mode 100644 ompi/mpi/man/man3/MPI_File_close.3in create mode 100644 ompi/mpi/man/man3/MPI_File_create_errhandler.3in create mode 100644 ompi/mpi/man/man3/MPI_File_delete.3in create mode 100644 ompi/mpi/man/man3/MPI_File_f2c.3in create mode 100644 ompi/mpi/man/man3/MPI_File_get_amode.3in create mode 100644 ompi/mpi/man/man3/MPI_File_get_atomicity.3in create mode 100644 ompi/mpi/man/man3/MPI_File_get_byte_offset.3in create mode 100644 ompi/mpi/man/man3/MPI_File_get_errhandler.3in create mode 100644 ompi/mpi/man/man3/MPI_File_get_group.3in create mode 100644 ompi/mpi/man/man3/MPI_File_get_info.3in create mode 100644 ompi/mpi/man/man3/MPI_File_get_position.3in create mode 100644 ompi/mpi/man/man3/MPI_File_get_position_shared.3in create mode 100644 ompi/mpi/man/man3/MPI_File_get_size.3in create mode 100644 ompi/mpi/man/man3/MPI_File_get_type_extent.3in create mode 100644 ompi/mpi/man/man3/MPI_File_get_view.3in create mode 100644 ompi/mpi/man/man3/MPI_File_iread.3in create mode 100644 ompi/mpi/man/man3/MPI_File_iread_all.3in create mode 100644 ompi/mpi/man/man3/MPI_File_iread_at.3in create mode 100644 ompi/mpi/man/man3/MPI_File_iread_at_all.3in create mode 100644 ompi/mpi/man/man3/MPI_File_iread_shared.3in create mode 100644 ompi/mpi/man/man3/MPI_File_iwrite.3in create mode 100644 ompi/mpi/man/man3/MPI_File_iwrite_all.3in create mode 100644 ompi/mpi/man/man3/MPI_File_iwrite_at.3in create mode 100644 ompi/mpi/man/man3/MPI_File_iwrite_at_all.3in create mode 100644 ompi/mpi/man/man3/MPI_File_iwrite_shared.3in create mode 100644 ompi/mpi/man/man3/MPI_File_open.3in create mode 100644 ompi/mpi/man/man3/MPI_File_preallocate.3in create mode 100644 ompi/mpi/man/man3/MPI_File_read.3in create mode 100644 ompi/mpi/man/man3/MPI_File_read_all.3in create mode 100644 ompi/mpi/man/man3/MPI_File_read_all_begin.3in create mode 100644 ompi/mpi/man/man3/MPI_File_read_all_end.3in create mode 100644 ompi/mpi/man/man3/MPI_File_read_at.3in create mode 100644 ompi/mpi/man/man3/MPI_File_read_at_all.3in create mode 100644 ompi/mpi/man/man3/MPI_File_read_at_all_begin.3in create mode 100644 ompi/mpi/man/man3/MPI_File_read_at_all_end.3in create mode 100644 ompi/mpi/man/man3/MPI_File_read_ordered.3in create mode 100644 ompi/mpi/man/man3/MPI_File_read_ordered_begin.3in create mode 100644 ompi/mpi/man/man3/MPI_File_read_ordered_end.3in create mode 100644 ompi/mpi/man/man3/MPI_File_read_shared.3in create mode 100644 ompi/mpi/man/man3/MPI_File_seek.3in create mode 100644 ompi/mpi/man/man3/MPI_File_seek_shared.3in create mode 100644 ompi/mpi/man/man3/MPI_File_set_atomicity.3in create mode 100644 ompi/mpi/man/man3/MPI_File_set_errhandler.3in create mode 100644 ompi/mpi/man/man3/MPI_File_set_info.3in create mode 100644 ompi/mpi/man/man3/MPI_File_set_size.3in create mode 100644 ompi/mpi/man/man3/MPI_File_set_view.3in create mode 100644 ompi/mpi/man/man3/MPI_File_sync.3in create mode 100644 ompi/mpi/man/man3/MPI_File_write.3in create mode 100644 ompi/mpi/man/man3/MPI_File_write_all.3in create mode 100644 ompi/mpi/man/man3/MPI_File_write_all_begin.3in create mode 100644 ompi/mpi/man/man3/MPI_File_write_all_end.3in create mode 100644 ompi/mpi/man/man3/MPI_File_write_at.3in create mode 100644 ompi/mpi/man/man3/MPI_File_write_at_all.3in create mode 100644 ompi/mpi/man/man3/MPI_File_write_at_all_begin.3in create mode 100644 ompi/mpi/man/man3/MPI_File_write_at_all_end.3in create mode 100644 ompi/mpi/man/man3/MPI_File_write_ordered.3in create mode 100644 ompi/mpi/man/man3/MPI_File_write_ordered_begin.3in create mode 100644 ompi/mpi/man/man3/MPI_File_write_ordered_end.3in create mode 100644 ompi/mpi/man/man3/MPI_File_write_shared.3in create mode 100644 ompi/mpi/man/man3/MPI_Finalize.3in create mode 100644 ompi/mpi/man/man3/MPI_Finalized.3in create mode 100644 ompi/mpi/man/man3/MPI_Free_mem.3in create mode 100644 ompi/mpi/man/man3/MPI_Gather.3in create mode 100644 ompi/mpi/man/man3/MPI_Gatherv.3in create mode 100644 ompi/mpi/man/man3/MPI_Get.3in create mode 100644 ompi/mpi/man/man3/MPI_Get_accumulate.3in create mode 100644 ompi/mpi/man/man3/MPI_Get_address.3in create mode 100644 ompi/mpi/man/man3/MPI_Get_count.3in create mode 100644 ompi/mpi/man/man3/MPI_Get_elements.3in create mode 100644 ompi/mpi/man/man3/MPI_Get_elements_x.3in create mode 100644 ompi/mpi/man/man3/MPI_Get_library_version.3in create mode 100644 ompi/mpi/man/man3/MPI_Get_processor_name.3in create mode 100644 ompi/mpi/man/man3/MPI_Get_version.3in create mode 100644 ompi/mpi/man/man3/MPI_Graph_create.3in create mode 100644 ompi/mpi/man/man3/MPI_Graph_get.3in create mode 100644 ompi/mpi/man/man3/MPI_Graph_map.3in create mode 100644 ompi/mpi/man/man3/MPI_Graph_neighbors.3in create mode 100644 ompi/mpi/man/man3/MPI_Graph_neighbors_count.3in create mode 100644 ompi/mpi/man/man3/MPI_Graphdims_get.3in create mode 100644 ompi/mpi/man/man3/MPI_Grequest_complete.3in create mode 100644 ompi/mpi/man/man3/MPI_Grequest_start.3in create mode 100644 ompi/mpi/man/man3/MPI_Group_c2f.3in create mode 100644 ompi/mpi/man/man3/MPI_Group_compare.3in create mode 100644 ompi/mpi/man/man3/MPI_Group_difference.3in create mode 100644 ompi/mpi/man/man3/MPI_Group_excl.3in create mode 100644 ompi/mpi/man/man3/MPI_Group_f2c.3in create mode 100644 ompi/mpi/man/man3/MPI_Group_free.3in create mode 100644 ompi/mpi/man/man3/MPI_Group_incl.3in create mode 100644 ompi/mpi/man/man3/MPI_Group_intersection.3in create mode 100644 ompi/mpi/man/man3/MPI_Group_range_excl.3in create mode 100644 ompi/mpi/man/man3/MPI_Group_range_incl.3in create mode 100644 ompi/mpi/man/man3/MPI_Group_rank.3in create mode 100644 ompi/mpi/man/man3/MPI_Group_size.3in create mode 100644 ompi/mpi/man/man3/MPI_Group_translate_ranks.3in create mode 100644 ompi/mpi/man/man3/MPI_Group_union.3in create mode 100644 ompi/mpi/man/man3/MPI_Iallgather.3in create mode 100644 ompi/mpi/man/man3/MPI_Iallgatherv.3in create mode 100644 ompi/mpi/man/man3/MPI_Iallreduce.3in create mode 100644 ompi/mpi/man/man3/MPI_Ialltoall.3in create mode 100644 ompi/mpi/man/man3/MPI_Ialltoallv.3in create mode 100644 ompi/mpi/man/man3/MPI_Ialltoallw.3in create mode 100644 ompi/mpi/man/man3/MPI_Ibarrier.3in create mode 100644 ompi/mpi/man/man3/MPI_Ibcast.3in create mode 100644 ompi/mpi/man/man3/MPI_Ibsend.3in create mode 100644 ompi/mpi/man/man3/MPI_Iexscan.3in create mode 100644 ompi/mpi/man/man3/MPI_Igather.3in create mode 100644 ompi/mpi/man/man3/MPI_Igatherv.3in create mode 100644 ompi/mpi/man/man3/MPI_Improbe.3in create mode 100644 ompi/mpi/man/man3/MPI_Imrecv.3in create mode 100644 ompi/mpi/man/man3/MPI_Ineighbor_allgather.3in create mode 100644 ompi/mpi/man/man3/MPI_Ineighbor_allgatherv.3in create mode 100644 ompi/mpi/man/man3/MPI_Ineighbor_alltoall.3in create mode 100644 ompi/mpi/man/man3/MPI_Ineighbor_alltoallv.3in create mode 100644 ompi/mpi/man/man3/MPI_Ineighbor_alltoallw.3in create mode 100644 ompi/mpi/man/man3/MPI_Info_c2f.3in create mode 100644 ompi/mpi/man/man3/MPI_Info_create.3in create mode 100644 ompi/mpi/man/man3/MPI_Info_delete.3in create mode 100644 ompi/mpi/man/man3/MPI_Info_dup.3in create mode 100644 ompi/mpi/man/man3/MPI_Info_env.3in create mode 100644 ompi/mpi/man/man3/MPI_Info_f2c.3in create mode 100644 ompi/mpi/man/man3/MPI_Info_free.3in create mode 100644 ompi/mpi/man/man3/MPI_Info_get.3in create mode 100644 ompi/mpi/man/man3/MPI_Info_get_nkeys.3in create mode 100644 ompi/mpi/man/man3/MPI_Info_get_nthkey.3in create mode 100644 ompi/mpi/man/man3/MPI_Info_get_valuelen.3in create mode 100644 ompi/mpi/man/man3/MPI_Info_set.3in create mode 100644 ompi/mpi/man/man3/MPI_Init.3in create mode 100644 ompi/mpi/man/man3/MPI_Init_thread.3in create mode 100644 ompi/mpi/man/man3/MPI_Initialized.3in create mode 100644 ompi/mpi/man/man3/MPI_Intercomm_create.3in create mode 100644 ompi/mpi/man/man3/MPI_Intercomm_merge.3in create mode 100644 ompi/mpi/man/man3/MPI_Iprobe.3in create mode 100644 ompi/mpi/man/man3/MPI_Irecv.3in create mode 100644 ompi/mpi/man/man3/MPI_Ireduce.3in create mode 100644 ompi/mpi/man/man3/MPI_Ireduce_scatter.3in create mode 100644 ompi/mpi/man/man3/MPI_Ireduce_scatter_block.3in create mode 100644 ompi/mpi/man/man3/MPI_Irsend.3in create mode 100644 ompi/mpi/man/man3/MPI_Is_thread_main.3in create mode 100644 ompi/mpi/man/man3/MPI_Iscan.3in create mode 100644 ompi/mpi/man/man3/MPI_Iscatter.3in create mode 100644 ompi/mpi/man/man3/MPI_Iscatterv.3in create mode 100644 ompi/mpi/man/man3/MPI_Isend.3in create mode 100644 ompi/mpi/man/man3/MPI_Issend.3in create mode 100644 ompi/mpi/man/man3/MPI_Keyval_create.3in create mode 100644 ompi/mpi/man/man3/MPI_Keyval_free.3in create mode 100644 ompi/mpi/man/man3/MPI_Lookup_name.3in create mode 100644 ompi/mpi/man/man3/MPI_Message_c2f.3in create mode 100644 ompi/mpi/man/man3/MPI_Message_f2c.3in create mode 100644 ompi/mpi/man/man3/MPI_Mprobe.3in create mode 100644 ompi/mpi/man/man3/MPI_Mrecv.3in create mode 100644 ompi/mpi/man/man3/MPI_Neighbor_allgather.3in create mode 100644 ompi/mpi/man/man3/MPI_Neighbor_allgatherv.3in create mode 100644 ompi/mpi/man/man3/MPI_Neighbor_alltoall.3in create mode 100644 ompi/mpi/man/man3/MPI_Neighbor_alltoallv.3in create mode 100644 ompi/mpi/man/man3/MPI_Neighbor_alltoallw.3in create mode 100644 ompi/mpi/man/man3/MPI_Op_c2f.3in create mode 100644 ompi/mpi/man/man3/MPI_Op_commutative.3in create mode 100644 ompi/mpi/man/man3/MPI_Op_create.3in create mode 100644 ompi/mpi/man/man3/MPI_Op_f2c.3in create mode 100644 ompi/mpi/man/man3/MPI_Op_free.3in create mode 100644 ompi/mpi/man/man3/MPI_Open_port.3in create mode 100644 ompi/mpi/man/man3/MPI_Pack.3in create mode 100644 ompi/mpi/man/man3/MPI_Pack_external.3in create mode 100644 ompi/mpi/man/man3/MPI_Pack_external_size.3in create mode 100644 ompi/mpi/man/man3/MPI_Pack_size.3in create mode 100644 ompi/mpi/man/man3/MPI_Pcontrol.3in create mode 100644 ompi/mpi/man/man3/MPI_Probe.3in create mode 100644 ompi/mpi/man/man3/MPI_Publish_name.3in create mode 100644 ompi/mpi/man/man3/MPI_Put.3in create mode 100644 ompi/mpi/man/man3/MPI_Query_thread.3in create mode 100644 ompi/mpi/man/man3/MPI_Raccumulate.3in create mode 100644 ompi/mpi/man/man3/MPI_Recv.3in create mode 100644 ompi/mpi/man/man3/MPI_Recv_init.3in create mode 100644 ompi/mpi/man/man3/MPI_Reduce.3in create mode 100644 ompi/mpi/man/man3/MPI_Reduce_local.3in create mode 100644 ompi/mpi/man/man3/MPI_Reduce_scatter.3in create mode 100644 ompi/mpi/man/man3/MPI_Reduce_scatter_block.3in create mode 100644 ompi/mpi/man/man3/MPI_Register_datarep.3in create mode 100644 ompi/mpi/man/man3/MPI_Request_c2f.3in create mode 100644 ompi/mpi/man/man3/MPI_Request_f2c.3in create mode 100644 ompi/mpi/man/man3/MPI_Request_free.3in create mode 100644 ompi/mpi/man/man3/MPI_Request_get_status.3in create mode 100644 ompi/mpi/man/man3/MPI_Rget.3in create mode 100644 ompi/mpi/man/man3/MPI_Rget_accumulate.3in create mode 100644 ompi/mpi/man/man3/MPI_Rput.3in create mode 100644 ompi/mpi/man/man3/MPI_Rsend.3in create mode 100644 ompi/mpi/man/man3/MPI_Rsend_init.3in create mode 100644 ompi/mpi/man/man3/MPI_Scan.3in create mode 100644 ompi/mpi/man/man3/MPI_Scatter.3in create mode 100644 ompi/mpi/man/man3/MPI_Scatterv.3in create mode 100644 ompi/mpi/man/man3/MPI_Send.3in create mode 100644 ompi/mpi/man/man3/MPI_Send_init.3in create mode 100644 ompi/mpi/man/man3/MPI_Sendrecv.3in create mode 100644 ompi/mpi/man/man3/MPI_Sendrecv_replace.3in create mode 100644 ompi/mpi/man/man3/MPI_Sizeof.3in create mode 100644 ompi/mpi/man/man3/MPI_Ssend.3in create mode 100644 ompi/mpi/man/man3/MPI_Ssend_init.3in create mode 100644 ompi/mpi/man/man3/MPI_Start.3in create mode 100644 ompi/mpi/man/man3/MPI_Startall.3in create mode 100644 ompi/mpi/man/man3/MPI_Status_c2f.3in create mode 100644 ompi/mpi/man/man3/MPI_Status_f2c.3in create mode 100644 ompi/mpi/man/man3/MPI_Status_set_cancelled.3in create mode 100644 ompi/mpi/man/man3/MPI_Status_set_elements.3in create mode 100644 ompi/mpi/man/man3/MPI_Status_set_elements_x.3in create mode 100644 ompi/mpi/man/man3/MPI_T_category_changed.3in create mode 100644 ompi/mpi/man/man3/MPI_T_category_get_categories.3in create mode 100644 ompi/mpi/man/man3/MPI_T_category_get_cvars.3in create mode 100644 ompi/mpi/man/man3/MPI_T_category_get_info.3in create mode 100644 ompi/mpi/man/man3/MPI_T_category_get_num.3in create mode 100644 ompi/mpi/man/man3/MPI_T_category_get_pvars.3in create mode 100644 ompi/mpi/man/man3/MPI_T_cvar_get_info.3in create mode 100644 ompi/mpi/man/man3/MPI_T_cvar_get_num.3in create mode 100644 ompi/mpi/man/man3/MPI_T_cvar_handle_alloc.3in create mode 100644 ompi/mpi/man/man3/MPI_T_cvar_handle_free.3in create mode 100644 ompi/mpi/man/man3/MPI_T_cvar_read.3in create mode 100644 ompi/mpi/man/man3/MPI_T_cvar_write.3in create mode 100644 ompi/mpi/man/man3/MPI_T_enum_get_info.3in create mode 100644 ompi/mpi/man/man3/MPI_T_enum_get_item.3in create mode 100644 ompi/mpi/man/man3/MPI_T_finalize.3in create mode 100644 ompi/mpi/man/man3/MPI_T_init_thread.3in create mode 100644 ompi/mpi/man/man3/MPI_T_pvar_get_info.3in create mode 100644 ompi/mpi/man/man3/MPI_T_pvar_get_num.3in create mode 100644 ompi/mpi/man/man3/MPI_T_pvar_handle_alloc.3in create mode 100644 ompi/mpi/man/man3/MPI_T_pvar_handle_free.3in create mode 100644 ompi/mpi/man/man3/MPI_T_pvar_read.3in create mode 100644 ompi/mpi/man/man3/MPI_T_pvar_readreset.3in create mode 100644 ompi/mpi/man/man3/MPI_T_pvar_reset.3in create mode 100644 ompi/mpi/man/man3/MPI_T_pvar_session_create.3in create mode 100644 ompi/mpi/man/man3/MPI_T_pvar_session_free.3in create mode 100644 ompi/mpi/man/man3/MPI_T_pvar_start.3in create mode 100644 ompi/mpi/man/man3/MPI_T_pvar_stop.3in create mode 100644 ompi/mpi/man/man3/MPI_T_pvar_write.3in create mode 100644 ompi/mpi/man/man3/MPI_Test.3in create mode 100644 ompi/mpi/man/man3/MPI_Test_cancelled.3in create mode 100644 ompi/mpi/man/man3/MPI_Testall.3in create mode 100644 ompi/mpi/man/man3/MPI_Testany.3in create mode 100644 ompi/mpi/man/man3/MPI_Testsome.3in create mode 100644 ompi/mpi/man/man3/MPI_Topo_test.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_c2f.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_commit.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_contiguous.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_create_darray.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_create_f90_complex.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_create_f90_integer.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_create_f90_real.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_create_hindexed.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_create_hindexed_block.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_create_hvector.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_create_indexed_block.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_create_keyval.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_create_resized.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_create_struct.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_create_subarray.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_delete_attr.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_dup.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_extent.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_f2c.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_free.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_free_keyval.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_get_attr.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_get_contents.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_get_envelope.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_get_extent.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_get_extent_x.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_get_name.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_get_true_extent.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_get_true_extent_x.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_hindexed.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_hvector.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_indexed.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_lb.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_match_size.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_set_attr.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_set_name.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_size.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_size_x.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_struct.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_ub.3in create mode 100644 ompi/mpi/man/man3/MPI_Type_vector.3in create mode 100644 ompi/mpi/man/man3/MPI_Unpack.3in create mode 100644 ompi/mpi/man/man3/MPI_Unpack_external.3in create mode 100644 ompi/mpi/man/man3/MPI_Unpublish_name.3in create mode 100644 ompi/mpi/man/man3/MPI_Wait.3in create mode 100644 ompi/mpi/man/man3/MPI_Waitall.3in create mode 100644 ompi/mpi/man/man3/MPI_Waitany.3in create mode 100644 ompi/mpi/man/man3/MPI_Waitsome.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_allocate.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_allocate_shared.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_attach.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_c2f.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_call_errhandler.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_complete.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_create.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_create_dynamic.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_create_errhandler.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_create_keyval.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_delete_attr.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_detach.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_f2c.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_fence.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_flush.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_flush_all.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_flush_local.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_flush_local_all.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_free.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_free_keyval.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_get_attr.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_get_errhandler.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_get_group.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_get_info.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_get_name.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_lock.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_lock_all.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_post.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_set_attr.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_set_errhandler.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_set_info.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_set_name.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_shared_query.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_start.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_sync.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_test.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_unlock.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_unlock_all.3in create mode 100644 ompi/mpi/man/man3/MPI_Win_wait.3in create mode 100644 ompi/mpi/man/man3/MPI_Wtick.3in create mode 100644 ompi/mpi/man/man3/MPI_Wtime.3in create mode 100644 ompi/mpi/man/man3/Makefile.extra create mode 100644 ompi/mpi/man/man3/OpenMPI.3in create mode 100644 ompi/mpi/tool/Makefile.am create mode 100644 ompi/mpi/tool/category_changed.c create mode 100644 ompi/mpi/tool/category_get_categories.c create mode 100644 ompi/mpi/tool/category_get_cvars.c create mode 100644 ompi/mpi/tool/category_get_index.c create mode 100644 ompi/mpi/tool/category_get_info.c create mode 100644 ompi/mpi/tool/category_get_num.c create mode 100644 ompi/mpi/tool/category_get_pvars.c create mode 100644 ompi/mpi/tool/cvar_get_index.c create mode 100644 ompi/mpi/tool/cvar_get_info.c create mode 100644 ompi/mpi/tool/cvar_get_num.c create mode 100644 ompi/mpi/tool/cvar_handle_alloc.c create mode 100644 ompi/mpi/tool/cvar_handle_free.c create mode 100644 ompi/mpi/tool/cvar_read.c create mode 100644 ompi/mpi/tool/cvar_write.c create mode 100644 ompi/mpi/tool/enum_get_info.c create mode 100644 ompi/mpi/tool/enum_get_item.c create mode 100644 ompi/mpi/tool/finalize.c create mode 100644 ompi/mpi/tool/init_thread.c create mode 100644 ompi/mpi/tool/mpit-internal.h create mode 100644 ompi/mpi/tool/mpit_common.c create mode 100644 ompi/mpi/tool/profile/Makefile.am create mode 100644 ompi/mpi/tool/profile/defines.h create mode 100644 ompi/mpi/tool/pvar_get_index.c create mode 100644 ompi/mpi/tool/pvar_get_info.c create mode 100644 ompi/mpi/tool/pvar_get_num.c create mode 100644 ompi/mpi/tool/pvar_handle_alloc.c create mode 100644 ompi/mpi/tool/pvar_handle_free.c create mode 100644 ompi/mpi/tool/pvar_read.c create mode 100644 ompi/mpi/tool/pvar_readreset.c create mode 100644 ompi/mpi/tool/pvar_reset.c create mode 100644 ompi/mpi/tool/pvar_session_create.c create mode 100644 ompi/mpi/tool/pvar_session_free.c create mode 100644 ompi/mpi/tool/pvar_start.c create mode 100644 ompi/mpi/tool/pvar_stop.c create mode 100644 ompi/mpi/tool/pvar_write.c create mode 100644 ompi/mpiext/Makefile.am create mode 100644 ompi/mpiext/README.txt create mode 100644 ompi/mpiext/affinity/Makefile.am create mode 100644 ompi/mpiext/affinity/README.txt create mode 100644 ompi/mpiext/affinity/c/Makefile.am create mode 100644 ompi/mpiext/affinity/c/OMPI_Affinity_str.3in create mode 100644 ompi/mpiext/affinity/c/example.c create mode 100644 ompi/mpiext/affinity/c/mpiext_affinity_c.h create mode 100644 ompi/mpiext/affinity/c/mpiext_affinity_str.c create mode 100644 ompi/mpiext/affinity/configure.m4 create mode 100644 ompi/mpiext/cr/Makefile.am create mode 100644 ompi/mpiext/cr/c/Makefile.am create mode 100644 ompi/mpiext/cr/c/checkpoint.c create mode 100644 ompi/mpiext/cr/c/inc_register_callback.c create mode 100644 ompi/mpiext/cr/c/migrate.c create mode 100644 ompi/mpiext/cr/c/mpiext_cr_c.h create mode 100644 ompi/mpiext/cr/c/quiesce_checkpoint.c create mode 100644 ompi/mpiext/cr/c/quiesce_end.c create mode 100644 ompi/mpiext/cr/c/quiesce_start.c create mode 100644 ompi/mpiext/cr/c/restart.c create mode 100644 ompi/mpiext/cr/c/self_register_checkpoint.c create mode 100644 ompi/mpiext/cr/c/self_register_continue.c create mode 100644 ompi/mpiext/cr/c/self_register_restart.c create mode 100644 ompi/mpiext/cr/configure.m4 create mode 100644 ompi/mpiext/cuda/Makefile.am create mode 100644 ompi/mpiext/cuda/README.txt create mode 100644 ompi/mpiext/cuda/c/MPIX_Query_cuda_support.3in create mode 100644 ompi/mpiext/cuda/c/Makefile.am create mode 100644 ompi/mpiext/cuda/c/mpiext_cuda.c create mode 100644 ompi/mpiext/cuda/c/mpiext_cuda_c.h.in create mode 100644 ompi/mpiext/cuda/configure.m4 create mode 100644 ompi/mpiext/example/.opal_ignore create mode 100644 ompi/mpiext/example/Makefile.am create mode 100644 ompi/mpiext/example/README.txt create mode 100644 ompi/mpiext/example/c/Makefile.am create mode 100644 ompi/mpiext/example/c/mpiext_example_c.h create mode 100644 ompi/mpiext/example/c/mpiext_example_module.c create mode 100644 ompi/mpiext/example/c/mpiext_example_progress.c create mode 100644 ompi/mpiext/example/c/progress.c create mode 100644 ompi/mpiext/example/configure.m4 create mode 100644 ompi/mpiext/example/mpif-h/Makefile.am create mode 100644 ompi/mpiext/example/mpif-h/mpiext_example_mpifh.h create mode 100644 ompi/mpiext/example/mpif-h/mpiext_example_progress_f.c create mode 100644 ompi/mpiext/example/tests/Makefile create mode 100644 ompi/mpiext/example/tests/Makefile.include create mode 100644 ompi/mpiext/example/tests/progress_c.c create mode 100644 ompi/mpiext/example/tests/progress_mpifh.F90 create mode 100644 ompi/mpiext/example/tests/progress_usempi.F90 create mode 100644 ompi/mpiext/example/tests/progress_usempif08.F90 create mode 100644 ompi/mpiext/example/use-mpi-f08/Makefile.am create mode 100644 ompi/mpiext/example/use-mpi-f08/mpiext_example_progress_f08.F90 create mode 100644 ompi/mpiext/example/use-mpi-f08/mpiext_example_usempif08.h create mode 100644 ompi/mpiext/example/use-mpi/Makefile.am create mode 100644 ompi/mpiext/example/use-mpi/mpiext_example_usempi.h create mode 100644 ompi/mpiext/mpiext.c create mode 100644 ompi/mpiext/mpiext.h create mode 100644 ompi/op/Makefile.am create mode 100644 ompi/op/op.c create mode 100644 ompi/op/op.h create mode 100644 ompi/patterns/comm/Makefile.am create mode 100644 ompi/patterns/comm/allgather.c create mode 100644 ompi/patterns/comm/allreduce.c create mode 100644 ompi/patterns/comm/bcast.c create mode 100644 ompi/patterns/comm/coll_ops.h create mode 100644 ompi/patterns/comm/commpatterns.h create mode 100644 ompi/patterns/net/Makefile.am create mode 100644 ompi/patterns/net/allreduce.c create mode 100644 ompi/patterns/net/coll_ops.h create mode 100644 ompi/patterns/net/netpatterns.h create mode 100644 ompi/patterns/net/netpatterns_base.c create mode 100644 ompi/patterns/net/netpatterns_knomial_tree.c create mode 100644 ompi/patterns/net/netpatterns_knomial_tree.h create mode 100644 ompi/patterns/net/netpatterns_multinomial_tree.c create mode 100644 ompi/patterns/net/netpatterns_nary_tree.c create mode 100644 ompi/peruse/Makefile.am create mode 100644 ompi/peruse/peruse-internal.h create mode 100644 ompi/peruse/peruse.c create mode 100644 ompi/peruse/peruse.h create mode 100644 ompi/peruse/peruse_module.c create mode 100644 ompi/proc/Makefile.am create mode 100644 ompi/proc/proc.c create mode 100644 ompi/proc/proc.h create mode 100644 ompi/request/Makefile.am create mode 100644 ompi/request/grequest.c create mode 100644 ompi/request/grequest.h create mode 100644 ompi/request/req_test.c create mode 100644 ompi/request/req_wait.c create mode 100644 ompi/request/request.c create mode 100644 ompi/request/request.h create mode 100644 ompi/request/request_dbg.h create mode 100644 ompi/request/request_default.h create mode 100644 ompi/runtime/Makefile.am create mode 100644 ompi/runtime/help-mpi-runtime.txt create mode 100644 ompi/runtime/mpiruntime.h create mode 100644 ompi/runtime/ompi_cr.c create mode 100644 ompi/runtime/ompi_cr.h create mode 100644 ompi/runtime/ompi_info_support.c create mode 100644 ompi/runtime/ompi_info_support.h create mode 100644 ompi/runtime/ompi_mpi_abort.c create mode 100644 ompi/runtime/ompi_mpi_dynamics.c create mode 100644 ompi/runtime/ompi_mpi_finalize.c create mode 100644 ompi/runtime/ompi_mpi_init.c create mode 100644 ompi/runtime/ompi_mpi_params.c create mode 100644 ompi/runtime/ompi_mpi_preconnect.c create mode 100644 ompi/runtime/params.h create mode 100644 ompi/tools/Makefile.am create mode 100644 ompi/tools/mpisync/Makefile.am create mode 100644 ompi/tools/mpisync/hpctimer.c create mode 100644 ompi/tools/mpisync/hpctimer.h create mode 100644 ompi/tools/mpisync/mpigclock.c create mode 100644 ompi/tools/mpisync/mpigclock.h create mode 100755 ompi/tools/mpisync/mpirun_prof create mode 100644 ompi/tools/mpisync/mpisync.1in create mode 100755 ompi/tools/mpisync/ompi_timing_post create mode 100644 ompi/tools/mpisync/sync.c create mode 100644 ompi/tools/ompi_info/Makefile.am create mode 100644 ompi/tools/ompi_info/ompi_info.1in create mode 100644 ompi/tools/ompi_info/ompi_info.c create mode 100644 ompi/tools/ompi_info/ompi_info.h create mode 100644 ompi/tools/ompi_info/param.c create mode 100644 ompi/tools/wrappers/Makefile.am create mode 100644 ompi/tools/wrappers/mpic++-wrapper-data.txt.in create mode 100644 ompi/tools/wrappers/mpicc-wrapper-data.txt.in create mode 100644 ompi/tools/wrappers/mpif77.1in create mode 100644 ompi/tools/wrappers/mpifort-wrapper-data.txt.in create mode 100644 ompi/tools/wrappers/mpijavac.1 create mode 100644 ompi/tools/wrappers/mpijavac.pl.in create mode 100644 ompi/tools/wrappers/ompi-c.pc.in create mode 100644 ompi/tools/wrappers/ompi-cxx.pc.in create mode 100644 ompi/tools/wrappers/ompi-fort.pc.in create mode 100644 ompi/tools/wrappers/ompi.pc.in create mode 100644 ompi/tools/wrappers/ompi_wrapper_script.in create mode 100644 ompi/win/Makefile.am create mode 100644 ompi/win/win.c create mode 100644 ompi/win/win.h create mode 100644 opal/Makefile.am create mode 100644 opal/asm/Makefile.am create mode 100644 opal/asm/asm-data.txt create mode 100644 opal/asm/asm.c create mode 100644 opal/asm/base/ARM.asm create mode 100644 opal/asm/base/IA32.asm create mode 100644 opal/asm/base/IA64.asm create mode 100644 opal/asm/base/MIPS.asm create mode 100644 opal/asm/base/POWERPC32.asm create mode 100644 opal/asm/base/POWERPC64.asm create mode 100644 opal/asm/base/SPARCV9_32.asm create mode 100644 opal/asm/base/SPARCV9_64.asm create mode 100644 opal/asm/base/X86_64.asm create mode 100644 opal/asm/base/aix.conf create mode 100644 opal/asm/base/default.conf create mode 100644 opal/asm/generate-all-asm.pl create mode 100644 opal/asm/generate-asm.pl create mode 100644 opal/class/Makefile.am create mode 100644 opal/class/opal_bitmap.c create mode 100644 opal/class/opal_bitmap.h create mode 100644 opal/class/opal_fifo.c create mode 100644 opal/class/opal_fifo.h create mode 100644 opal/class/opal_free_list.c create mode 100644 opal/class/opal_free_list.h create mode 100644 opal/class/opal_graph.c create mode 100644 opal/class/opal_graph.h create mode 100644 opal/class/opal_hash_table.c create mode 100644 opal/class/opal_hash_table.h create mode 100644 opal/class/opal_hotel.c create mode 100644 opal/class/opal_hotel.h create mode 100644 opal/class/opal_lifo.c create mode 100644 opal/class/opal_lifo.h create mode 100644 opal/class/opal_list.c create mode 100644 opal/class/opal_list.h create mode 100644 opal/class/opal_object.c create mode 100644 opal/class/opal_object.h create mode 100644 opal/class/opal_pointer_array.c create mode 100644 opal/class/opal_pointer_array.h create mode 100644 opal/class/opal_rb_tree.c create mode 100644 opal/class/opal_rb_tree.h create mode 100644 opal/class/opal_ring_buffer.c create mode 100644 opal/class/opal_ring_buffer.h create mode 100644 opal/class/opal_tree.c create mode 100644 opal/class/opal_tree.h create mode 100644 opal/class/opal_value_array.c create mode 100644 opal/class/opal_value_array.h create mode 100644 opal/common_sym_whitelist.txt create mode 100644 opal/datatype/Makefile.am create mode 100644 opal/datatype/opal_convertor.c create mode 100644 opal/datatype/opal_convertor.h create mode 100644 opal/datatype/opal_convertor_internal.h create mode 100644 opal/datatype/opal_convertor_raw.c create mode 100644 opal/datatype/opal_copy_functions.c create mode 100644 opal/datatype/opal_copy_functions_heterogeneous.c create mode 100644 opal/datatype/opal_datatype.h create mode 100644 opal/datatype/opal_datatype_add.c create mode 100644 opal/datatype/opal_datatype_checksum.h create mode 100644 opal/datatype/opal_datatype_clone.c create mode 100644 opal/datatype/opal_datatype_copy.c create mode 100644 opal/datatype/opal_datatype_copy.h create mode 100644 opal/datatype/opal_datatype_create.c create mode 100644 opal/datatype/opal_datatype_create_contiguous.c create mode 100644 opal/datatype/opal_datatype_cuda.c create mode 100644 opal/datatype/opal_datatype_cuda.h create mode 100644 opal/datatype/opal_datatype_destroy.c create mode 100644 opal/datatype/opal_datatype_dump.c create mode 100644 opal/datatype/opal_datatype_fake_stack.c create mode 100644 opal/datatype/opal_datatype_get_count.c create mode 100644 opal/datatype/opal_datatype_internal.h create mode 100644 opal/datatype/opal_datatype_memcpy.h create mode 100644 opal/datatype/opal_datatype_module.c create mode 100644 opal/datatype/opal_datatype_optimize.c create mode 100644 opal/datatype/opal_datatype_pack.c create mode 100644 opal/datatype/opal_datatype_pack.h create mode 100644 opal/datatype/opal_datatype_position.c create mode 100644 opal/datatype/opal_datatype_prototypes.h create mode 100644 opal/datatype/opal_datatype_resize.c create mode 100644 opal/datatype/opal_datatype_unpack.c create mode 100644 opal/datatype/opal_datatype_unpack.h create mode 100644 opal/dss/Makefile.am create mode 100644 opal/dss/dss.h create mode 100644 opal/dss/dss_compare.c create mode 100644 opal/dss/dss_copy.c create mode 100644 opal/dss/dss_dump.c create mode 100644 opal/dss/dss_internal.h create mode 100644 opal/dss/dss_internal_functions.c create mode 100644 opal/dss/dss_load_unload.c create mode 100644 opal/dss/dss_lookup.c create mode 100644 opal/dss/dss_open_close.c create mode 100644 opal/dss/dss_pack.c create mode 100644 opal/dss/dss_peek.c create mode 100644 opal/dss/dss_print.c create mode 100644 opal/dss/dss_register.c create mode 100644 opal/dss/dss_types.h create mode 100644 opal/dss/dss_unpack.c create mode 100644 opal/etc/Makefile.am create mode 100644 opal/etc/openmpi-mca-params.conf create mode 100644 opal/include/Makefile.am create mode 100644 opal/include/opal/Makefile.am create mode 100644 opal/include/opal/align.h create mode 100644 opal/include/opal/constants.h create mode 100644 opal/include/opal/hash_string.h create mode 100644 opal/include/opal/opal_portable_platform.h create mode 100644 opal/include/opal/opal_socket_errno.h create mode 100644 opal/include/opal/prefetch.h create mode 100644 opal/include/opal/sys/Makefile.am create mode 100644 opal/include/opal/sys/architecture.h create mode 100644 opal/include/opal/sys/arm/Makefile.am create mode 100644 opal/include/opal/sys/arm/atomic.h create mode 100644 opal/include/opal/sys/arm/timer.h create mode 100644 opal/include/opal/sys/arm/update.sh create mode 100644 opal/include/opal/sys/arm64/Makefile.am create mode 100644 opal/include/opal/sys/arm64/atomic.h create mode 100644 opal/include/opal/sys/arm64/timer.h create mode 100644 opal/include/opal/sys/arm64/update.sh create mode 100644 opal/include/opal/sys/atomic.h create mode 100644 opal/include/opal/sys/atomic_impl.h create mode 100644 opal/include/opal/sys/cma.h create mode 100644 opal/include/opal/sys/gcc_builtin/Makefile.am create mode 100644 opal/include/opal/sys/gcc_builtin/atomic.h create mode 100644 opal/include/opal/sys/ia32/Makefile.am create mode 100644 opal/include/opal/sys/ia32/atomic.h create mode 100644 opal/include/opal/sys/ia32/timer.h create mode 100644 opal/include/opal/sys/ia32/update.sh create mode 100644 opal/include/opal/sys/ia64/Makefile.am create mode 100644 opal/include/opal/sys/ia64/atomic.h create mode 100644 opal/include/opal/sys/ia64/timer.h create mode 100644 opal/include/opal/sys/ia64/update.sh create mode 100644 opal/include/opal/sys/mips/Makefile.am create mode 100644 opal/include/opal/sys/mips/atomic.h create mode 100644 opal/include/opal/sys/mips/timer.h create mode 100644 opal/include/opal/sys/mips/update.sh create mode 100644 opal/include/opal/sys/osx/Makefile.am create mode 100644 opal/include/opal/sys/osx/atomic.h create mode 100644 opal/include/opal/sys/powerpc/Makefile.am create mode 100644 opal/include/opal/sys/powerpc/atomic.h create mode 100644 opal/include/opal/sys/powerpc/timer.h create mode 100644 opal/include/opal/sys/powerpc/update.sh create mode 100644 opal/include/opal/sys/sparcv9/Makefile.am create mode 100644 opal/include/opal/sys/sparcv9/atomic.h create mode 100644 opal/include/opal/sys/sparcv9/timer.h create mode 100644 opal/include/opal/sys/sparcv9/update.sh create mode 100644 opal/include/opal/sys/sync_builtin/Makefile.am create mode 100644 opal/include/opal/sys/sync_builtin/atomic.h create mode 100644 opal/include/opal/sys/timer.h create mode 100644 opal/include/opal/sys/x86_64/Makefile.am create mode 100644 opal/include/opal/sys/x86_64/atomic.h create mode 100644 opal/include/opal/sys/x86_64/timer.h create mode 100644 opal/include/opal/sys/x86_64/update.sh create mode 100644 opal/include/opal/types.h create mode 100644 opal/include/opal/version.h.in create mode 100644 opal/include/opal_config_bottom.h create mode 100644 opal/include/opal_config_top.h create mode 100644 opal/include/opal_stdint.h create mode 100644 opal/mca/Makefile.am create mode 100644 opal/mca/allocator/Makefile.am create mode 100644 opal/mca/allocator/allocator.h create mode 100644 opal/mca/allocator/base/Makefile.am create mode 100644 opal/mca/allocator/base/allocator_base_frame.c create mode 100644 opal/mca/allocator/base/base.h create mode 100644 opal/mca/allocator/base/owner.txt create mode 100644 opal/mca/allocator/basic/Makefile.am create mode 100644 opal/mca/allocator/basic/allocator_basic.c create mode 100644 opal/mca/allocator/basic/allocator_basic.h create mode 100644 opal/mca/allocator/basic/owner.txt create mode 100644 opal/mca/allocator/bucket/Makefile.am create mode 100644 opal/mca/allocator/bucket/allocator_bucket.c create mode 100644 opal/mca/allocator/bucket/allocator_bucket_alloc.c create mode 100644 opal/mca/allocator/bucket/allocator_bucket_alloc.h create mode 100644 opal/mca/allocator/bucket/owner.txt create mode 100644 opal/mca/backtrace/Makefile.am create mode 100644 opal/mca/backtrace/backtrace.h create mode 100644 opal/mca/backtrace/base/Makefile.am create mode 100644 opal/mca/backtrace/base/backtrace_component.c create mode 100644 opal/mca/backtrace/base/base.h create mode 100644 opal/mca/backtrace/base/owner.txt create mode 100644 opal/mca/backtrace/configure.m4 create mode 100644 opal/mca/backtrace/execinfo/Makefile.am create mode 100644 opal/mca/backtrace/execinfo/backtrace_execinfo.c create mode 100644 opal/mca/backtrace/execinfo/backtrace_execinfo_component.c create mode 100644 opal/mca/backtrace/execinfo/configure.m4 create mode 100644 opal/mca/backtrace/execinfo/owner.txt create mode 100644 opal/mca/backtrace/none/Makefile.am create mode 100644 opal/mca/backtrace/none/backtrace_none.c create mode 100644 opal/mca/backtrace/none/backtrace_none_component.c create mode 100644 opal/mca/backtrace/none/configure.m4 create mode 100644 opal/mca/backtrace/none/owner.txt create mode 100644 opal/mca/backtrace/printstack/Makefile.am create mode 100644 opal/mca/backtrace/printstack/backtrace_printstack.c create mode 100644 opal/mca/backtrace/printstack/backtrace_printstack_component.c create mode 100644 opal/mca/backtrace/printstack/configure.m4 create mode 100644 opal/mca/backtrace/printstack/owner.txt create mode 100644 opal/mca/base/Makefile.am create mode 100644 opal/mca/base/base.h create mode 100644 opal/mca/base/help-mca-base.txt create mode 100644 opal/mca/base/help-mca-var.txt create mode 100644 opal/mca/base/mca_base_close.c create mode 100644 opal/mca/base/mca_base_cmd_line.c create mode 100644 opal/mca/base/mca_base_component_compare.c create mode 100644 opal/mca/base/mca_base_component_find.c create mode 100644 opal/mca/base/mca_base_component_repository.c create mode 100644 opal/mca/base/mca_base_component_repository.h create mode 100644 opal/mca/base/mca_base_components_close.c create mode 100644 opal/mca/base/mca_base_components_open.c create mode 100644 opal/mca/base/mca_base_components_register.c create mode 100644 opal/mca/base/mca_base_components_select.c create mode 100644 opal/mca/base/mca_base_framework.c create mode 100644 opal/mca/base/mca_base_framework.h create mode 100644 opal/mca/base/mca_base_list.c create mode 100644 opal/mca/base/mca_base_open.c create mode 100644 opal/mca/base/mca_base_parse_paramfile.c create mode 100644 opal/mca/base/mca_base_pvar.c create mode 100644 opal/mca/base/mca_base_pvar.h create mode 100644 opal/mca/base/mca_base_var.c create mode 100644 opal/mca/base/mca_base_var.h create mode 100644 opal/mca/base/mca_base_var_enum.c create mode 100644 opal/mca/base/mca_base_var_enum.h create mode 100644 opal/mca/base/mca_base_var_group.c create mode 100644 opal/mca/base/mca_base_var_group.h create mode 100644 opal/mca/base/mca_base_vari.h create mode 100644 opal/mca/btl/Makefile.am create mode 100644 opal/mca/btl/base/Makefile.am create mode 100644 opal/mca/btl/base/base.h create mode 100644 opal/mca/btl/base/btl_base_error.c create mode 100644 opal/mca/btl/base/btl_base_error.h create mode 100644 opal/mca/btl/base/btl_base_frame.c create mode 100644 opal/mca/btl/base/btl_base_mca.c create mode 100644 opal/mca/btl/base/btl_base_select.c create mode 100644 opal/mca/btl/base/help-mpi-btl-base.txt create mode 100644 opal/mca/btl/base/owner.txt create mode 100644 opal/mca/btl/btl.h create mode 100644 opal/mca/btl/openib/Makefile.am create mode 100644 opal/mca/btl/openib/btl-openib-benchmark create mode 100644 opal/mca/btl/openib/btl_openib.c create mode 100644 opal/mca/btl/openib/btl_openib.h create mode 100644 opal/mca/btl/openib/btl_openib_async.c create mode 100644 opal/mca/btl/openib/btl_openib_async.h create mode 100644 opal/mca/btl/openib/btl_openib_atomic.c create mode 100644 opal/mca/btl/openib/btl_openib_component.c create mode 100644 opal/mca/btl/openib/btl_openib_eager_rdma.h create mode 100644 opal/mca/btl/openib/btl_openib_endpoint.c create mode 100644 opal/mca/btl/openib/btl_openib_endpoint.h create mode 100644 opal/mca/btl/openib/btl_openib_frag.c create mode 100644 opal/mca/btl/openib/btl_openib_frag.h create mode 100644 opal/mca/btl/openib/btl_openib_get.c create mode 100644 opal/mca/btl/openib/btl_openib_ini.c create mode 100644 opal/mca/btl/openib/btl_openib_ini.h create mode 100644 opal/mca/btl/openib/btl_openib_ip.c create mode 100644 opal/mca/btl/openib/btl_openib_ip.h create mode 100644 opal/mca/btl/openib/btl_openib_lex.h create mode 100644 opal/mca/btl/openib/btl_openib_lex.l create mode 100644 opal/mca/btl/openib/btl_openib_mca.c create mode 100644 opal/mca/btl/openib/btl_openib_mca.h create mode 100644 opal/mca/btl/openib/btl_openib_proc.c create mode 100644 opal/mca/btl/openib/btl_openib_proc.h create mode 100644 opal/mca/btl/openib/btl_openib_put.c create mode 100644 opal/mca/btl/openib/btl_openib_xrc.c create mode 100644 opal/mca/btl/openib/btl_openib_xrc.h create mode 100644 opal/mca/btl/openib/common_sym_whitelist.txt create mode 100644 opal/mca/btl/openib/configure.m4 create mode 100644 opal/mca/btl/openib/connect/base.h create mode 100644 opal/mca/btl/openib/connect/btl_openib_connect_base.c create mode 100644 opal/mca/btl/openib/connect/btl_openib_connect_empty.c create mode 100644 opal/mca/btl/openib/connect/btl_openib_connect_empty.h create mode 100644 opal/mca/btl/openib/connect/btl_openib_connect_rdmacm.c create mode 100644 opal/mca/btl/openib/connect/btl_openib_connect_rdmacm.h create mode 100644 opal/mca/btl/openib/connect/btl_openib_connect_sl.c create mode 100644 opal/mca/btl/openib/connect/btl_openib_connect_sl.h create mode 100644 opal/mca/btl/openib/connect/btl_openib_connect_udcm.c create mode 100644 opal/mca/btl/openib/connect/btl_openib_connect_udcm.h create mode 100644 opal/mca/btl/openib/connect/connect.h create mode 100644 opal/mca/btl/openib/connect/help-mpi-btl-openib-cpc-base.txt create mode 100644 opal/mca/btl/openib/connect/help-mpi-btl-openib-cpc-rdmacm.txt create mode 100644 opal/mca/btl/openib/help-mpi-btl-openib.txt create mode 100644 opal/mca/btl/openib/mca-btl-openib-device-params.ini create mode 100644 opal/mca/btl/openib/owner.txt create mode 100644 opal/mca/btl/portals4/Makefile.am create mode 100644 opal/mca/btl/portals4/btl_portals4.c create mode 100644 opal/mca/btl/portals4/btl_portals4.h create mode 100644 opal/mca/btl/portals4/btl_portals4_component.c create mode 100644 opal/mca/btl/portals4/btl_portals4_endpoint.h create mode 100644 opal/mca/btl/portals4/btl_portals4_frag.c create mode 100644 opal/mca/btl/portals4/btl_portals4_frag.h create mode 100644 opal/mca/btl/portals4/btl_portals4_rdma.c create mode 100644 opal/mca/btl/portals4/btl_portals4_recv.c create mode 100644 opal/mca/btl/portals4/btl_portals4_recv.h create mode 100644 opal/mca/btl/portals4/btl_portals4_send.c create mode 100644 opal/mca/btl/portals4/configure.m4 create mode 100644 opal/mca/btl/portals4/owner.txt create mode 100644 opal/mca/btl/scif/Makefile.am create mode 100644 opal/mca/btl/scif/btl_scif.h create mode 100644 opal/mca/btl/scif/btl_scif_add_procs.c create mode 100644 opal/mca/btl/scif/btl_scif_component.c create mode 100644 opal/mca/btl/scif/btl_scif_endpoint.c create mode 100644 opal/mca/btl/scif/btl_scif_endpoint.h create mode 100644 opal/mca/btl/scif/btl_scif_frag.c create mode 100644 opal/mca/btl/scif/btl_scif_frag.h create mode 100644 opal/mca/btl/scif/btl_scif_get.c create mode 100644 opal/mca/btl/scif/btl_scif_module.c create mode 100644 opal/mca/btl/scif/btl_scif_put.c create mode 100644 opal/mca/btl/scif/btl_scif_send.c create mode 100644 opal/mca/btl/scif/configure.m4 create mode 100644 opal/mca/btl/scif/owner.txt create mode 100644 opal/mca/btl/self/Makefile.am create mode 100644 opal/mca/btl/self/btl_self.c create mode 100644 opal/mca/btl/self/btl_self.h create mode 100644 opal/mca/btl/self/btl_self_component.c create mode 100644 opal/mca/btl/self/btl_self_frag.c create mode 100644 opal/mca/btl/self/btl_self_frag.h create mode 100644 opal/mca/btl/self/owner.txt create mode 100644 opal/mca/btl/sm/Makefile.am create mode 100644 opal/mca/btl/sm/btl_sm_component.c create mode 100644 opal/mca/btl/sm/configure.m4 create mode 100644 opal/mca/btl/sm/help-mpi-btl-sm.txt create mode 100644 opal/mca/btl/sm/owner.txt create mode 100644 opal/mca/btl/smcuda/Makefile.am create mode 100644 opal/mca/btl/smcuda/README create mode 100644 opal/mca/btl/smcuda/btl_smcuda.c create mode 100644 opal/mca/btl/smcuda/btl_smcuda.h create mode 100644 opal/mca/btl/smcuda/btl_smcuda_component.c create mode 100644 opal/mca/btl/smcuda/btl_smcuda_endpoint.h create mode 100644 opal/mca/btl/smcuda/btl_smcuda_fifo.h create mode 100644 opal/mca/btl/smcuda/btl_smcuda_frag.c create mode 100644 opal/mca/btl/smcuda/btl_smcuda_frag.h create mode 100644 opal/mca/btl/smcuda/configure.m4 create mode 100644 opal/mca/btl/smcuda/help-mpi-btl-smcuda.txt create mode 100644 opal/mca/btl/smcuda/owner.txt create mode 100644 opal/mca/btl/tcp/Makefile.am create mode 100644 opal/mca/btl/tcp/btl_tcp.c create mode 100644 opal/mca/btl/tcp/btl_tcp.h create mode 100644 opal/mca/btl/tcp/btl_tcp_addr.h create mode 100644 opal/mca/btl/tcp/btl_tcp_component.c create mode 100644 opal/mca/btl/tcp/btl_tcp_endpoint.c create mode 100644 opal/mca/btl/tcp/btl_tcp_endpoint.h create mode 100644 opal/mca/btl/tcp/btl_tcp_frag.c create mode 100644 opal/mca/btl/tcp/btl_tcp_frag.h create mode 100644 opal/mca/btl/tcp/btl_tcp_ft.c create mode 100644 opal/mca/btl/tcp/btl_tcp_ft.h create mode 100644 opal/mca/btl/tcp/btl_tcp_hdr.h create mode 100644 opal/mca/btl/tcp/btl_tcp_proc.c create mode 100644 opal/mca/btl/tcp/btl_tcp_proc.h create mode 100644 opal/mca/btl/tcp/configure.m4 create mode 100644 opal/mca/btl/tcp/help-mpi-btl-tcp.txt create mode 100644 opal/mca/btl/tcp/owner.txt create mode 100644 opal/mca/btl/template/.opal_ignore create mode 100644 opal/mca/btl/template/.opal_unignore create mode 100644 opal/mca/btl/template/Makefile.am create mode 100644 opal/mca/btl/template/btl_template.c create mode 100644 opal/mca/btl/template/btl_template.h create mode 100644 opal/mca/btl/template/btl_template_component.c create mode 100644 opal/mca/btl/template/btl_template_endpoint.c create mode 100644 opal/mca/btl/template/btl_template_endpoint.h create mode 100644 opal/mca/btl/template/btl_template_frag.c create mode 100644 opal/mca/btl/template/btl_template_frag.h create mode 100644 opal/mca/btl/template/btl_template_proc.c create mode 100644 opal/mca/btl/template/btl_template_proc.h create mode 100644 opal/mca/btl/template/netpipe-btl-template.txt create mode 100644 opal/mca/btl/template/owner.txt create mode 100644 opal/mca/btl/template/sample-btl-template.conf create mode 100644 opal/mca/btl/ugni/Makefile.am create mode 100644 opal/mca/btl/ugni/btl_ugni.h create mode 100644 opal/mca/btl/ugni/btl_ugni_add_procs.c create mode 100644 opal/mca/btl/ugni/btl_ugni_atomic.c create mode 100644 opal/mca/btl/ugni/btl_ugni_component.c create mode 100644 opal/mca/btl/ugni/btl_ugni_device.h create mode 100644 opal/mca/btl/ugni/btl_ugni_endpoint.c create mode 100644 opal/mca/btl/ugni/btl_ugni_endpoint.h create mode 100644 opal/mca/btl/ugni/btl_ugni_frag.c create mode 100644 opal/mca/btl/ugni/btl_ugni_frag.h create mode 100644 opal/mca/btl/ugni/btl_ugni_get.c create mode 100644 opal/mca/btl/ugni/btl_ugni_init.c create mode 100644 opal/mca/btl/ugni/btl_ugni_module.c create mode 100644 opal/mca/btl/ugni/btl_ugni_prepare.h create mode 100644 opal/mca/btl/ugni/btl_ugni_progress_thread.c create mode 100644 opal/mca/btl/ugni/btl_ugni_put.c create mode 100644 opal/mca/btl/ugni/btl_ugni_rdma.h create mode 100644 opal/mca/btl/ugni/btl_ugni_send.c create mode 100644 opal/mca/btl/ugni/btl_ugni_smsg.c create mode 100644 opal/mca/btl/ugni/btl_ugni_smsg.h create mode 100644 opal/mca/btl/ugni/configure.m4 create mode 100644 opal/mca/btl/ugni/owner.txt create mode 100644 opal/mca/btl/usnic/Makefile.am create mode 100644 opal/mca/btl/usnic/README.test create mode 100644 opal/mca/btl/usnic/README.txt create mode 100644 opal/mca/btl/usnic/btl_usnic.h create mode 100644 opal/mca/btl/usnic/btl_usnic_ack.c create mode 100644 opal/mca/btl/usnic/btl_usnic_ack.h create mode 100644 opal/mca/btl/usnic/btl_usnic_cagent.c create mode 100644 opal/mca/btl/usnic/btl_usnic_cclient.c create mode 100644 opal/mca/btl/usnic/btl_usnic_compat.c create mode 100644 opal/mca/btl/usnic/btl_usnic_compat.h create mode 100644 opal/mca/btl/usnic/btl_usnic_component.c create mode 100644 opal/mca/btl/usnic/btl_usnic_connectivity.h create mode 100644 opal/mca/btl/usnic/btl_usnic_endpoint.c create mode 100644 opal/mca/btl/usnic/btl_usnic_endpoint.h create mode 100644 opal/mca/btl/usnic/btl_usnic_frag.c create mode 100644 opal/mca/btl/usnic/btl_usnic_frag.h create mode 100644 opal/mca/btl/usnic/btl_usnic_graph.c create mode 100644 opal/mca/btl/usnic/btl_usnic_graph.h create mode 100644 opal/mca/btl/usnic/btl_usnic_hwloc.c create mode 100644 opal/mca/btl/usnic/btl_usnic_hwloc.h create mode 100644 opal/mca/btl/usnic/btl_usnic_map.c create mode 100644 opal/mca/btl/usnic/btl_usnic_mca.c create mode 100644 opal/mca/btl/usnic/btl_usnic_module.c create mode 100644 opal/mca/btl/usnic/btl_usnic_module.h create mode 100644 opal/mca/btl/usnic/btl_usnic_proc.c create mode 100644 opal/mca/btl/usnic/btl_usnic_proc.h create mode 100644 opal/mca/btl/usnic/btl_usnic_recv.c create mode 100644 opal/mca/btl/usnic/btl_usnic_recv.h create mode 100644 opal/mca/btl/usnic/btl_usnic_send.c create mode 100644 opal/mca/btl/usnic/btl_usnic_send.h create mode 100644 opal/mca/btl/usnic/btl_usnic_stats.c create mode 100644 opal/mca/btl/usnic/btl_usnic_stats.h create mode 100644 opal/mca/btl/usnic/btl_usnic_test.c create mode 100644 opal/mca/btl/usnic/btl_usnic_test.h create mode 100644 opal/mca/btl/usnic/btl_usnic_util.c create mode 100644 opal/mca/btl/usnic/btl_usnic_util.h create mode 100644 opal/mca/btl/usnic/configure.m4 create mode 100644 opal/mca/btl/usnic/help-mpi-btl-usnic.txt create mode 100644 opal/mca/btl/usnic/owner.txt create mode 100644 opal/mca/btl/usnic/test/btl_usnic_component_test.h create mode 100644 opal/mca/btl/usnic/test/btl_usnic_graph_test.h create mode 100644 opal/mca/btl/usnic/test/usnic_btl_run_tests.c create mode 100644 opal/mca/btl/vader/Makefile.am create mode 100644 opal/mca/btl/vader/btl_vader.h create mode 100644 opal/mca/btl/vader/btl_vader_component.c create mode 100644 opal/mca/btl/vader/btl_vader_endpoint.h create mode 100644 opal/mca/btl/vader/btl_vader_fbox.h create mode 100644 opal/mca/btl/vader/btl_vader_fifo.h create mode 100644 opal/mca/btl/vader/btl_vader_frag.c create mode 100644 opal/mca/btl/vader/btl_vader_frag.h create mode 100644 opal/mca/btl/vader/btl_vader_get.c create mode 100644 opal/mca/btl/vader/btl_vader_knem.c create mode 100644 opal/mca/btl/vader/btl_vader_knem.h create mode 100644 opal/mca/btl/vader/btl_vader_module.c create mode 100644 opal/mca/btl/vader/btl_vader_put.c create mode 100644 opal/mca/btl/vader/btl_vader_send.c create mode 100644 opal/mca/btl/vader/btl_vader_sendi.c create mode 100644 opal/mca/btl/vader/btl_vader_xpmem.c create mode 100644 opal/mca/btl/vader/btl_vader_xpmem.h create mode 100644 opal/mca/btl/vader/configure.m4 create mode 100644 opal/mca/btl/vader/help-btl-vader.txt create mode 100644 opal/mca/btl/vader/owner.txt create mode 100644 opal/mca/common/Makefile.am create mode 100644 opal/mca/common/cuda/Makefile.am create mode 100644 opal/mca/common/cuda/common_cuda.c create mode 100644 opal/mca/common/cuda/common_cuda.h create mode 100644 opal/mca/common/cuda/configure.m4 create mode 100644 opal/mca/common/cuda/help-mpi-common-cuda.txt create mode 100644 opal/mca/common/cuda/owner.txt create mode 100644 opal/mca/common/libfabric/Makefile.am create mode 100644 opal/mca/common/libfabric/common_libfabric.c create mode 100644 opal/mca/common/libfabric/common_libfabric.h create mode 100644 opal/mca/common/libfabric/configure.m4 create mode 100644 opal/mca/common/libfabric/owner.txt create mode 100644 opal/mca/common/sm/Makefile.am create mode 100644 opal/mca/common/sm/common_sm.c create mode 100644 opal/mca/common/sm/common_sm.h create mode 100644 opal/mca/common/sm/common_sm_mpool.c create mode 100644 opal/mca/common/sm/common_sm_mpool.h create mode 100644 opal/mca/common/sm/configure.m4 create mode 100644 opal/mca/common/sm/help-mpi-common-sm.txt create mode 100644 opal/mca/common/sm/owner.txt create mode 100644 opal/mca/common/verbs/Makefile.am create mode 100644 opal/mca/common/verbs/common_verbs.h create mode 100644 opal/mca/common/verbs/common_verbs_basics.c create mode 100644 opal/mca/common/verbs/common_verbs_devlist.c create mode 100644 opal/mca/common/verbs/common_verbs_find_max_inline.c create mode 100644 opal/mca/common/verbs/common_verbs_find_ports.c create mode 100644 opal/mca/common/verbs/common_verbs_mca.c create mode 100644 opal/mca/common/verbs/common_verbs_port.c create mode 100644 opal/mca/common/verbs/common_verbs_qp_type.c create mode 100644 opal/mca/common/verbs/configure.m4 create mode 100644 opal/mca/common/verbs/help-opal-common-verbs.txt create mode 100644 opal/mca/common/verbs/owner.txt create mode 100644 opal/mca/common/verbs_usnic/Makefile.am create mode 100644 opal/mca/common/verbs_usnic/common_verbs_usnic.h create mode 100644 opal/mca/common/verbs_usnic/common_verbs_usnic_fake.c create mode 100644 opal/mca/common/verbs_usnic/configure.m4 create mode 100644 opal/mca/common/verbs_usnic/owner.txt create mode 100644 opal/mca/compress/Makefile.am create mode 100644 opal/mca/compress/base/Makefile.am create mode 100644 opal/mca/compress/base/base.h create mode 100644 opal/mca/compress/base/compress_base_close.c create mode 100644 opal/mca/compress/base/compress_base_fns.c create mode 100644 opal/mca/compress/base/compress_base_open.c create mode 100644 opal/mca/compress/base/compress_base_select.c create mode 100644 opal/mca/compress/base/owner.txt create mode 100644 opal/mca/compress/bzip/Makefile.am create mode 100644 opal/mca/compress/bzip/compress_bzip.h create mode 100644 opal/mca/compress/bzip/compress_bzip_component.c create mode 100644 opal/mca/compress/bzip/compress_bzip_module.c create mode 100644 opal/mca/compress/bzip/owner.txt create mode 100644 opal/mca/compress/compress.h create mode 100644 opal/mca/compress/gzip/Makefile.am create mode 100644 opal/mca/compress/gzip/compress_gzip.h create mode 100644 opal/mca/compress/gzip/compress_gzip_component.c create mode 100644 opal/mca/compress/gzip/compress_gzip_module.c create mode 100644 opal/mca/compress/gzip/owner.txt create mode 100644 opal/mca/crs/Makefile.am create mode 100644 opal/mca/crs/base/Makefile.am create mode 100644 opal/mca/crs/base/base.h create mode 100644 opal/mca/crs/base/crs_base_close.c create mode 100644 opal/mca/crs/base/crs_base_fns.c create mode 100644 opal/mca/crs/base/crs_base_open.c create mode 100644 opal/mca/crs/base/crs_base_select.c create mode 100644 opal/mca/crs/base/owner.txt create mode 100644 opal/mca/crs/blcr/.opal_ignore create mode 100644 opal/mca/crs/blcr/Makefile.am create mode 100644 opal/mca/crs/blcr/configure.m4 create mode 100644 opal/mca/crs/blcr/crs_blcr.h create mode 100644 opal/mca/crs/blcr/crs_blcr_component.c create mode 100644 opal/mca/crs/blcr/crs_blcr_module.c create mode 100644 opal/mca/crs/blcr/help-opal-crs-blcr.txt create mode 100644 opal/mca/crs/criu/.opal_ignore create mode 100644 opal/mca/crs/criu/Makefile.am create mode 100644 opal/mca/crs/criu/configure.m4 create mode 100644 opal/mca/crs/criu/crs_criu.h create mode 100644 opal/mca/crs/criu/crs_criu_component.c create mode 100644 opal/mca/crs/criu/crs_criu_module.c create mode 100644 opal/mca/crs/criu/owner.txt create mode 100644 opal/mca/crs/crs.h create mode 100644 opal/mca/crs/dmtcp/.opal_ignore create mode 100644 opal/mca/crs/dmtcp/Makefile.am create mode 100644 opal/mca/crs/dmtcp/configure.m4 create mode 100644 opal/mca/crs/dmtcp/crs_dmtcp.h create mode 100644 opal/mca/crs/dmtcp/crs_dmtcp_component.c create mode 100644 opal/mca/crs/dmtcp/crs_dmtcp_module.c create mode 100644 opal/mca/crs/dmtcp/owner.txt create mode 100644 opal/mca/crs/none/Makefile.am create mode 100644 opal/mca/crs/none/crs_none.h create mode 100644 opal/mca/crs/none/crs_none_component.c create mode 100644 opal/mca/crs/none/crs_none_module.c create mode 100644 opal/mca/crs/none/help-opal-crs-none.txt create mode 100644 opal/mca/crs/none/owner.txt create mode 100644 opal/mca/crs/opal_crs.7in create mode 100644 opal/mca/crs/self/Makefile.am create mode 100644 opal/mca/crs/self/configure.m4 create mode 100644 opal/mca/crs/self/crs_self.h create mode 100644 opal/mca/crs/self/crs_self_component.c create mode 100644 opal/mca/crs/self/crs_self_module.c create mode 100644 opal/mca/crs/self/help-opal-crs-self.txt create mode 100644 opal/mca/crs/self/owner.txt create mode 100644 opal/mca/dl/Makefile.am create mode 100644 opal/mca/dl/base/Makefile.am create mode 100644 opal/mca/dl/base/base.h create mode 100644 opal/mca/dl/base/dl_base_close.c create mode 100644 opal/mca/dl/base/dl_base_fns.c create mode 100644 opal/mca/dl/base/dl_base_open.c create mode 100644 opal/mca/dl/base/dl_base_select.c create mode 100644 opal/mca/dl/configure.m4 create mode 100644 opal/mca/dl/dl.h create mode 100644 opal/mca/dl/dlopen/Makefile.am create mode 100644 opal/mca/dl/dlopen/configure.m4 create mode 100644 opal/mca/dl/dlopen/dl_dlopen.h create mode 100644 opal/mca/dl/dlopen/dl_dlopen_component.c create mode 100644 opal/mca/dl/dlopen/dl_dlopen_module.c create mode 100644 opal/mca/dl/libltdl/Makefile.am create mode 100644 opal/mca/dl/libltdl/configure.m4 create mode 100644 opal/mca/dl/libltdl/dl_libltdl.h create mode 100644 opal/mca/dl/libltdl/dl_libltdl_component.c create mode 100644 opal/mca/dl/libltdl/dl_libltdl_module.c create mode 100644 opal/mca/event/Makefile.am create mode 100644 opal/mca/event/OMPI_LIBEVENT_README.txt create mode 100644 opal/mca/event/base/Makefile.am create mode 100644 opal/mca/event/base/README.openmpi create mode 100644 opal/mca/event/base/base.h create mode 100644 opal/mca/event/base/event_base_frame.c create mode 100644 opal/mca/event/base/owner.txt create mode 100644 opal/mca/event/configure.m4 create mode 100644 opal/mca/event/event.h create mode 100644 opal/mca/event/external/Makefile.am create mode 100644 opal/mca/event/external/configure.m4 create mode 100644 opal/mca/event/external/event_external_component.c create mode 100644 opal/mca/event/external/event_external_module.c create mode 100644 opal/mca/event/external/external.h create mode 100644 opal/mca/event/external/owner.txt create mode 100644 opal/mca/event/libevent2022/Makefile.am create mode 100644 opal/mca/event/libevent2022/autogen.subdirs create mode 100644 opal/mca/event/libevent2022/configure.m4 create mode 100644 opal/mca/event/libevent2022/libevent/ChangeLog create mode 100644 opal/mca/event/libevent2022/libevent/Doxyfile create mode 100644 opal/mca/event/libevent2022/libevent/LICENSE create mode 100644 opal/mca/event/libevent2022/libevent/Makefile.am create mode 100644 opal/mca/event/libevent2022/libevent/Makefile.nmake create mode 100644 opal/mca/event/libevent2022/libevent/README create mode 100644 opal/mca/event/libevent2022/libevent/WIN32-Code/event2/event-config.h create mode 100644 opal/mca/event/libevent2022/libevent/WIN32-Code/tree.h create mode 100644 opal/mca/event/libevent2022/libevent/arc4random.c create mode 100755 opal/mca/event/libevent2022/libevent/autogen.sh create mode 100644 opal/mca/event/libevent2022/libevent/buffer.c create mode 100644 opal/mca/event/libevent2022/libevent/buffer_iocp.c create mode 100644 opal/mca/event/libevent2022/libevent/bufferevent-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/bufferevent.c create mode 100644 opal/mca/event/libevent2022/libevent/bufferevent_async.c create mode 100644 opal/mca/event/libevent2022/libevent/bufferevent_filter.c create mode 100644 opal/mca/event/libevent2022/libevent/bufferevent_openssl.c create mode 100644 opal/mca/event/libevent2022/libevent/bufferevent_pair.c create mode 100644 opal/mca/event/libevent2022/libevent/bufferevent_ratelim.c create mode 100644 opal/mca/event/libevent2022/libevent/bufferevent_sock.c create mode 100644 opal/mca/event/libevent2022/libevent/changelist-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/compat/sys/queue.h create mode 100644 opal/mca/event/libevent2022/libevent/configure.ac create mode 100644 opal/mca/event/libevent2022/libevent/defer-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/devpoll.c create mode 100644 opal/mca/event/libevent2022/libevent/epoll.c create mode 100644 opal/mca/event/libevent2022/libevent/epoll_sub.c create mode 100644 opal/mca/event/libevent2022/libevent/evbuffer-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/evdns.c create mode 100644 opal/mca/event/libevent2022/libevent/evdns.h create mode 100644 opal/mca/event/libevent2022/libevent/event-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/event.c create mode 100644 opal/mca/event/libevent2022/libevent/event.h create mode 100644 opal/mca/event/libevent2022/libevent/event_iocp.c create mode 100755 opal/mca/event/libevent2022/libevent/event_rpcgen.py create mode 100644 opal/mca/event/libevent2022/libevent/event_tagging.c create mode 100644 opal/mca/event/libevent2022/libevent/evhttp.h create mode 100644 opal/mca/event/libevent2022/libevent/evmap-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/evmap.c create mode 100644 opal/mca/event/libevent2022/libevent/evport.c create mode 100644 opal/mca/event/libevent2022/libevent/evrpc-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/evrpc.c create mode 100644 opal/mca/event/libevent2022/libevent/evrpc.h create mode 100644 opal/mca/event/libevent2022/libevent/evsignal-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/evthread-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/evthread.c create mode 100644 opal/mca/event/libevent2022/libevent/evthread_pthread.c create mode 100644 opal/mca/event/libevent2022/libevent/evthread_win32.c create mode 100644 opal/mca/event/libevent2022/libevent/evutil.c create mode 100644 opal/mca/event/libevent2022/libevent/evutil.h create mode 100644 opal/mca/event/libevent2022/libevent/evutil_rand.c create mode 100644 opal/mca/event/libevent2022/libevent/ht-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/http-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/http.c create mode 100644 opal/mca/event/libevent2022/libevent/include/Makefile.am create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/buffer.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/buffer_compat.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/bufferevent.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/bufferevent_compat.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/bufferevent_ssl.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/bufferevent_struct.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/dns.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/dns_compat.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/dns_struct.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/event.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/event_compat.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/event_struct.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/http.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/http_compat.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/http_struct.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/keyvalq_struct.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/listener.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/rpc.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/rpc_compat.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/rpc_struct.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/tag.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/tag_compat.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/thread.h create mode 100644 opal/mca/event/libevent2022/libevent/include/event2/util.h create mode 100644 opal/mca/event/libevent2022/libevent/iocp-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/ipv6-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/kqueue.c create mode 100644 opal/mca/event/libevent2022/libevent/libevent.pc.in create mode 100644 opal/mca/event/libevent2022/libevent/libevent_openssl.pc.in create mode 100644 opal/mca/event/libevent2022/libevent/libevent_pthreads.pc.in create mode 100644 opal/mca/event/libevent2022/libevent/listener.c create mode 100644 opal/mca/event/libevent2022/libevent/log-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/log.c create mode 100644 opal/mca/event/libevent2022/libevent/m4/ac_backport_259_ssizet.m4 create mode 100644 opal/mca/event/libevent2022/libevent/m4/acx_pthread.m4 create mode 100644 opal/mca/event/libevent2022/libevent/make-event-config.sed create mode 100644 opal/mca/event/libevent2022/libevent/minheap-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/mm-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/opal_rename.h create mode 100644 opal/mca/event/libevent2022/libevent/poll.c create mode 100644 opal/mca/event/libevent2022/libevent/ratelim-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/sample/Makefile.am create mode 100644 opal/mca/event/libevent2022/libevent/sample/dns-example.c create mode 100644 opal/mca/event/libevent2022/libevent/sample/event-test.c create mode 100644 opal/mca/event/libevent2022/libevent/sample/hello-world.c create mode 100644 opal/mca/event/libevent2022/libevent/sample/http-server.c create mode 100644 opal/mca/event/libevent2022/libevent/sample/le-proxy.c create mode 100644 opal/mca/event/libevent2022/libevent/sample/signal-test.c create mode 100644 opal/mca/event/libevent2022/libevent/sample/time-test.c create mode 100644 opal/mca/event/libevent2022/libevent/select.c create mode 100644 opal/mca/event/libevent2022/libevent/signal.c create mode 100644 opal/mca/event/libevent2022/libevent/strlcpy-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/strlcpy.c create mode 100644 opal/mca/event/libevent2022/libevent/test/Makefile.am create mode 100644 opal/mca/event/libevent2022/libevent/test/Makefile.nmake create mode 100644 opal/mca/event/libevent2022/libevent/test/bench.c create mode 100644 opal/mca/event/libevent2022/libevent/test/bench_cascade.c create mode 100644 opal/mca/event/libevent2022/libevent/test/bench_http.c create mode 100644 opal/mca/event/libevent2022/libevent/test/bench_httpclient.c create mode 100644 opal/mca/event/libevent2022/libevent/test/regress.c create mode 100644 opal/mca/event/libevent2022/libevent/test/regress.gen.c create mode 100644 opal/mca/event/libevent2022/libevent/test/regress.gen.h create mode 100644 opal/mca/event/libevent2022/libevent/test/regress.h create mode 100644 opal/mca/event/libevent2022/libevent/test/regress.rpc create mode 100644 opal/mca/event/libevent2022/libevent/test/regress_buffer.c create mode 100644 opal/mca/event/libevent2022/libevent/test/regress_bufferevent.c create mode 100644 opal/mca/event/libevent2022/libevent/test/regress_dns.c create mode 100644 opal/mca/event/libevent2022/libevent/test/regress_et.c create mode 100644 opal/mca/event/libevent2022/libevent/test/regress_http.c create mode 100644 opal/mca/event/libevent2022/libevent/test/regress_iocp.c create mode 100644 opal/mca/event/libevent2022/libevent/test/regress_listener.c create mode 100644 opal/mca/event/libevent2022/libevent/test/regress_main.c create mode 100644 opal/mca/event/libevent2022/libevent/test/regress_minheap.c create mode 100644 opal/mca/event/libevent2022/libevent/test/regress_rpc.c create mode 100644 opal/mca/event/libevent2022/libevent/test/regress_ssl.c create mode 100644 opal/mca/event/libevent2022/libevent/test/regress_testutils.c create mode 100644 opal/mca/event/libevent2022/libevent/test/regress_testutils.h create mode 100644 opal/mca/event/libevent2022/libevent/test/regress_thread.c create mode 100644 opal/mca/event/libevent2022/libevent/test/regress_util.c create mode 100644 opal/mca/event/libevent2022/libevent/test/regress_zlib.c create mode 100755 opal/mca/event/libevent2022/libevent/test/rpcgen_wrapper.sh create mode 100644 opal/mca/event/libevent2022/libevent/test/test-changelist.c create mode 100644 opal/mca/event/libevent2022/libevent/test/test-eof.c create mode 100644 opal/mca/event/libevent2022/libevent/test/test-init.c create mode 100644 opal/mca/event/libevent2022/libevent/test/test-ratelim.c create mode 100644 opal/mca/event/libevent2022/libevent/test/test-time.c create mode 100644 opal/mca/event/libevent2022/libevent/test/test-weof.c create mode 100755 opal/mca/event/libevent2022/libevent/test/test.sh create mode 100644 opal/mca/event/libevent2022/libevent/test/tinytest.c create mode 100644 opal/mca/event/libevent2022/libevent/test/tinytest.h create mode 100644 opal/mca/event/libevent2022/libevent/test/tinytest_local.h create mode 100644 opal/mca/event/libevent2022/libevent/test/tinytest_macros.h create mode 100644 opal/mca/event/libevent2022/libevent/util-internal.h create mode 100644 opal/mca/event/libevent2022/libevent/whatsnew-2.0.txt create mode 100644 opal/mca/event/libevent2022/libevent/win32select.c create mode 100644 opal/mca/event/libevent2022/libevent2022.h create mode 100644 opal/mca/event/libevent2022/libevent2022_component.c create mode 100644 opal/mca/event/libevent2022/libevent2022_module.c create mode 100644 opal/mca/event/libevent2022/owner.txt create mode 100644 opal/mca/hwloc/Makefile.am create mode 100644 opal/mca/hwloc/README.txt create mode 100644 opal/mca/hwloc/autogen.options create mode 100644 opal/mca/hwloc/base/Makefile.am create mode 100644 opal/mca/hwloc/base/base.h create mode 100644 opal/mca/hwloc/base/help-opal-hwloc-base.txt create mode 100644 opal/mca/hwloc/base/hwloc_base_dt.c create mode 100644 opal/mca/hwloc/base/hwloc_base_frame.c create mode 100644 opal/mca/hwloc/base/hwloc_base_maffinity.c create mode 100644 opal/mca/hwloc/base/hwloc_base_proc_mempolicy.c create mode 100644 opal/mca/hwloc/base/hwloc_base_util.c create mode 100644 opal/mca/hwloc/base/owner.txt create mode 100644 opal/mca/hwloc/configure.m4 create mode 100644 opal/mca/hwloc/external/Makefile.am create mode 100644 opal/mca/hwloc/external/configure.m4 create mode 100644 opal/mca/hwloc/external/external.h create mode 100644 opal/mca/hwloc/external/hwloc_external_component.c create mode 100644 opal/mca/hwloc/external/owner.txt create mode 100644 opal/mca/hwloc/hwloc-internal.h create mode 100644 opal/mca/hwloc/hwloc1117/Makefile.am create mode 100644 opal/mca/hwloc/hwloc1117/README-ompi.txt create mode 100644 opal/mca/hwloc/hwloc1117/configure.m4 create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/AUTHORS create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/COPYING create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/Makefile.am create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/NEWS create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/README create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/VERSION create mode 100755 opal/mca/hwloc/hwloc1117/hwloc/config/distscript.sh create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/config/hwloc.m4 create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/config/hwloc_check_attributes.m4 create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/config/hwloc_check_vendor.m4 create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/config/hwloc_check_visibility.m4 create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/config/hwloc_components.m4 create mode 100755 opal/mca/hwloc/hwloc1117/hwloc/config/hwloc_get_version.sh create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/config/hwloc_internal.m4 create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/config/hwloc_pkg.m4 create mode 100755 opal/mca/hwloc/hwloc1117/hwloc/config/test-driver create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/configure.ac create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/contrib/hwloc-valgrind.supp create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/contrib/systemd/README.txt create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/contrib/windows/README.txt create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/doc/README.txt create mode 100755 opal/mca/hwloc/hwloc1117/hwloc/hwloc.pc.in create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/Makefile.am create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/autogen/config.h.in create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/bitmap.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/cuda.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/cudart.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/deprecated.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/diff.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/gl.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/glibc-sched.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/helper.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/inlines.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/intel-mic.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/linux-libnuma.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/linux.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/myriexpress.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/nvml.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/opencl.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/openfabrics-verbs.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/plugins.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/hwloc/rename.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/private/autogen/config.h.in create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/private/components.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/private/cpuid-x86.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/private/debug.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/private/misc.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/private/private.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/private/solaris-chiptype.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/include/private/xml.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/Makefile.am create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/base64.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/bind.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/bitmap.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/components.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/diff.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/distances.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/dolib.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/hwloc.dtd create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/misc.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/pci-common.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-aix.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-bgq.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-cuda.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-custom.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-darwin.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-fake.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-freebsd.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-gl.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-hardwired.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-hpux.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-linux.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-netbsd.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-noos.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-nvml.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-opencl.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-osf.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-pci.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-solaris-chiptype.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-solaris.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-synthetic.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-windows.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-x86.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-xml-libxml.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-xml-nolibxml.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology-xml.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/topology.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/src/traversal.c create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/tests/README.txt create mode 100644 opal/mca/hwloc/hwloc1117/hwloc/utils/README.txt create mode 100644 opal/mca/hwloc/hwloc1117/hwloc1117.h create mode 100644 opal/mca/hwloc/hwloc1117/hwloc1117_component.c create mode 100644 opal/mca/hwloc/hwloc1117/owner.txt create mode 100644 opal/mca/if/Makefile.am create mode 100644 opal/mca/if/base/Makefile.am create mode 100644 opal/mca/if/base/base.h create mode 100644 opal/mca/if/base/if_base_components.c create mode 100644 opal/mca/if/base/owner.txt create mode 100644 opal/mca/if/bsdx_ipv4/Makefile.am create mode 100644 opal/mca/if/bsdx_ipv4/configure.m4 create mode 100644 opal/mca/if/bsdx_ipv4/if_bsdx.c create mode 100644 opal/mca/if/bsdx_ipv4/owner.txt create mode 100644 opal/mca/if/bsdx_ipv6/Makefile.am create mode 100644 opal/mca/if/bsdx_ipv6/configure.m4 create mode 100644 opal/mca/if/bsdx_ipv6/if_bsdx_ipv6.c create mode 100644 opal/mca/if/bsdx_ipv6/owner.txt create mode 100644 opal/mca/if/if.h create mode 100644 opal/mca/if/linux_ipv6/Makefile.am create mode 100644 opal/mca/if/linux_ipv6/configure.m4 create mode 100644 opal/mca/if/linux_ipv6/if_linux_ipv6.c create mode 100644 opal/mca/if/linux_ipv6/owner.txt create mode 100644 opal/mca/if/posix_ipv4/Makefile.am create mode 100644 opal/mca/if/posix_ipv4/configure.m4 create mode 100644 opal/mca/if/posix_ipv4/if_posix.c create mode 100644 opal/mca/if/posix_ipv4/owner.txt create mode 100644 opal/mca/if/solaris_ipv6/Makefile.am create mode 100644 opal/mca/if/solaris_ipv6/configure.m4 create mode 100644 opal/mca/if/solaris_ipv6/if_solaris_ipv6.c create mode 100644 opal/mca/if/solaris_ipv6/owner.txt create mode 100644 opal/mca/installdirs/Makefile.am create mode 100644 opal/mca/installdirs/base/Makefile.am create mode 100644 opal/mca/installdirs/base/base.h create mode 100644 opal/mca/installdirs/base/installdirs_base_components.c create mode 100644 opal/mca/installdirs/base/installdirs_base_expand.c create mode 100644 opal/mca/installdirs/base/owner.txt create mode 100644 opal/mca/installdirs/config/Makefile.am create mode 100644 opal/mca/installdirs/config/configure.m4 create mode 100644 opal/mca/installdirs/config/install_dirs.h.in create mode 100644 opal/mca/installdirs/config/opal_installdirs_config.c create mode 100644 opal/mca/installdirs/config/owner.txt create mode 100644 opal/mca/installdirs/configure.m4 create mode 100644 opal/mca/installdirs/env/Makefile.am create mode 100644 opal/mca/installdirs/env/configure.m4 create mode 100644 opal/mca/installdirs/env/opal_installdirs_env.c create mode 100644 opal/mca/installdirs/env/owner.txt create mode 100644 opal/mca/installdirs/installdirs.h create mode 100644 opal/mca/mca.h create mode 100644 opal/mca/memchecker/Makefile.am create mode 100644 opal/mca/memchecker/base/Makefile.am create mode 100644 opal/mca/memchecker/base/base.h create mode 100644 opal/mca/memchecker/base/memchecker_base_open.c create mode 100644 opal/mca/memchecker/base/memchecker_base_select.c create mode 100644 opal/mca/memchecker/base/memchecker_base_wrappers.c create mode 100644 opal/mca/memchecker/base/owner.txt create mode 100644 opal/mca/memchecker/configure.m4 create mode 100644 opal/mca/memchecker/memchecker.h create mode 100644 opal/mca/memchecker/valgrind/Makefile.am create mode 100644 opal/mca/memchecker/valgrind/configure.m4 create mode 100644 opal/mca/memchecker/valgrind/memchecker_valgrind.h create mode 100644 opal/mca/memchecker/valgrind/memchecker_valgrind_component.c create mode 100644 opal/mca/memchecker/valgrind/memchecker_valgrind_module.c create mode 100644 opal/mca/memchecker/valgrind/owner.txt create mode 100644 opal/mca/memcpy/Makefile.am create mode 100644 opal/mca/memcpy/base/Makefile.am create mode 100644 opal/mca/memcpy/base/base.h create mode 100644 opal/mca/memcpy/base/memcpy_base_default.h create mode 100644 opal/mca/memcpy/base/memcpy_base_open.c create mode 100644 opal/mca/memcpy/base/owner.txt create mode 100644 opal/mca/memcpy/configure.m4 create mode 100644 opal/mca/memcpy/memcpy.h create mode 100644 opal/mca/memory/Makefile.am create mode 100644 opal/mca/memory/base/Makefile.am create mode 100644 opal/mca/memory/base/base.h create mode 100644 opal/mca/memory/base/empty.h create mode 100644 opal/mca/memory/base/memory_base_empty.c create mode 100644 opal/mca/memory/base/memory_base_open.c create mode 100644 opal/mca/memory/base/owner.txt create mode 100644 opal/mca/memory/configure.m4 create mode 100644 opal/mca/memory/malloc_solaris/Makefile.am create mode 100644 opal/mca/memory/malloc_solaris/configure.m4 create mode 100644 opal/mca/memory/malloc_solaris/memory_malloc_solaris_component.c create mode 100644 opal/mca/memory/malloc_solaris/owner.txt create mode 100644 opal/mca/memory/memory.h create mode 100644 opal/mca/memory/patcher/Makefile.am create mode 100644 opal/mca/memory/patcher/configure.m4 create mode 100644 opal/mca/memory/patcher/memory_patcher.h create mode 100644 opal/mca/memory/patcher/memory_patcher_component.c create mode 100644 opal/mca/mpool/Makefile.am create mode 100644 opal/mca/mpool/base/Makefile.am create mode 100644 opal/mca/mpool/base/base.h create mode 100644 opal/mca/mpool/base/help-mpool-base.txt create mode 100644 opal/mca/mpool/base/mpool_base_alloc.c create mode 100644 opal/mca/mpool/base/mpool_base_default.c create mode 100644 opal/mca/mpool/base/mpool_base_frame.c create mode 100644 opal/mca/mpool/base/mpool_base_lookup.c create mode 100644 opal/mca/mpool/base/mpool_base_tree.c create mode 100644 opal/mca/mpool/base/mpool_base_tree.h create mode 100644 opal/mca/mpool/base/owner.txt create mode 100644 opal/mca/mpool/hugepage/Makefile.am create mode 100644 opal/mca/mpool/hugepage/mpool_hugepage.h create mode 100644 opal/mca/mpool/hugepage/mpool_hugepage_component.c create mode 100644 opal/mca/mpool/hugepage/mpool_hugepage_module.c create mode 100644 opal/mca/mpool/memkind/Makefile.am create mode 100644 opal/mca/mpool/memkind/configure.m4 create mode 100644 opal/mca/mpool/memkind/mpool_memkind.h create mode 100644 opal/mca/mpool/memkind/mpool_memkind_component.c create mode 100644 opal/mca/mpool/memkind/mpool_memkind_module.c create mode 100644 opal/mca/mpool/mpool.h create mode 100644 opal/mca/patcher/Makefile.am create mode 100644 opal/mca/patcher/base/Makefile.am create mode 100644 opal/mca/patcher/base/base.h create mode 100644 opal/mca/patcher/base/patcher_base_frame.c create mode 100644 opal/mca/patcher/base/patcher_base_patch.c create mode 100644 opal/mca/patcher/linux/Makefile.am create mode 100644 opal/mca/patcher/linux/configure.m4 create mode 100644 opal/mca/patcher/linux/patcher_linux.h create mode 100644 opal/mca/patcher/linux/patcher_linux_component.c create mode 100644 opal/mca/patcher/linux/patcher_linux_module.c create mode 100644 opal/mca/patcher/overwrite/Makefile.am create mode 100644 opal/mca/patcher/overwrite/configure.m4 create mode 100644 opal/mca/patcher/overwrite/patcher_overwrite.h create mode 100644 opal/mca/patcher/overwrite/patcher_overwrite_component.c create mode 100644 opal/mca/patcher/overwrite/patcher_overwrite_module.c create mode 100644 opal/mca/patcher/patcher.h create mode 100644 opal/mca/pmix/Makefile.am create mode 100644 opal/mca/pmix/base/Makefile.am create mode 100644 opal/mca/pmix/base/base.h create mode 100644 opal/mca/pmix/base/help-pmix-base.txt create mode 100644 opal/mca/pmix/base/pmix_base_fns.c create mode 100644 opal/mca/pmix/base/pmix_base_fns.h create mode 100644 opal/mca/pmix/base/pmix_base_frame.c create mode 100644 opal/mca/pmix/base/pmix_base_hash.c create mode 100644 opal/mca/pmix/base/pmix_base_hash.h create mode 100644 opal/mca/pmix/base/pmix_base_select.c create mode 100644 opal/mca/pmix/cray/Makefile.am create mode 100644 opal/mca/pmix/cray/configure.m4 create mode 100644 opal/mca/pmix/cray/help-pmix-cray.txt create mode 100644 opal/mca/pmix/cray/owner.txt create mode 100644 opal/mca/pmix/cray/pmix_cray.c create mode 100644 opal/mca/pmix/cray/pmix_cray.h create mode 100644 opal/mca/pmix/cray/pmix_cray_component.c create mode 100644 opal/mca/pmix/cray/pmix_cray_pmap_parser.c create mode 100644 opal/mca/pmix/cray/pmix_cray_pmap_parser.h create mode 100644 opal/mca/pmix/ext1x/Makefile.am create mode 100644 opal/mca/pmix/ext1x/configure.m4 create mode 100644 opal/mca/pmix/ext1x/pmix1x.c create mode 100644 opal/mca/pmix/ext1x/pmix1x.h create mode 100644 opal/mca/pmix/ext1x/pmix1x_client.c create mode 100644 opal/mca/pmix/ext1x/pmix1x_component.c create mode 100644 opal/mca/pmix/ext1x/pmix1x_server_north.c create mode 100644 opal/mca/pmix/ext1x/pmix1x_server_south.c create mode 100644 opal/mca/pmix/ext2x/Makefile.am create mode 100644 opal/mca/pmix/ext2x/common_sym_whitelist.txt create mode 100644 opal/mca/pmix/ext2x/configure.m4 create mode 100644 opal/mca/pmix/ext2x/pmix2x.c create mode 100644 opal/mca/pmix/ext2x/pmix2x.h create mode 100644 opal/mca/pmix/ext2x/pmix2x_client.c create mode 100644 opal/mca/pmix/ext2x/pmix2x_component.c create mode 100644 opal/mca/pmix/ext2x/pmix2x_server_north.c create mode 100644 opal/mca/pmix/ext2x/pmix2x_server_south.c create mode 100644 opal/mca/pmix/flux/Makefile.am create mode 100644 opal/mca/pmix/flux/configure.m4 create mode 100644 opal/mca/pmix/flux/owner.txt create mode 100644 opal/mca/pmix/flux/pmix_flux.c create mode 100644 opal/mca/pmix/flux/pmix_flux.h create mode 100644 opal/mca/pmix/flux/pmix_flux_component.c create mode 100644 opal/mca/pmix/isolated/Makefile.am create mode 100644 opal/mca/pmix/isolated/pmix_isolated.c create mode 100644 opal/mca/pmix/isolated/pmix_isolated.h create mode 100644 opal/mca/pmix/isolated/pmix_isolated_component.c create mode 100644 opal/mca/pmix/pmix.h create mode 100644 opal/mca/pmix/pmix2x/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/autogen.subdirs create mode 100644 opal/mca/pmix/pmix2x/common_sym_whitelist.txt create mode 100644 opal/mca/pmix/pmix2x/configure.m4 create mode 100644 opal/mca/pmix/pmix2x/help-pmix-pmix2x.txt create mode 100644 opal/mca/pmix/pmix2x/pmix/AUTHORS create mode 100644 opal/mca/pmix/pmix2x/pmix/INSTALL create mode 100644 opal/mca/pmix/pmix2x/pmix/LICENSE create mode 100644 opal/mca/pmix/pmix2x/pmix/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/NEWS create mode 100644 opal/mca/pmix/pmix2x/pmix/README create mode 100644 opal/mca/pmix/pmix2x/pmix/VERSION create mode 100755 opal/mca/pmix/pmix2x/pmix/autogen.pl create mode 100644 opal/mca/pmix/pmix2x/pmix/config/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/config/c_get_alignment.m4 create mode 100755 opal/mca/pmix/pmix2x/pmix/config/distscript.sh create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_check_attributes.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_check_broken_qsort.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_check_compiler_version.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_check_icc.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_check_ident.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_check_lock.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_check_os_flavors.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_check_package.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_check_psm2.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_check_pthread_pids.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_check_vendor.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_check_visibility.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_check_withdir.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_config_asm.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_config_pthreads.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_config_subdir.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_config_subdir_args.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_config_threads.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_ensure_contains_optflags.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_functions.m4 create mode 100755 opal/mca/pmix/pmix2x/pmix/config/pmix_get_version.sh create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_load_platform.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_mca.m4 create mode 100755 opal/mca/pmix/pmix2x/pmix/config/pmix_mca_priority_sort.pl create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_search_libs.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_setup_cc.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_setup_libevent.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_setup_zlib.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/config/pmix_try_assemble.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/configure.ac create mode 100644 opal/mca/pmix/pmix2x/pmix/contrib/Makefile.am create mode 100755 opal/mca/pmix/pmix2x/pmix/contrib/buildrpm.sh create mode 100755 opal/mca/pmix/pmix2x/pmix/contrib/cron-run-all-md2nroff.pl create mode 100755 opal/mca/pmix/pmix2x/pmix/contrib/make_dist_tarball create mode 100755 opal/mca/pmix/pmix2x/pmix/contrib/md2nroff.pl create mode 100644 opal/mca/pmix/pmix2x/pmix/contrib/perf_tools/Makefile create mode 100644 opal/mca/pmix/pmix2x/pmix/contrib/perf_tools/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/contrib/perf_tools/README create mode 100644 opal/mca/pmix/pmix2x/pmix/contrib/perf_tools/pmi.h create mode 100644 opal/mca/pmix/pmix2x/pmix/contrib/perf_tools/pmi2.c create mode 100644 opal/mca/pmix/pmix2x/pmix/contrib/perf_tools/pmi2_pmap_parser.c create mode 100644 opal/mca/pmix/pmix2x/pmix/contrib/perf_tools/pmi2_pmap_parser.h create mode 100644 opal/mca/pmix/pmix2x/pmix/contrib/perf_tools/pmi2_utils.c create mode 100644 opal/mca/pmix/pmix2x/pmix/contrib/perf_tools/pmi2_utils.h create mode 100644 opal/mca/pmix/pmix2x/pmix/contrib/perf_tools/pmi_intra_perf.c create mode 100644 opal/mca/pmix/pmix2x/pmix/contrib/perf_tools/pmix.c create mode 100755 opal/mca/pmix/pmix2x/pmix/contrib/perf_tools/run.sh create mode 100644 opal/mca/pmix/pmix2x/pmix/contrib/platform/optimized create mode 100755 opal/mca/pmix/pmix2x/pmix/contrib/pmix-release.sh create mode 100644 opal/mca/pmix/pmix2x/pmix/contrib/pmix-valgrind.supp create mode 100644 opal/mca/pmix/pmix2x/pmix/contrib/pmix.spec create mode 100755 opal/mca/pmix/pmix2x/pmix/contrib/pmix_jenkins.sh create mode 100755 opal/mca/pmix/pmix2x/pmix/contrib/update-my-copyright.pl create mode 100755 opal/mca/pmix/pmix2x/pmix/contrib/whitespace-purge.sh create mode 100644 opal/mca/pmix/pmix2x/pmix/examples/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/examples/alloc.c create mode 100644 opal/mca/pmix/pmix2x/pmix/examples/client.c create mode 100644 opal/mca/pmix/pmix2x/pmix/examples/debugger.c create mode 100644 opal/mca/pmix/pmix2x/pmix/examples/debuggerd.c create mode 100644 opal/mca/pmix/pmix2x/pmix/examples/dmodex.c create mode 100644 opal/mca/pmix/pmix2x/pmix/examples/dynamic.c create mode 100644 opal/mca/pmix/pmix2x/pmix/examples/fault.c create mode 100644 opal/mca/pmix/pmix2x/pmix/examples/jctrl.c create mode 100644 opal/mca/pmix/pmix2x/pmix/examples/pub.c create mode 100644 opal/mca/pmix/pmix2x/pmix/examples/server.c create mode 100644 opal/mca/pmix/pmix2x/pmix/examples/tool.c create mode 100644 opal/mca/pmix/pmix2x/pmix/include/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/include/pmi.h create mode 100644 opal/mca/pmix/pmix2x/pmix/include/pmi2.h create mode 100644 opal/mca/pmix/pmix2x/pmix/include/pmix.h create mode 100644 opal/mca/pmix/pmix2x/pmix/include/pmix_common.h create mode 100755 opal/mca/pmix/pmix2x/pmix/include/pmix_rename.h.in create mode 100644 opal/mca/pmix/pmix2x/pmix/include/pmix_server.h create mode 100644 opal/mca/pmix/pmix2x/pmix/include/pmix_tool.h create mode 100644 opal/mca/pmix/pmix2x/pmix/include/pmix_version.h.in create mode 100644 opal/mca/pmix/pmix2x/pmix/man/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/man/README create mode 100644 opal/mca/pmix/pmix2x/pmix/man/man3/pmix_abort.3 create mode 100644 opal/mca/pmix/pmix2x/pmix/man/man3/pmix_commit.3 create mode 100644 opal/mca/pmix/pmix2x/pmix/man/man3/pmix_finalize.3 create mode 100644 opal/mca/pmix/pmix2x/pmix/man/man3/pmix_init.3 create mode 100644 opal/mca/pmix/pmix2x/pmix/man/man3/pmix_initialized.3 create mode 100644 opal/mca/pmix/pmix2x/pmix/man/man3/pmix_put.3 create mode 100644 opal/mca/pmix/pmix2x/pmix/man/man7/pmix.7 create mode 100644 opal/mca/pmix/pmix2x/pmix/man/man7/pmix_constants.7 create mode 100644 opal/mca/pmix/pmix2x/pmix/src/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/architecture.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/arm/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/arm/atomic.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/arm/timer.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/arm64/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/arm64/atomic.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/arm64/timer.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/atomic.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/atomic_impl.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/cma.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/gcc_builtin/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/gcc_builtin/atomic.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/ia32/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/ia32/atomic.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/ia32/timer.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/ia64/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/ia64/atomic.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/ia64/timer.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/mips/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/mips/atomic.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/mips/timer.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/powerpc/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/powerpc/atomic.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/powerpc/timer.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/sparcv9/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/sparcv9/atomic.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/sparcv9/timer.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/sync_builtin/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/sync_builtin/atomic.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/timer.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/x86_64/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/x86_64/atomic.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/atomics/sys/x86_64/timer.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/buffer_ops/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/buffer_ops/buffer_ops.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/buffer_ops/copy.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/buffer_ops/internal.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/buffer_ops/internal_functions.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/buffer_ops/open_close.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/buffer_ops/pack.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/buffer_ops/print.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/buffer_ops/types.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/buffer_ops/unpack.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/class/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/class/pmix_hash_table.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/class/pmix_hash_table.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/class/pmix_hotel.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/class/pmix_hotel.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/class/pmix_list.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/class/pmix_list.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/class/pmix_object.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/class/pmix_object.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/class/pmix_pointer_array.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/class/pmix_pointer_array.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/class/pmix_ring_buffer.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/class/pmix_ring_buffer.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/class/pmix_value_array.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/class/pmix_value_array.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/client/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/client/pmi1.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/client/pmi2.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/client/pmix_client.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/client/pmix_client_connect.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/client/pmix_client_fence.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/client/pmix_client_get.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/client/pmix_client_ops.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/client/pmix_client_pub.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/client/pmix_client_spawn.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/common/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/common/pmix_control.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/common/pmix_data.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/common/pmix_jobdata.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/common/pmix_log.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/common/pmix_query.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/common/pmix_strings.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/dstore/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/dstore/pmix_dstore.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/dstore/pmix_dstore.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/dstore/pmix_esh.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/dstore/pmix_esh.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/event/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/event/pmix_event.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/event/pmix_event_notification.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/event/pmix_event_registration.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/include/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/include/align.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/include/hash_string.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/include/pmix_config_bottom.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/include/pmix_config_top.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/include/pmix_globals.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/include/pmix_globals.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/include/pmix_jobdata.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/include/pmix_socket_errno.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/include/pmix_stdint.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/include/prefetch.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/include/types.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/base.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/help-mca-base.txt create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/help-mca-var.txt create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_close.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_component_compare.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_component_find.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_component_repository.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_component_repository.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_components_close.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_components_open.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_components_register.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_components_select.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_framework.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_framework.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_list.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_open.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_parse_paramfile.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_var.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_var.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_var_enum.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_var_enum.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_var_group.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_var_group.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/base/pmix_mca_base_vari.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/mca.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/base/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/base/base.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/base/pdl_base_close.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/base/pdl_base_fns.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/base/pdl_base_open.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/base/pdl_base_select.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/configure.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/pdl.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/pdlopen/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/pdlopen/configure.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/pdlopen/pdl_pdlopen.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/pdlopen/pdl_pdlopen_component.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/pdlopen/pdl_pdlopen_module.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/plibltdl/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/plibltdl/configure.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/plibltdl/pdl_libltdl.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/plibltdl/pdl_libltdl_component.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pdl/plibltdl/pdl_libltdl_module.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/base/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/base/base.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/base/pif_base_components.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/bsdx_ipv4/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/bsdx_ipv4/configure.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/bsdx_ipv4/pif_bsdx.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/bsdx_ipv6/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/bsdx_ipv6/configure.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/bsdx_ipv6/pif_bsdx_ipv6.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/linux_ipv6/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/linux_ipv6/configure.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/linux_ipv6/pif_linux_ipv6.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/pif.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/posix_ipv4/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/posix_ipv4/configure.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/posix_ipv4/pif_posix.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/solaris_ipv6/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/solaris_ipv6/configure.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pif/solaris_ipv6/pif_solaris_ipv6.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pinstalldirs/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pinstalldirs/base/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pinstalldirs/base/base.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pinstalldirs/base/pinstalldirs_base_components.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pinstalldirs/base/pinstalldirs_base_expand.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pinstalldirs/config/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pinstalldirs/config/configure.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pinstalldirs/config/pinstall_dirs.h.in create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pinstalldirs/config/pmix_pinstalldirs_config.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pinstalldirs/configure.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pinstalldirs/env/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pinstalldirs/env/configure.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pinstalldirs/env/pmix_pinstalldirs_env.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pinstalldirs/pinstalldirs.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pnet/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pnet/base/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pnet/base/base.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pnet/base/pnet_base_fns.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pnet/base/pnet_base_frame.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pnet/base/pnet_base_select.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pnet/opa/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pnet/opa/configure.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pnet/opa/pnet_opa.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pnet/opa/pnet_opa.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pnet/opa/pnet_opa_component.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/pnet/pnet.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/base/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/base/base.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/base/psec_base_fns.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/base/psec_base_frame.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/base/psec_base_select.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/munge/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/munge/configure.m4 create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/munge/psec_munge.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/munge/psec_munge.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/munge/psec_munge_component.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/native/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/native/psec_native.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/native/psec_native.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/native/psec_native_component.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/none/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/none/psec_none.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/none/psec_none.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/none/psec_none_component.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psec/psec.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psensor/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psensor/base/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psensor/base/base.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psensor/base/psensor_base_frame.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psensor/base/psensor_base_select.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psensor/base/psensor_base_stubs.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psensor/file/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psensor/file/help-pmix-psensor-file.txt create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psensor/file/psensor_file.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psensor/file/psensor_file.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psensor/file/psensor_file_component.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psensor/heartbeat/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psensor/heartbeat/help-pmix-psensor-heartbeat.txt create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psensor/heartbeat/psensor_heartbeat.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psensor/heartbeat/psensor_heartbeat.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psensor/heartbeat/psensor_heartbeat_component.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/psensor/psensor.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/base/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/base/base.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/base/ptl_base_connect.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/base/ptl_base_frame.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/base/ptl_base_listener.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/base/ptl_base_select.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/base/ptl_base_sendrecv.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/base/ptl_base_stubs.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/ptl.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/ptl_types.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/tcp/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/tcp/ptl_tcp.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/tcp/ptl_tcp.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/tcp/ptl_tcp_component.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/usock/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/usock/ptl_usock.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/usock/ptl_usock.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/mca/ptl/usock/ptl_usock_component.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/runtime/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/runtime/help-pmix-runtime.txt create mode 100644 opal/mca/pmix/pmix2x/pmix/src/runtime/pmix_finalize.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/runtime/pmix_init.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/runtime/pmix_params.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/runtime/pmix_progress_threads.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/runtime/pmix_progress_threads.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/runtime/pmix_rte.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/server/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/server/help-pmix-server.txt create mode 100644 opal/mca/pmix/pmix2x/pmix/src/server/pmix_server.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/server/pmix_server_get.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/server/pmix_server_ops.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/server/pmix_server_ops.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/server/pmix_server_regex.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/sm/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/sm/pmix_mmap.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/sm/pmix_mmap.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/sm/pmix_sm.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/sm/pmix_sm.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/threads/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/threads/mutex.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/threads/mutex.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/threads/mutex_unix.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/threads/thread.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/threads/thread_usage.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/threads/threads.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/threads/tsd.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/threads/wait_sync.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/threads/wait_sync.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/tool/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/tool/pmix_tool.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/Makefile.include create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/alfg.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/alfg.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/argv.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/argv.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/basename.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/basename.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/compress.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/compress.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/crc.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/crc.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/error.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/error.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/fd.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/fd.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/getid.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/getid.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/hash.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/hash.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/keyval/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/keyval/keyval_lex.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/keyval/keyval_lex.l create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/keyval_parse.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/keyval_parse.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/net.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/net.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/os_path.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/os_path.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/output.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/output.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/parse_options.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/parse_options.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/path.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/path.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/pif.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/pif.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/pmix_environ.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/pmix_environ.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/printf.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/printf.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/show_help.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/show_help.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/show_help_lex.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/show_help_lex.l create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/strnlen.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/timings.c create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/timings.h create mode 100644 opal/mca/pmix/pmix2x/pmix/src/util/tsd.h create mode 100644 opal/mca/pmix/pmix2x/pmix/test/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/test/README create mode 100644 opal/mca/pmix/pmix2x/pmix/test/cli_stages.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/cli_stages.h create mode 100644 opal/mca/pmix/pmix2x/pmix/test/pmi2_client.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/pmi_client.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/pmix_client.c create mode 100755 opal/mca/pmix/pmix2x/pmix/test/pmix_client_otheruser.sh create mode 100644 opal/mca/pmix/pmix2x/pmix/test/pmix_regex.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/pmix_test.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/server_callbacks.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/server_callbacks.h create mode 100644 opal/mca/pmix/pmix2x/pmix/test/simple/Makefile.am create mode 100644 opal/mca/pmix/pmix2x/pmix/test/simple/simpclient.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/simple/simpdie.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/simple/simpdmodex.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/simple/simpdyn.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/simple/simpft.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/simple/simppub.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/simple/simptest.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/simple/simptool.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/simple/test_pmix.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/test_cd.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/test_cd.h create mode 100644 opal/mca/pmix/pmix2x/pmix/test/test_common.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/test_common.h create mode 100644 opal/mca/pmix/pmix2x/pmix/test/test_error.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/test_error.h create mode 100644 opal/mca/pmix/pmix2x/pmix/test/test_fence.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/test_fence.h create mode 100644 opal/mca/pmix/pmix2x/pmix/test/test_internal.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/test_internal.h create mode 100644 opal/mca/pmix/pmix2x/pmix/test/test_publish.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/test_publish.h create mode 100644 opal/mca/pmix/pmix2x/pmix/test/test_replace.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/test_replace.h create mode 100644 opal/mca/pmix/pmix2x/pmix/test/test_resolve_peers.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/test_resolve_peers.h create mode 100644 opal/mca/pmix/pmix2x/pmix/test/test_spawn.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/test_spawn.h create mode 100644 opal/mca/pmix/pmix2x/pmix/test/utils.c create mode 100644 opal/mca/pmix/pmix2x/pmix/test/utils.h create mode 100644 opal/mca/pmix/pmix2x/pmix2x.c create mode 100644 opal/mca/pmix/pmix2x/pmix2x.h create mode 100644 opal/mca/pmix/pmix2x/pmix2x_client.c create mode 100644 opal/mca/pmix/pmix2x/pmix2x_component.c create mode 100644 opal/mca/pmix/pmix2x/pmix2x_server_north.c create mode 100644 opal/mca/pmix/pmix2x/pmix2x_server_south.c create mode 100644 opal/mca/pmix/pmix_server.h create mode 100644 opal/mca/pmix/pmix_types.h create mode 100644 opal/mca/pmix/s1/Makefile.am create mode 100644 opal/mca/pmix/s1/configure.m4 create mode 100644 opal/mca/pmix/s1/owner.txt create mode 100644 opal/mca/pmix/s1/pmix_s1.c create mode 100644 opal/mca/pmix/s1/pmix_s1.h create mode 100644 opal/mca/pmix/s1/pmix_s1_component.c create mode 100644 opal/mca/pmix/s2/Makefile.am create mode 100644 opal/mca/pmix/s2/configure.m4 create mode 100644 opal/mca/pmix/s2/owner.txt create mode 100644 opal/mca/pmix/s2/pmi2_pmap_parser.c create mode 100644 opal/mca/pmix/s2/pmi2_pmap_parser.h create mode 100644 opal/mca/pmix/s2/pmix_s2.c create mode 100644 opal/mca/pmix/s2/pmix_s2.h create mode 100644 opal/mca/pmix/s2/pmix_s2_component.c create mode 100644 opal/mca/pstat/Makefile.am create mode 100644 opal/mca/pstat/base/Makefile.am create mode 100644 opal/mca/pstat/base/base.h create mode 100644 opal/mca/pstat/base/pstat_base_open.c create mode 100644 opal/mca/pstat/base/pstat_base_select.c create mode 100644 opal/mca/pstat/configure.m4 create mode 100644 opal/mca/pstat/linux/Makefile.am create mode 100644 opal/mca/pstat/linux/configure.m4 create mode 100644 opal/mca/pstat/linux/owner.txt create mode 100644 opal/mca/pstat/linux/pstat_linux.h create mode 100644 opal/mca/pstat/linux/pstat_linux_component.c create mode 100644 opal/mca/pstat/linux/pstat_linux_module.c create mode 100644 opal/mca/pstat/pstat.h create mode 100644 opal/mca/pstat/test/Makefile.am create mode 100644 opal/mca/pstat/test/configure.m4 create mode 100644 opal/mca/pstat/test/owner.txt create mode 100644 opal/mca/pstat/test/pstat_test.c create mode 100644 opal/mca/pstat/test/pstat_test.h create mode 100644 opal/mca/pstat/test/pstat_test_component.c create mode 100644 opal/mca/rcache/Makefile.am create mode 100644 opal/mca/rcache/base/Makefile.am create mode 100644 opal/mca/rcache/base/base.h create mode 100644 opal/mca/rcache/base/help-rcache-base.txt create mode 100644 opal/mca/rcache/base/rcache_base_create.c create mode 100644 opal/mca/rcache/base/rcache_base_frame.c create mode 100644 opal/mca/rcache/base/rcache_base_mem_cb.c create mode 100644 opal/mca/rcache/base/rcache_base_mem_cb.h create mode 100644 opal/mca/rcache/base/rcache_base_vma.c create mode 100644 opal/mca/rcache/base/rcache_base_vma.h create mode 100644 opal/mca/rcache/base/rcache_base_vma_tree.c create mode 100644 opal/mca/rcache/base/rcache_base_vma_tree.h create mode 100644 opal/mca/rcache/gpusm/Makefile.am create mode 100644 opal/mca/rcache/gpusm/configure.m4 create mode 100644 opal/mca/rcache/gpusm/owner.txt create mode 100644 opal/mca/rcache/gpusm/rcache_gpusm.h create mode 100644 opal/mca/rcache/gpusm/rcache_gpusm_component.c create mode 100644 opal/mca/rcache/gpusm/rcache_gpusm_module.c create mode 100644 opal/mca/rcache/grdma/Makefile.am create mode 100644 opal/mca/rcache/grdma/owner.txt create mode 100644 opal/mca/rcache/grdma/rcache_grdma.h create mode 100644 opal/mca/rcache/grdma/rcache_grdma_component.c create mode 100644 opal/mca/rcache/grdma/rcache_grdma_module.c create mode 100644 opal/mca/rcache/rcache.h create mode 100644 opal/mca/rcache/rgpusm/Makefile.am create mode 100644 opal/mca/rcache/rgpusm/configure.m4 create mode 100644 opal/mca/rcache/rgpusm/owner.txt create mode 100644 opal/mca/rcache/rgpusm/rcache_rgpusm.h create mode 100644 opal/mca/rcache/rgpusm/rcache_rgpusm_component.c create mode 100644 opal/mca/rcache/rgpusm/rcache_rgpusm_module.c create mode 100644 opal/mca/rcache/udreg/Makefile.am create mode 100644 opal/mca/rcache/udreg/configure.m4 create mode 100644 opal/mca/rcache/udreg/owner.txt create mode 100644 opal/mca/rcache/udreg/rcache_udreg.h create mode 100644 opal/mca/rcache/udreg/rcache_udreg_component.c create mode 100644 opal/mca/rcache/udreg/rcache_udreg_module.c create mode 100644 opal/mca/shmem/Makefile.am create mode 100644 opal/mca/shmem/base/Makefile.am create mode 100644 opal/mca/shmem/base/base.h create mode 100644 opal/mca/shmem/base/owner.txt create mode 100644 opal/mca/shmem/base/shmem_base_close.c create mode 100644 opal/mca/shmem/base/shmem_base_open.c create mode 100644 opal/mca/shmem/base/shmem_base_select.c create mode 100644 opal/mca/shmem/base/shmem_base_wrappers.c create mode 100644 opal/mca/shmem/mmap/Makefile.am create mode 100644 opal/mca/shmem/mmap/configure.m4 create mode 100644 opal/mca/shmem/mmap/help-opal-shmem-mmap.txt create mode 100644 opal/mca/shmem/mmap/owner.txt create mode 100644 opal/mca/shmem/mmap/shmem_mmap.h create mode 100644 opal/mca/shmem/mmap/shmem_mmap_component.c create mode 100644 opal/mca/shmem/mmap/shmem_mmap_module.c create mode 100644 opal/mca/shmem/posix/Makefile.am create mode 100644 opal/mca/shmem/posix/configure.m4 create mode 100644 opal/mca/shmem/posix/help-opal-shmem-posix.txt create mode 100644 opal/mca/shmem/posix/owner.txt create mode 100644 opal/mca/shmem/posix/shmem_posix.h create mode 100644 opal/mca/shmem/posix/shmem_posix_common_utils.c create mode 100644 opal/mca/shmem/posix/shmem_posix_common_utils.h create mode 100644 opal/mca/shmem/posix/shmem_posix_component.c create mode 100644 opal/mca/shmem/posix/shmem_posix_module.c create mode 100644 opal/mca/shmem/shmem.h create mode 100644 opal/mca/shmem/shmem_types.h create mode 100644 opal/mca/shmem/sysv/Makefile.am create mode 100644 opal/mca/shmem/sysv/configure.m4 create mode 100644 opal/mca/shmem/sysv/help-opal-shmem-sysv.txt create mode 100644 opal/mca/shmem/sysv/owner.txt create mode 100644 opal/mca/shmem/sysv/shmem_sysv.h create mode 100644 opal/mca/shmem/sysv/shmem_sysv_component.c create mode 100644 opal/mca/shmem/sysv/shmem_sysv_module.c create mode 100644 opal/mca/timer/Makefile.am create mode 100644 opal/mca/timer/altix/Makefile.am create mode 100644 opal/mca/timer/altix/configure.m4 create mode 100644 opal/mca/timer/altix/owner.txt create mode 100644 opal/mca/timer/altix/timer_altix.h create mode 100644 opal/mca/timer/altix/timer_altix_component.c create mode 100644 opal/mca/timer/base/Makefile.am create mode 100644 opal/mca/timer/base/base.h create mode 100644 opal/mca/timer/base/owner.txt create mode 100644 opal/mca/timer/base/timer_base_null.h create mode 100644 opal/mca/timer/base/timer_base_open.c create mode 100644 opal/mca/timer/configure.m4 create mode 100644 opal/mca/timer/darwin/Makefile.am create mode 100644 opal/mca/timer/darwin/configure.m4 create mode 100644 opal/mca/timer/darwin/owner.txt create mode 100644 opal/mca/timer/darwin/timer_darwin.h create mode 100644 opal/mca/timer/darwin/timer_darwin_component.c create mode 100644 opal/mca/timer/linux/Makefile.am create mode 100644 opal/mca/timer/linux/configure.m4 create mode 100644 opal/mca/timer/linux/help-opal-timer-linux.txt create mode 100644 opal/mca/timer/linux/owner.txt create mode 100644 opal/mca/timer/linux/timer_linux.h create mode 100644 opal/mca/timer/linux/timer_linux_component.c create mode 100644 opal/mca/timer/solaris/Makefile.am create mode 100644 opal/mca/timer/solaris/configure.m4 create mode 100644 opal/mca/timer/solaris/owner.txt create mode 100644 opal/mca/timer/solaris/timer_solaris.h create mode 100644 opal/mca/timer/solaris/timer_solaris_component.c create mode 100644 opal/mca/timer/timer.h create mode 100644 opal/memoryhooks/Makefile.am create mode 100644 opal/memoryhooks/memory.c create mode 100644 opal/memoryhooks/memory.h create mode 100644 opal/memoryhooks/memory_internal.h create mode 100644 opal/runtime/Makefile.am create mode 100644 opal/runtime/help-opal-runtime.txt create mode 100644 opal/runtime/help-opal_info.txt create mode 100644 opal/runtime/opal.h create mode 100644 opal/runtime/opal_cr.c create mode 100644 opal/runtime/opal_cr.h create mode 100644 opal/runtime/opal_finalize.c create mode 100644 opal/runtime/opal_info_support.c create mode 100644 opal/runtime/opal_info_support.h create mode 100644 opal/runtime/opal_init.c create mode 100644 opal/runtime/opal_params.c create mode 100644 opal/runtime/opal_params.h create mode 100644 opal/runtime/opal_progress.c create mode 100644 opal/runtime/opal_progress.h create mode 100644 opal/runtime/opal_progress_threads.c create mode 100644 opal/runtime/opal_progress_threads.h create mode 100644 opal/threads/Makefile.am create mode 100644 opal/threads/condition.c create mode 100644 opal/threads/condition.h create mode 100644 opal/threads/mutex.c create mode 100644 opal/threads/mutex.h create mode 100644 opal/threads/mutex_unix.h create mode 100644 opal/threads/thread.c create mode 100644 opal/threads/thread_usage.h create mode 100644 opal/threads/threads.h create mode 100644 opal/threads/tsd.h create mode 100644 opal/threads/wait_sync.c create mode 100644 opal/threads/wait_sync.h create mode 100644 opal/tools/Makefile.am create mode 100644 opal/tools/opal-checkpoint/Makefile.am create mode 100644 opal/tools/opal-checkpoint/help-opal-checkpoint.txt create mode 100644 opal/tools/opal-checkpoint/opal-checkpoint.1in create mode 100644 opal/tools/opal-checkpoint/opal-checkpoint.c create mode 100644 opal/tools/opal-restart/Makefile.am create mode 100644 opal/tools/opal-restart/help-opal-restart.txt create mode 100644 opal/tools/opal-restart/opal-restart.1in create mode 100644 opal/tools/opal-restart/opal-restart.c create mode 100644 opal/tools/wrappers/Makefile.am create mode 100644 opal/tools/wrappers/generic_wrapper.1in create mode 100644 opal/tools/wrappers/help-opal-wrapper.txt create mode 100644 opal/tools/wrappers/opal.pc.in create mode 100644 opal/tools/wrappers/opal_wrapper.1in create mode 100644 opal/tools/wrappers/opal_wrapper.c create mode 100644 opal/tools/wrappers/opalc++-wrapper-data.txt.in create mode 100644 opal/tools/wrappers/opalcc-wrapper-data.txt.in create mode 100644 opal/util/Makefile.am create mode 100644 opal/util/alfg.c create mode 100644 opal/util/alfg.h create mode 100644 opal/util/arch.c create mode 100644 opal/util/arch.h create mode 100644 opal/util/argv.c create mode 100644 opal/util/argv.h create mode 100644 opal/util/basename.c create mode 100644 opal/util/basename.h create mode 100644 opal/util/bit_ops.h create mode 100644 opal/util/cmd_line.c create mode 100644 opal/util/cmd_line.h create mode 100644 opal/util/crc.c create mode 100644 opal/util/crc.h create mode 100644 opal/util/daemon_init.c create mode 100644 opal/util/daemon_init.h create mode 100644 opal/util/error.c create mode 100644 opal/util/error.h create mode 100644 opal/util/ethtool.c create mode 100644 opal/util/ethtool.h create mode 100644 opal/util/fd.c create mode 100644 opal/util/fd.h create mode 100644 opal/util/few.c create mode 100644 opal/util/few.h create mode 100644 opal/util/help-opal-util.txt create mode 100644 opal/util/if.c create mode 100644 opal/util/if.h create mode 100644 opal/util/keyval/Makefile.am create mode 100644 opal/util/keyval/keyval_lex.h create mode 100644 opal/util/keyval/keyval_lex.l create mode 100644 opal/util/keyval_parse.c create mode 100644 opal/util/keyval_parse.h create mode 100644 opal/util/malloc.c create mode 100644 opal/util/malloc.h create mode 100644 opal/util/net.c create mode 100644 opal/util/net.h create mode 100644 opal/util/numtostr.c create mode 100644 opal/util/numtostr.h create mode 100644 opal/util/opal_environ.c create mode 100644 opal/util/opal_environ.h create mode 100644 opal/util/opal_getcwd.c create mode 100644 opal/util/opal_getcwd.h create mode 100644 opal/util/opal_pty.c create mode 100644 opal/util/opal_pty.h create mode 100644 opal/util/os_dirpath.c create mode 100644 opal/util/os_dirpath.h create mode 100644 opal/util/os_path.c create mode 100644 opal/util/os_path.h create mode 100644 opal/util/output.c create mode 100644 opal/util/output.h create mode 100644 opal/util/path.c create mode 100644 opal/util/path.h create mode 100644 opal/util/printf.c create mode 100644 opal/util/printf.h create mode 100644 opal/util/proc.c create mode 100644 opal/util/proc.h create mode 100644 opal/util/qsort.c create mode 100644 opal/util/qsort.h create mode 100644 opal/util/show_help.c create mode 100644 opal/util/show_help.h create mode 100644 opal/util/show_help_lex.h create mode 100644 opal/util/show_help_lex.l create mode 100644 opal/util/stacktrace.c create mode 100644 opal/util/stacktrace.h create mode 100644 opal/util/strncpy.c create mode 100644 opal/util/strncpy.h create mode 100644 opal/util/sys_limits.c create mode 100644 opal/util/sys_limits.h create mode 100644 opal/util/timings.c create mode 100644 opal/util/timings.h create mode 100644 opal/util/uri.c create mode 100644 opal/util/uri.h create mode 100644 opal/win32/opal_inet.c create mode 100644 opal/win32/opal_inet.h create mode 100644 opal/win32/opal_misc.h create mode 100644 opal/win32/opal_process.c create mode 100644 opal/win32/opal_process.h create mode 100644 opal/win32/opal_socket.c create mode 100644 opal/win32/opal_socket.h create mode 100644 opal/win32/opal_time.c create mode 100644 opal/win32/opal_time.h create mode 100644 opal/win32/opal_uio.c create mode 100644 opal/win32/opal_uio.h create mode 100644 opal/win32/opal_util.h create mode 100644 opal/win32/opal_utsname.c create mode 100644 opal/win32/opal_utsname.h create mode 100644 opal/win32/win_compat.h create mode 100644 opal/win_makefile create mode 100644 orte/Doxyfile create mode 100644 orte/Makefile.am create mode 100644 orte/bindings/README create mode 100644 orte/bindings/python/README create mode 100755 orte/bindings/python/examples/submit.py create mode 100644 orte/bindings/python/setup.py create mode 100644 orte/bindings/python/src/orte-cffi/build.py create mode 100644 orte/common_sym_whitelist.txt create mode 100644 orte/etc/Makefile.am create mode 100644 orte/etc/openmpi-default-hostfile create mode 100644 orte/include/Makefile.am create mode 100644 orte/include/orte/Makefile.am create mode 100644 orte/include/orte/constants.h create mode 100644 orte/include/orte/types.h create mode 100644 orte/include/orte/version.h.in create mode 100644 orte/include/orte_config.h create mode 100644 orte/mca/Makefile.am create mode 100644 orte/mca/common/Makefile.am create mode 100644 orte/mca/common/alps/Makefile.am create mode 100644 orte/mca/common/alps/common_alps.c create mode 100644 orte/mca/common/alps/common_alps.h create mode 100644 orte/mca/common/alps/configure.m4 create mode 100644 orte/mca/common/alps/owner.txt create mode 100644 orte/mca/dfs/Makefile.am create mode 100644 orte/mca/dfs/app/Makefile.am create mode 100644 orte/mca/dfs/app/dfs_app.c create mode 100644 orte/mca/dfs/app/dfs_app.h create mode 100644 orte/mca/dfs/app/dfs_app_component.c create mode 100644 orte/mca/dfs/app/owner.txt create mode 100644 orte/mca/dfs/base/Makefile.am create mode 100644 orte/mca/dfs/base/base.h create mode 100644 orte/mca/dfs/base/dfs_base_frame.c create mode 100644 orte/mca/dfs/base/dfs_base_select.c create mode 100644 orte/mca/dfs/base/owner.txt create mode 100644 orte/mca/dfs/dfs.h create mode 100644 orte/mca/dfs/dfs_types.h create mode 100644 orte/mca/dfs/orted/Makefile.am create mode 100644 orte/mca/dfs/orted/dfs_orted.c create mode 100644 orte/mca/dfs/orted/dfs_orted.h create mode 100644 orte/mca/dfs/orted/dfs_orted_component.c create mode 100644 orte/mca/dfs/orted/owner.txt create mode 100644 orte/mca/dfs/test/Makefile.am create mode 100644 orte/mca/dfs/test/dfs_test.c create mode 100644 orte/mca/dfs/test/dfs_test.h create mode 100644 orte/mca/dfs/test/dfs_test_component.c create mode 100644 orte/mca/errmgr/Makefile.am create mode 100644 orte/mca/errmgr/base/Makefile.am create mode 100644 orte/mca/errmgr/base/base.h create mode 100644 orte/mca/errmgr/base/errmgr_base_fns.c create mode 100644 orte/mca/errmgr/base/errmgr_base_frame.c create mode 100644 orte/mca/errmgr/base/errmgr_base_select.c create mode 100644 orte/mca/errmgr/base/errmgr_private.h create mode 100644 orte/mca/errmgr/base/help-errmgr-base.txt create mode 100644 orte/mca/errmgr/base/owner.txt create mode 100644 orte/mca/errmgr/default_app/Makefile.am create mode 100644 orte/mca/errmgr/default_app/errmgr_default_app.c create mode 100644 orte/mca/errmgr/default_app/errmgr_default_app.h create mode 100644 orte/mca/errmgr/default_app/errmgr_default_app_component.c create mode 100644 orte/mca/errmgr/default_app/owner.txt create mode 100644 orte/mca/errmgr/default_hnp/Makefile.am create mode 100644 orte/mca/errmgr/default_hnp/errmgr_default_hnp.c create mode 100644 orte/mca/errmgr/default_hnp/errmgr_default_hnp.h create mode 100644 orte/mca/errmgr/default_hnp/errmgr_default_hnp_component.c create mode 100644 orte/mca/errmgr/default_hnp/owner.txt create mode 100644 orte/mca/errmgr/default_orted/Makefile.am create mode 100644 orte/mca/errmgr/default_orted/errmgr_default_orted.c create mode 100644 orte/mca/errmgr/default_orted/errmgr_default_orted.h create mode 100644 orte/mca/errmgr/default_orted/errmgr_default_orted_component.c create mode 100644 orte/mca/errmgr/default_orted/owner.txt create mode 100644 orte/mca/errmgr/default_tool/Makefile.am create mode 100644 orte/mca/errmgr/default_tool/errmgr_default_tool.c create mode 100644 orte/mca/errmgr/default_tool/errmgr_default_tool.h create mode 100644 orte/mca/errmgr/default_tool/errmgr_default_tool_component.c create mode 100644 orte/mca/errmgr/default_tool/owner.txt create mode 100644 orte/mca/errmgr/dvm/Makefile.am create mode 100644 orte/mca/errmgr/dvm/errmgr_dvm.c create mode 100644 orte/mca/errmgr/dvm/errmgr_dvm.h create mode 100644 orte/mca/errmgr/dvm/errmgr_dvm_component.c create mode 100644 orte/mca/errmgr/dvm/owner.txt create mode 100644 orte/mca/errmgr/errmgr.h create mode 100644 orte/mca/ess/Makefile.am create mode 100644 orte/mca/ess/alps/Makefile.am create mode 100644 orte/mca/ess/alps/configure.m4 create mode 100644 orte/mca/ess/alps/ess_alps.h create mode 100644 orte/mca/ess/alps/ess_alps_component.c create mode 100644 orte/mca/ess/alps/ess_alps_module.c create mode 100644 orte/mca/ess/alps/ess_alps_utils.c create mode 100644 orte/mca/ess/alps/owner.txt create mode 100644 orte/mca/ess/base/Makefile.am create mode 100644 orte/mca/ess/base/base.h create mode 100644 orte/mca/ess/base/ess_base_fns.c create mode 100644 orte/mca/ess/base/ess_base_frame.c create mode 100644 orte/mca/ess/base/ess_base_get.c create mode 100644 orte/mca/ess/base/ess_base_select.c create mode 100644 orte/mca/ess/base/ess_base_std_app.c create mode 100644 orte/mca/ess/base/ess_base_std_orted.c create mode 100644 orte/mca/ess/base/ess_base_std_prolog.c create mode 100644 orte/mca/ess/base/ess_base_std_tool.c create mode 100644 orte/mca/ess/base/help-ess-base.txt create mode 100644 orte/mca/ess/base/owner.txt create mode 100644 orte/mca/ess/env/Makefile.am create mode 100644 orte/mca/ess/env/ess_env.h create mode 100644 orte/mca/ess/env/ess_env_component.c create mode 100644 orte/mca/ess/env/ess_env_module.c create mode 100644 orte/mca/ess/env/owner.txt create mode 100644 orte/mca/ess/ess.h create mode 100644 orte/mca/ess/hnp/Makefile.am create mode 100644 orte/mca/ess/hnp/ess_hnp.h create mode 100644 orte/mca/ess/hnp/ess_hnp_component.c create mode 100644 orte/mca/ess/hnp/ess_hnp_module.c create mode 100644 orte/mca/ess/hnp/owner.txt create mode 100644 orte/mca/ess/lsf/Makefile.am create mode 100644 orte/mca/ess/lsf/configure.m4 create mode 100644 orte/mca/ess/lsf/ess_lsf.h create mode 100644 orte/mca/ess/lsf/ess_lsf_component.c create mode 100644 orte/mca/ess/lsf/ess_lsf_module.c create mode 100644 orte/mca/ess/lsf/owner.txt create mode 100644 orte/mca/ess/pmi/Makefile.am create mode 100644 orte/mca/ess/pmi/ess_pmi.h create mode 100644 orte/mca/ess/pmi/ess_pmi_component.c create mode 100644 orte/mca/ess/pmi/ess_pmi_module.c create mode 100644 orte/mca/ess/pmi/owner.txt create mode 100644 orte/mca/ess/singleton/Makefile.am create mode 100644 orte/mca/ess/singleton/ess_singleton.h create mode 100644 orte/mca/ess/singleton/ess_singleton_component.c create mode 100644 orte/mca/ess/singleton/ess_singleton_module.c create mode 100644 orte/mca/ess/singleton/owner.txt create mode 100644 orte/mca/ess/slurm/Makefile.am create mode 100644 orte/mca/ess/slurm/configure.m4 create mode 100644 orte/mca/ess/slurm/ess_slurm.h create mode 100644 orte/mca/ess/slurm/ess_slurm_component.c create mode 100644 orte/mca/ess/slurm/ess_slurm_module.c create mode 100644 orte/mca/ess/slurm/owner.txt create mode 100644 orte/mca/ess/tm/Makefile.am create mode 100644 orte/mca/ess/tm/configure.m4 create mode 100644 orte/mca/ess/tm/ess_tm.h create mode 100644 orte/mca/ess/tm/ess_tm_component.c create mode 100644 orte/mca/ess/tm/ess_tm_module.c create mode 100644 orte/mca/ess/tm/owner.txt create mode 100644 orte/mca/ess/tool/Makefile.am create mode 100644 orte/mca/ess/tool/ess_tool.h create mode 100644 orte/mca/ess/tool/ess_tool_component.c create mode 100644 orte/mca/ess/tool/ess_tool_module.c create mode 100644 orte/mca/ess/tool/owner.txt create mode 100644 orte/mca/filem/Makefile.am create mode 100644 orte/mca/filem/base/Makefile.am create mode 100644 orte/mca/filem/base/base.h create mode 100644 orte/mca/filem/base/filem_base_fns.c create mode 100644 orte/mca/filem/base/filem_base_frame.c create mode 100644 orte/mca/filem/base/filem_base_receive.c create mode 100644 orte/mca/filem/base/filem_base_select.c create mode 100644 orte/mca/filem/base/owner.txt create mode 100644 orte/mca/filem/filem.h create mode 100644 orte/mca/filem/orte_filem.7in create mode 100644 orte/mca/filem/raw/Makefile.am create mode 100644 orte/mca/filem/raw/filem_raw.h create mode 100644 orte/mca/filem/raw/filem_raw_component.c create mode 100644 orte/mca/filem/raw/filem_raw_module.c create mode 100644 orte/mca/filem/raw/help-orte-filem-raw.txt create mode 100644 orte/mca/filem/raw/owner.txt create mode 100644 orte/mca/grpcomm/Makefile.am create mode 100644 orte/mca/grpcomm/base/Makefile.am create mode 100644 orte/mca/grpcomm/base/base.h create mode 100644 orte/mca/grpcomm/base/grpcomm_base_frame.c create mode 100644 orte/mca/grpcomm/base/grpcomm_base_select.c create mode 100644 orte/mca/grpcomm/base/grpcomm_base_stubs.c create mode 100644 orte/mca/grpcomm/base/owner.txt create mode 100644 orte/mca/grpcomm/brucks/.opal_ignore create mode 100644 orte/mca/grpcomm/brucks/Makefile.am create mode 100644 orte/mca/grpcomm/brucks/grpcomm_brucks.h create mode 100644 orte/mca/grpcomm/brucks/grpcomm_brucks_component.c create mode 100644 orte/mca/grpcomm/brucks/grpcomm_brucks_module.c create mode 100644 orte/mca/grpcomm/brucks/owner.txt create mode 100644 orte/mca/grpcomm/direct/Makefile.am create mode 100644 orte/mca/grpcomm/direct/grpcomm_direct.c create mode 100644 orte/mca/grpcomm/direct/grpcomm_direct.h create mode 100644 orte/mca/grpcomm/direct/grpcomm_direct_component.c create mode 100644 orte/mca/grpcomm/direct/owner.txt create mode 100644 orte/mca/grpcomm/grpcomm.h create mode 100644 orte/mca/grpcomm/rcd/.opal_ignore create mode 100644 orte/mca/grpcomm/rcd/Makefile.am create mode 100644 orte/mca/grpcomm/rcd/grpcomm_rcd.c create mode 100644 orte/mca/grpcomm/rcd/grpcomm_rcd.h create mode 100644 orte/mca/grpcomm/rcd/grpcomm_rcd_component.c create mode 100644 orte/mca/grpcomm/rcd/owner.txt create mode 100644 orte/mca/iof/Makefile.am create mode 100644 orte/mca/iof/README.txt create mode 100644 orte/mca/iof/base/Makefile.am create mode 100644 orte/mca/iof/base/base.h create mode 100644 orte/mca/iof/base/iof_base_frame.c create mode 100644 orte/mca/iof/base/iof_base_output.c create mode 100644 orte/mca/iof/base/iof_base_select.c create mode 100644 orte/mca/iof/base/iof_base_setup.c create mode 100644 orte/mca/iof/base/iof_base_setup.h create mode 100644 orte/mca/iof/base/owner.txt create mode 100644 orte/mca/iof/hnp/Makefile.am create mode 100644 orte/mca/iof/hnp/iof_hnp.c create mode 100644 orte/mca/iof/hnp/iof_hnp.h create mode 100644 orte/mca/iof/hnp/iof_hnp_component.c create mode 100644 orte/mca/iof/hnp/iof_hnp_read.c create mode 100644 orte/mca/iof/hnp/iof_hnp_receive.c create mode 100644 orte/mca/iof/hnp/iof_hnp_send.c create mode 100644 orte/mca/iof/hnp/owner.txt create mode 100644 orte/mca/iof/iof.h create mode 100644 orte/mca/iof/iof_types.h create mode 100644 orte/mca/iof/orted/Makefile.am create mode 100644 orte/mca/iof/orted/iof_orted.c create mode 100644 orte/mca/iof/orted/iof_orted.h create mode 100644 orte/mca/iof/orted/iof_orted_component.c create mode 100644 orte/mca/iof/orted/iof_orted_read.c create mode 100644 orte/mca/iof/orted/iof_orted_receive.c create mode 100644 orte/mca/iof/orted/owner.txt create mode 100644 orte/mca/iof/tool/Makefile.am create mode 100644 orte/mca/iof/tool/iof_tool.c create mode 100644 orte/mca/iof/tool/iof_tool.h create mode 100644 orte/mca/iof/tool/iof_tool_component.c create mode 100644 orte/mca/iof/tool/iof_tool_receive.c create mode 100644 orte/mca/iof/tool/owner.txt create mode 100644 orte/mca/mca.h create mode 100644 orte/mca/notifier/Makefile.am create mode 100644 orte/mca/notifier/base/Makefile.am create mode 100644 orte/mca/notifier/base/base.h create mode 100644 orte/mca/notifier/base/notifier_base_fns.c create mode 100644 orte/mca/notifier/base/notifier_base_frame.c create mode 100644 orte/mca/notifier/base/notifier_base_select.c create mode 100644 orte/mca/notifier/notifier.h create mode 100644 orte/mca/notifier/smtp/.opal_ignore create mode 100644 orte/mca/notifier/smtp/Makefile.am create mode 100644 orte/mca/notifier/smtp/configure.m4 create mode 100644 orte/mca/notifier/smtp/help-orte-notifier-smtp.txt create mode 100644 orte/mca/notifier/smtp/notifier_smtp.h create mode 100644 orte/mca/notifier/smtp/notifier_smtp_component.c create mode 100644 orte/mca/notifier/smtp/notifier_smtp_module.c create mode 100644 orte/mca/notifier/syslog/Makefile.am create mode 100644 orte/mca/notifier/syslog/configure.m4 create mode 100644 orte/mca/notifier/syslog/notifier_syslog.h create mode 100644 orte/mca/notifier/syslog/notifier_syslog_component.c create mode 100644 orte/mca/notifier/syslog/notifier_syslog_module.c create mode 100644 orte/mca/odls/Makefile.am create mode 100644 orte/mca/odls/alps/Makefile.am create mode 100644 orte/mca/odls/alps/configure.m4 create mode 100644 orte/mca/odls/alps/help-orte-odls-alps.txt create mode 100644 orte/mca/odls/alps/odls_alps.h create mode 100644 orte/mca/odls/alps/odls_alps_component.c create mode 100644 orte/mca/odls/alps/odls_alps_module.c create mode 100644 orte/mca/odls/alps/odls_alps_utils.c create mode 100644 orte/mca/odls/alps/owner.txt create mode 100644 orte/mca/odls/base/Makefile.am create mode 100644 orte/mca/odls/base/base.h create mode 100644 orte/mca/odls/base/help-orte-odls-base.txt create mode 100644 orte/mca/odls/base/odls_base_default_fns.c create mode 100644 orte/mca/odls/base/odls_base_frame.c create mode 100644 orte/mca/odls/base/odls_base_select.c create mode 100644 orte/mca/odls/base/odls_private.h create mode 100644 orte/mca/odls/base/owner.txt create mode 100644 orte/mca/odls/default/Makefile.am create mode 100644 orte/mca/odls/default/configure.m4 create mode 100644 orte/mca/odls/default/help-orte-odls-default.txt create mode 100644 orte/mca/odls/default/odls_default.h create mode 100644 orte/mca/odls/default/odls_default_component.c create mode 100644 orte/mca/odls/default/odls_default_module.c create mode 100644 orte/mca/odls/default/owner.txt create mode 100644 orte/mca/odls/odls.h create mode 100644 orte/mca/odls/odls_types.h create mode 100644 orte/mca/oob/Makefile.am create mode 100644 orte/mca/oob/alps/Makefile.am create mode 100644 orte/mca/oob/alps/configure.m4 create mode 100644 orte/mca/oob/alps/oob_alps_component.c create mode 100644 orte/mca/oob/alps/owner.txt create mode 100644 orte/mca/oob/base/Makefile.am create mode 100644 orte/mca/oob/base/base.h create mode 100644 orte/mca/oob/base/help-oob-base.txt create mode 100644 orte/mca/oob/base/oob_base_frame.c create mode 100644 orte/mca/oob/base/oob_base_select.c create mode 100644 orte/mca/oob/base/oob_base_stubs.c create mode 100644 orte/mca/oob/base/owner.txt create mode 100644 orte/mca/oob/oob.h create mode 100644 orte/mca/oob/tcp/Makefile.am create mode 100644 orte/mca/oob/tcp/configure.m4 create mode 100644 orte/mca/oob/tcp/help-oob-tcp.txt create mode 100644 orte/mca/oob/tcp/oob_tcp.c create mode 100644 orte/mca/oob/tcp/oob_tcp.h create mode 100644 orte/mca/oob/tcp/oob_tcp_common.c create mode 100644 orte/mca/oob/tcp/oob_tcp_common.h create mode 100644 orte/mca/oob/tcp/oob_tcp_component.c create mode 100644 orte/mca/oob/tcp/oob_tcp_component.h create mode 100644 orte/mca/oob/tcp/oob_tcp_connection.c create mode 100644 orte/mca/oob/tcp/oob_tcp_connection.h create mode 100644 orte/mca/oob/tcp/oob_tcp_hdr.h create mode 100644 orte/mca/oob/tcp/oob_tcp_listener.c create mode 100644 orte/mca/oob/tcp/oob_tcp_listener.h create mode 100644 orte/mca/oob/tcp/oob_tcp_peer.h create mode 100644 orte/mca/oob/tcp/oob_tcp_sendrecv.c create mode 100644 orte/mca/oob/tcp/oob_tcp_sendrecv.h create mode 100644 orte/mca/oob/tcp/owner.txt create mode 100644 orte/mca/oob/ud/Makefile.am create mode 100644 orte/mca/oob/ud/configure.m4 create mode 100644 orte/mca/oob/ud/help-oob-ud.txt create mode 100644 orte/mca/oob/ud/oob_ud.c create mode 100644 orte/mca/oob/ud/oob_ud.h create mode 100644 orte/mca/oob/ud/oob_ud_component.c create mode 100644 orte/mca/oob/ud/oob_ud_component.h create mode 100644 orte/mca/oob/ud/oob_ud_event.c create mode 100644 orte/mca/oob/ud/oob_ud_peer.c create mode 100644 orte/mca/oob/ud/oob_ud_peer.h create mode 100644 orte/mca/oob/ud/oob_ud_ping.c create mode 100644 orte/mca/oob/ud/oob_ud_ping.h create mode 100644 orte/mca/oob/ud/oob_ud_qp.c create mode 100644 orte/mca/oob/ud/oob_ud_qp.h create mode 100644 orte/mca/oob/ud/oob_ud_recv.c create mode 100644 orte/mca/oob/ud/oob_ud_req.c create mode 100644 orte/mca/oob/ud/oob_ud_req.h create mode 100644 orte/mca/oob/ud/oob_ud_send.c create mode 100644 orte/mca/oob/ud/oob_ud_send.h create mode 100644 orte/mca/oob/ud/owner.txt create mode 100644 orte/mca/plm/Makefile.am create mode 100644 orte/mca/plm/alps/Makefile.am create mode 100644 orte/mca/plm/alps/configure.m4 create mode 100644 orte/mca/plm/alps/help-plm-alps.txt create mode 100644 orte/mca/plm/alps/owner.txt create mode 100644 orte/mca/plm/alps/plm_alps.h create mode 100644 orte/mca/plm/alps/plm_alps_component.c create mode 100644 orte/mca/plm/alps/plm_alps_module.c create mode 100644 orte/mca/plm/base/Makefile.am create mode 100644 orte/mca/plm/base/base.h create mode 100644 orte/mca/plm/base/help-plm-base.txt create mode 100644 orte/mca/plm/base/owner.txt create mode 100644 orte/mca/plm/base/plm_base_frame.c create mode 100644 orte/mca/plm/base/plm_base_jobid.c create mode 100644 orte/mca/plm/base/plm_base_launch_support.c create mode 100644 orte/mca/plm/base/plm_base_orted_cmds.c create mode 100644 orte/mca/plm/base/plm_base_receive.c create mode 100644 orte/mca/plm/base/plm_base_select.c create mode 100644 orte/mca/plm/base/plm_private.h create mode 100644 orte/mca/plm/isolated/Makefile.am create mode 100644 orte/mca/plm/isolated/configure.m4 create mode 100644 orte/mca/plm/isolated/owner.txt create mode 100644 orte/mca/plm/isolated/plm_isolated.c create mode 100644 orte/mca/plm/isolated/plm_isolated.h create mode 100644 orte/mca/plm/isolated/plm_isolated_component.c create mode 100644 orte/mca/plm/lsf/Makefile.am create mode 100644 orte/mca/plm/lsf/configure.m4 create mode 100644 orte/mca/plm/lsf/help-plm-lsf.txt create mode 100644 orte/mca/plm/lsf/owner.txt create mode 100644 orte/mca/plm/lsf/plm_lsf.h create mode 100644 orte/mca/plm/lsf/plm_lsf_component.c create mode 100644 orte/mca/plm/lsf/plm_lsf_module.c create mode 100644 orte/mca/plm/plm.h create mode 100644 orte/mca/plm/plm_types.h create mode 100644 orte/mca/plm/rsh/Makefile.am create mode 100644 orte/mca/plm/rsh/configure.m4 create mode 100644 orte/mca/plm/rsh/help-plm-rsh.txt create mode 100644 orte/mca/plm/rsh/owner.txt create mode 100644 orte/mca/plm/rsh/plm_rsh.h create mode 100644 orte/mca/plm/rsh/plm_rsh_component.c create mode 100644 orte/mca/plm/rsh/plm_rsh_module.c create mode 100644 orte/mca/plm/slurm/Makefile.am create mode 100644 orte/mca/plm/slurm/configure.m4 create mode 100644 orte/mca/plm/slurm/help-plm-slurm.txt create mode 100644 orte/mca/plm/slurm/owner.txt create mode 100644 orte/mca/plm/slurm/plm_slurm.h create mode 100644 orte/mca/plm/slurm/plm_slurm_component.c create mode 100644 orte/mca/plm/slurm/plm_slurm_module.c create mode 100644 orte/mca/plm/tm/Makefile.am create mode 100644 orte/mca/plm/tm/configure.m4 create mode 100644 orte/mca/plm/tm/help-plm-tm.txt create mode 100644 orte/mca/plm/tm/owner.txt create mode 100644 orte/mca/plm/tm/plm_tm.h create mode 100644 orte/mca/plm/tm/plm_tm_component.c create mode 100644 orte/mca/plm/tm/plm_tm_module.c create mode 100644 orte/mca/ras/Makefile.am create mode 100644 orte/mca/ras/alps/Makefile.am create mode 100644 orte/mca/ras/alps/configure.m4 create mode 100644 orte/mca/ras/alps/help-ras-alps.txt create mode 100644 orte/mca/ras/alps/owner.txt create mode 100755 orte/mca/ras/alps/ras-alps-command.sh create mode 100644 orte/mca/ras/alps/ras_alps.h create mode 100644 orte/mca/ras/alps/ras_alps_component.c create mode 100644 orte/mca/ras/alps/ras_alps_module.c create mode 100644 orte/mca/ras/base/Makefile.am create mode 100644 orte/mca/ras/base/base.h create mode 100644 orte/mca/ras/base/help-ras-base.txt create mode 100644 orte/mca/ras/base/owner.txt create mode 100644 orte/mca/ras/base/ras_base_allocate.c create mode 100644 orte/mca/ras/base/ras_base_close.c create mode 100644 orte/mca/ras/base/ras_base_frame.c create mode 100644 orte/mca/ras/base/ras_base_node.c create mode 100644 orte/mca/ras/base/ras_base_select.c create mode 100644 orte/mca/ras/base/ras_private.h create mode 100644 orte/mca/ras/gridengine/Makefile.am create mode 100644 orte/mca/ras/gridengine/configure.m4 create mode 100644 orte/mca/ras/gridengine/help-ras-gridengine.txt create mode 100644 orte/mca/ras/gridengine/owner.txt create mode 100644 orte/mca/ras/gridengine/ras_gridengine.h create mode 100644 orte/mca/ras/gridengine/ras_gridengine_component.c create mode 100644 orte/mca/ras/gridengine/ras_gridengine_module.c create mode 100644 orte/mca/ras/lsf/Makefile.am create mode 100644 orte/mca/ras/lsf/configure.m4 create mode 100644 orte/mca/ras/lsf/help-ras-lsf.txt create mode 100644 orte/mca/ras/lsf/owner.txt create mode 100644 orte/mca/ras/lsf/ras_lsf.h create mode 100644 orte/mca/ras/lsf/ras_lsf_component.c create mode 100644 orte/mca/ras/lsf/ras_lsf_module.c create mode 100644 orte/mca/ras/ras.h create mode 100644 orte/mca/ras/simulator/Makefile.am create mode 100644 orte/mca/ras/simulator/help-ras-simulator.txt create mode 100644 orte/mca/ras/simulator/owner.txt create mode 100644 orte/mca/ras/simulator/ras_sim.h create mode 100644 orte/mca/ras/simulator/ras_sim_component.c create mode 100644 orte/mca/ras/simulator/ras_sim_module.c create mode 100644 orte/mca/ras/slurm/Makefile.am create mode 100644 orte/mca/ras/slurm/configure.m4 create mode 100644 orte/mca/ras/slurm/help-ras-slurm.txt create mode 100644 orte/mca/ras/slurm/owner.txt create mode 100644 orte/mca/ras/slurm/ras_slurm.h create mode 100644 orte/mca/ras/slurm/ras_slurm_component.c create mode 100644 orte/mca/ras/slurm/ras_slurm_module.c create mode 100644 orte/mca/ras/tm/Makefile.am create mode 100644 orte/mca/ras/tm/configure.m4 create mode 100644 orte/mca/ras/tm/help-ras-tm.txt create mode 100644 orte/mca/ras/tm/owner.txt create mode 100644 orte/mca/ras/tm/ras_tm.h create mode 100644 orte/mca/ras/tm/ras_tm_component.c create mode 100644 orte/mca/ras/tm/ras_tm_module.c create mode 100644 orte/mca/rmaps/Makefile.am create mode 100644 orte/mca/rmaps/base/Makefile.am create mode 100644 orte/mca/rmaps/base/base.h create mode 100644 orte/mca/rmaps/base/help-orte-rmaps-base.txt create mode 100644 orte/mca/rmaps/base/owner.txt create mode 100644 orte/mca/rmaps/base/rmaps_base_assign_locations.c create mode 100644 orte/mca/rmaps/base/rmaps_base_binding.c create mode 100644 orte/mca/rmaps/base/rmaps_base_frame.c create mode 100644 orte/mca/rmaps/base/rmaps_base_map_job.c create mode 100644 orte/mca/rmaps/base/rmaps_base_print_fns.c create mode 100644 orte/mca/rmaps/base/rmaps_base_ranking.c create mode 100644 orte/mca/rmaps/base/rmaps_base_select.c create mode 100644 orte/mca/rmaps/base/rmaps_base_support_fns.c create mode 100644 orte/mca/rmaps/base/rmaps_private.h create mode 100644 orte/mca/rmaps/mindist/Makefile.am create mode 100644 orte/mca/rmaps/mindist/help-orte-rmaps-md.txt create mode 100644 orte/mca/rmaps/mindist/owner.txt create mode 100644 orte/mca/rmaps/mindist/rmaps_mindist.h create mode 100644 orte/mca/rmaps/mindist/rmaps_mindist_component.c create mode 100644 orte/mca/rmaps/mindist/rmaps_mindist_module.c create mode 100644 orte/mca/rmaps/ppr/Makefile.am create mode 100644 orte/mca/rmaps/ppr/help-orte-rmaps-ppr.txt create mode 100644 orte/mca/rmaps/ppr/owner.txt create mode 100644 orte/mca/rmaps/ppr/rmaps_ppr.c create mode 100644 orte/mca/rmaps/ppr/rmaps_ppr.h create mode 100644 orte/mca/rmaps/ppr/rmaps_ppr_component.c create mode 100644 orte/mca/rmaps/rank_file/Makefile.am create mode 100644 orte/mca/rmaps/rank_file/common_sym_whitelist.txt create mode 100644 orte/mca/rmaps/rank_file/help-rmaps_rank_file.txt create mode 100644 orte/mca/rmaps/rank_file/owner.txt create mode 100644 orte/mca/rmaps/rank_file/rmaps_rank_file.c create mode 100644 orte/mca/rmaps/rank_file/rmaps_rank_file.h create mode 100644 orte/mca/rmaps/rank_file/rmaps_rank_file_component.c create mode 100644 orte/mca/rmaps/rank_file/rmaps_rank_file_lex.h create mode 100644 orte/mca/rmaps/rank_file/rmaps_rank_file_lex.l create mode 100644 orte/mca/rmaps/resilient/Makefile.am create mode 100644 orte/mca/rmaps/resilient/help-orte-rmaps-resilient.txt create mode 100644 orte/mca/rmaps/resilient/owner.txt create mode 100644 orte/mca/rmaps/resilient/rmaps_resilient.c create mode 100644 orte/mca/rmaps/resilient/rmaps_resilient.h create mode 100644 orte/mca/rmaps/resilient/rmaps_resilient_component.c create mode 100644 orte/mca/rmaps/rmaps.h create mode 100644 orte/mca/rmaps/rmaps_types.h create mode 100644 orte/mca/rmaps/round_robin/Makefile.am create mode 100644 orte/mca/rmaps/round_robin/help-orte-rmaps-rr.txt create mode 100644 orte/mca/rmaps/round_robin/owner.txt create mode 100644 orte/mca/rmaps/round_robin/rmaps_rr.c create mode 100644 orte/mca/rmaps/round_robin/rmaps_rr.h create mode 100644 orte/mca/rmaps/round_robin/rmaps_rr_assign.c create mode 100644 orte/mca/rmaps/round_robin/rmaps_rr_component.c create mode 100644 orte/mca/rmaps/round_robin/rmaps_rr_mappers.c create mode 100644 orte/mca/rmaps/seq/Makefile.am create mode 100644 orte/mca/rmaps/seq/help-orte-rmaps-seq.txt create mode 100644 orte/mca/rmaps/seq/owner.txt create mode 100644 orte/mca/rmaps/seq/rmaps_seq.c create mode 100644 orte/mca/rmaps/seq/rmaps_seq.h create mode 100644 orte/mca/rmaps/seq/rmaps_seq_component.c create mode 100644 orte/mca/rml/Makefile.am create mode 100644 orte/mca/rml/base/Makefile.am create mode 100644 orte/mca/rml/base/base.h create mode 100644 orte/mca/rml/base/owner.txt create mode 100644 orte/mca/rml/base/rml_base_contact.c create mode 100644 orte/mca/rml/base/rml_base_frame.c create mode 100644 orte/mca/rml/base/rml_base_msg_handlers.c create mode 100644 orte/mca/rml/base/rml_base_receive.c create mode 100644 orte/mca/rml/base/rml_base_stubs.c create mode 100644 orte/mca/rml/base/rml_contact.h create mode 100644 orte/mca/rml/oob/Makefile.am create mode 100644 orte/mca/rml/oob/owner.txt create mode 100644 orte/mca/rml/oob/rml_oob.h create mode 100644 orte/mca/rml/oob/rml_oob_component.c create mode 100644 orte/mca/rml/oob/rml_oob_send.c create mode 100644 orte/mca/rml/rml.h create mode 100644 orte/mca/rml/rml_types.h create mode 100644 orte/mca/routed/Makefile.am create mode 100644 orte/mca/routed/base/Makefile.am create mode 100644 orte/mca/routed/base/base.h create mode 100644 orte/mca/routed/base/owner.txt create mode 100644 orte/mca/routed/base/routed_base_fns.c create mode 100644 orte/mca/routed/base/routed_base_frame.c create mode 100644 orte/mca/routed/binomial/Makefile.am create mode 100644 orte/mca/routed/binomial/owner.txt create mode 100644 orte/mca/routed/binomial/routed_binomial.c create mode 100644 orte/mca/routed/binomial/routed_binomial.h create mode 100644 orte/mca/routed/binomial/routed_binomial_component.c create mode 100644 orte/mca/routed/debruijn/Makefile.am create mode 100644 orte/mca/routed/debruijn/owner.txt create mode 100644 orte/mca/routed/debruijn/routed_debruijn.c create mode 100644 orte/mca/routed/debruijn/routed_debruijn.h create mode 100644 orte/mca/routed/debruijn/routed_debruijn_component.c create mode 100644 orte/mca/routed/direct/Makefile.am create mode 100644 orte/mca/routed/direct/owner.txt create mode 100644 orte/mca/routed/direct/routed_direct.c create mode 100644 orte/mca/routed/direct/routed_direct.h create mode 100644 orte/mca/routed/direct/routed_direct_component.c create mode 100644 orte/mca/routed/radix/Makefile.am create mode 100644 orte/mca/routed/radix/routed_radix.c create mode 100644 orte/mca/routed/radix/routed_radix.h create mode 100644 orte/mca/routed/radix/routed_radix_component.c create mode 100644 orte/mca/routed/routed.h create mode 100644 orte/mca/routed/routed_types.h create mode 100644 orte/mca/rtc/Makefile.am create mode 100644 orte/mca/rtc/base/Makefile.am create mode 100644 orte/mca/rtc/base/base.h create mode 100644 orte/mca/rtc/base/help-orte-rtc-base.txt create mode 100644 orte/mca/rtc/base/owner.txt create mode 100644 orte/mca/rtc/base/rtc_base_frame.c create mode 100644 orte/mca/rtc/base/rtc_base_select.c create mode 100644 orte/mca/rtc/base/rtc_base_stubs.c create mode 100644 orte/mca/rtc/hwloc/Makefile.am create mode 100644 orte/mca/rtc/hwloc/owner.txt create mode 100644 orte/mca/rtc/hwloc/rtc_hwloc.c create mode 100644 orte/mca/rtc/hwloc/rtc_hwloc.h create mode 100644 orte/mca/rtc/hwloc/rtc_hwloc_component.c create mode 100644 orte/mca/rtc/rtc.h create mode 100644 orte/mca/schizo/Makefile.am create mode 100644 orte/mca/schizo/alps/Makefile.am create mode 100644 orte/mca/schizo/alps/configure.m4 create mode 100644 orte/mca/schizo/alps/owner.txt create mode 100644 orte/mca/schizo/alps/schizo_alps.c create mode 100644 orte/mca/schizo/alps/schizo_alps.h create mode 100644 orte/mca/schizo/alps/schizo_alps_component.c create mode 100644 orte/mca/schizo/base/Makefile.am create mode 100644 orte/mca/schizo/base/base.h create mode 100644 orte/mca/schizo/base/owner.txt create mode 100644 orte/mca/schizo/base/schizo_base_frame.c create mode 100644 orte/mca/schizo/base/schizo_base_select.c create mode 100644 orte/mca/schizo/base/schizo_base_stubs.c create mode 100644 orte/mca/schizo/flux/Makefile.am create mode 100644 orte/mca/schizo/flux/owner.txt create mode 100644 orte/mca/schizo/flux/schizo_flux.c create mode 100644 orte/mca/schizo/flux/schizo_flux.h create mode 100644 orte/mca/schizo/flux/schizo_flux_component.c create mode 100644 orte/mca/schizo/moab/Makefile.am create mode 100644 orte/mca/schizo/moab/configure.m4 create mode 100644 orte/mca/schizo/moab/owner.txt create mode 100644 orte/mca/schizo/moab/schizo_moab.c create mode 100644 orte/mca/schizo/moab/schizo_moab.h create mode 100644 orte/mca/schizo/moab/schizo_moab_component.c create mode 100644 orte/mca/schizo/ompi/Makefile.am create mode 100644 orte/mca/schizo/ompi/owner.txt create mode 100644 orte/mca/schizo/ompi/schizo_ompi.c create mode 100644 orte/mca/schizo/ompi/schizo_ompi.h create mode 100644 orte/mca/schizo/ompi/schizo_ompi_component.c create mode 100644 orte/mca/schizo/orte/Makefile.am create mode 100644 orte/mca/schizo/orte/schizo_orte.c create mode 100644 orte/mca/schizo/orte/schizo_orte.h create mode 100644 orte/mca/schizo/orte/schizo_orte_component.c create mode 100644 orte/mca/schizo/schizo.h create mode 100644 orte/mca/schizo/singularity/Makefile.am create mode 100644 orte/mca/schizo/singularity/configure.m4 create mode 100644 orte/mca/schizo/singularity/owner.txt create mode 100644 orte/mca/schizo/singularity/schizo_singularity.c create mode 100644 orte/mca/schizo/singularity/schizo_singularity.h create mode 100644 orte/mca/schizo/singularity/schizo_singularity_component.c create mode 100644 orte/mca/schizo/slurm/Makefile.am create mode 100644 orte/mca/schizo/slurm/configure.m4 create mode 100644 orte/mca/schizo/slurm/owner.txt create mode 100644 orte/mca/schizo/slurm/schizo_slurm.c create mode 100644 orte/mca/schizo/slurm/schizo_slurm.h create mode 100644 orte/mca/schizo/slurm/schizo_slurm_component.c create mode 100644 orte/mca/snapc/Makefile.am create mode 100644 orte/mca/snapc/base/Makefile.am create mode 100644 orte/mca/snapc/base/base.h create mode 100644 orte/mca/snapc/base/help-orte-snapc-base.txt create mode 100644 orte/mca/snapc/base/owner.txt create mode 100644 orte/mca/snapc/base/snapc_base_fns.c create mode 100644 orte/mca/snapc/base/snapc_base_frame.c create mode 100644 orte/mca/snapc/base/snapc_base_select.c create mode 100644 orte/mca/snapc/full/Makefile.am create mode 100644 orte/mca/snapc/full/configure.m4 create mode 100644 orte/mca/snapc/full/help-orte-snapc-full.txt create mode 100644 orte/mca/snapc/full/owner.txt create mode 100644 orte/mca/snapc/full/snapc_full.h create mode 100644 orte/mca/snapc/full/snapc_full_app.c create mode 100644 orte/mca/snapc/full/snapc_full_component.c create mode 100644 orte/mca/snapc/full/snapc_full_global.c create mode 100644 orte/mca/snapc/full/snapc_full_local.c create mode 100644 orte/mca/snapc/full/snapc_full_module.c create mode 100644 orte/mca/snapc/orte_snapc.7in create mode 100644 orte/mca/snapc/snapc.h create mode 100644 orte/mca/sstore/Makefile.am create mode 100644 orte/mca/sstore/base/Makefile.am create mode 100644 orte/mca/sstore/base/base.h create mode 100644 orte/mca/sstore/base/owner.txt create mode 100644 orte/mca/sstore/base/sstore_base_fns.c create mode 100644 orte/mca/sstore/base/sstore_base_frame.c create mode 100644 orte/mca/sstore/base/sstore_base_select.c create mode 100644 orte/mca/sstore/central/Makefile.am create mode 100644 orte/mca/sstore/central/configure.m4 create mode 100644 orte/mca/sstore/central/help-orte-sstore-central.txt create mode 100644 orte/mca/sstore/central/owner.txt create mode 100644 orte/mca/sstore/central/sstore_central.h create mode 100644 orte/mca/sstore/central/sstore_central_app.c create mode 100644 orte/mca/sstore/central/sstore_central_component.c create mode 100644 orte/mca/sstore/central/sstore_central_global.c create mode 100644 orte/mca/sstore/central/sstore_central_local.c create mode 100644 orte/mca/sstore/central/sstore_central_module.c create mode 100644 orte/mca/sstore/orte_sstore.7in create mode 100644 orte/mca/sstore/sstore.h create mode 100644 orte/mca/sstore/stage/Makefile.am create mode 100644 orte/mca/sstore/stage/configure.m4 create mode 100644 orte/mca/sstore/stage/help-orte-sstore-stage.txt create mode 100644 orte/mca/sstore/stage/owner.txt create mode 100644 orte/mca/sstore/stage/sstore_stage.h create mode 100644 orte/mca/sstore/stage/sstore_stage_app.c create mode 100644 orte/mca/sstore/stage/sstore_stage_component.c create mode 100644 orte/mca/sstore/stage/sstore_stage_global.c create mode 100644 orte/mca/sstore/stage/sstore_stage_local.c create mode 100644 orte/mca/sstore/stage/sstore_stage_module.c create mode 100644 orte/mca/state/Makefile.am create mode 100644 orte/mca/state/app/Makefile.am create mode 100644 orte/mca/state/app/owner.txt create mode 100644 orte/mca/state/app/state_app.c create mode 100644 orte/mca/state/app/state_app.h create mode 100644 orte/mca/state/app/state_app_component.c create mode 100644 orte/mca/state/base/Makefile.am create mode 100644 orte/mca/state/base/base.h create mode 100644 orte/mca/state/base/owner.txt create mode 100644 orte/mca/state/base/state_base_fns.c create mode 100644 orte/mca/state/base/state_base_frame.c create mode 100644 orte/mca/state/base/state_base_select.c create mode 100644 orte/mca/state/base/state_private.h create mode 100644 orte/mca/state/dvm/Makefile.am create mode 100644 orte/mca/state/dvm/owner.txt create mode 100644 orte/mca/state/dvm/state_dvm.c create mode 100644 orte/mca/state/dvm/state_dvm.h create mode 100644 orte/mca/state/dvm/state_dvm_component.c create mode 100644 orte/mca/state/hnp/Makefile.am create mode 100644 orte/mca/state/hnp/owner.txt create mode 100644 orte/mca/state/hnp/state_hnp.c create mode 100644 orte/mca/state/hnp/state_hnp.h create mode 100644 orte/mca/state/hnp/state_hnp_component.c create mode 100644 orte/mca/state/novm/Makefile.am create mode 100644 orte/mca/state/novm/owner.txt create mode 100644 orte/mca/state/novm/state_novm.c create mode 100644 orte/mca/state/novm/state_novm.h create mode 100644 orte/mca/state/novm/state_novm_component.c create mode 100644 orte/mca/state/orted/Makefile.am create mode 100644 orte/mca/state/orted/owner.txt create mode 100644 orte/mca/state/orted/state_orted.c create mode 100644 orte/mca/state/orted/state_orted.h create mode 100644 orte/mca/state/orted/state_orted_component.c create mode 100644 orte/mca/state/state.h create mode 100644 orte/mca/state/state_types.h create mode 100644 orte/mca/state/tool/Makefile.am create mode 100644 orte/mca/state/tool/owner.txt create mode 100644 orte/mca/state/tool/state_tool.c create mode 100644 orte/mca/state/tool/state_tool.h create mode 100644 orte/mca/state/tool/state_tool_component.c create mode 100644 orte/orted/Makefile.am create mode 100644 orte/orted/ft_tester.c create mode 100644 orte/orted/help-orted.txt create mode 100644 orte/orted/orted.h create mode 100644 orte/orted/orted_comm.c create mode 100644 orte/orted/orted_main.c create mode 100644 orte/orted/orted_submit.c create mode 100644 orte/orted/orted_submit.h create mode 100644 orte/orted/pmix/Makefile.am create mode 100644 orte/orted/pmix/pmix_server.c create mode 100644 orte/orted/pmix/pmix_server.h create mode 100644 orte/orted/pmix/pmix_server_dyn.c create mode 100644 orte/orted/pmix/pmix_server_fence.c create mode 100644 orte/orted/pmix/pmix_server_gen.c create mode 100644 orte/orted/pmix/pmix_server_internal.h create mode 100644 orte/orted/pmix/pmix_server_pub.c create mode 100644 orte/orted/pmix/pmix_server_register_fns.c create mode 100644 orte/runtime/Makefile.am create mode 100644 orte/runtime/data_type_support/orte_dt_compare_fns.c create mode 100644 orte/runtime/data_type_support/orte_dt_copy_fns.c create mode 100644 orte/runtime/data_type_support/orte_dt_packing_fns.c create mode 100644 orte/runtime/data_type_support/orte_dt_print_fns.c create mode 100644 orte/runtime/data_type_support/orte_dt_support.h create mode 100644 orte/runtime/data_type_support/orte_dt_unpacking_fns.c create mode 100644 orte/runtime/help-orte-runtime.txt create mode 100644 orte/runtime/orte_cr.c create mode 100644 orte/runtime/orte_cr.h create mode 100644 orte/runtime/orte_data_server.c create mode 100644 orte/runtime/orte_data_server.h create mode 100644 orte/runtime/orte_finalize.c create mode 100644 orte/runtime/orte_globals.c create mode 100644 orte/runtime/orte_globals.h create mode 100644 orte/runtime/orte_info_support.c create mode 100644 orte/runtime/orte_info_support.h create mode 100644 orte/runtime/orte_init.c create mode 100644 orte/runtime/orte_locks.c create mode 100644 orte/runtime/orte_locks.h create mode 100644 orte/runtime/orte_mca_params.c create mode 100644 orte/runtime/orte_quit.c create mode 100644 orte/runtime/orte_quit.h create mode 100644 orte/runtime/orte_wait.c create mode 100644 orte/runtime/orte_wait.h create mode 100644 orte/runtime/runtime.h create mode 100644 orte/runtime/runtime_internals.h create mode 100644 orte/test/mpi/Makefile create mode 100644 orte/test/mpi/Makefile.include create mode 100644 orte/test/mpi/abort.c create mode 100644 orte/test/mpi/accept.c create mode 100644 orte/test/mpi/add_host.c create mode 100644 orte/test/mpi/attach.c create mode 100644 orte/test/mpi/bad_exit.c create mode 100644 orte/test/mpi/badcoll.c create mode 100644 orte/test/mpi/bcast_loop.c create mode 100644 orte/test/mpi/binding.c create mode 100644 orte/test/mpi/client.c create mode 100644 orte/test/mpi/concurrent_spawn.c create mode 100644 orte/test/mpi/connect.c create mode 100644 orte/test/mpi/crisscross.c create mode 100644 orte/test/mpi/debugger.c create mode 100644 orte/test/mpi/delayed_abort.c create mode 100644 orte/test/mpi/early_abort.c create mode 100644 orte/test/mpi/hello.c create mode 100644 orte/test/mpi/hello_barrier.c create mode 100644 orte/test/mpi/hello_nodename.c create mode 100644 orte/test/mpi/hello_output.c create mode 100644 orte/test/mpi/hello_show_help.c create mode 100755 orte/test/mpi/hellocycle.pl create mode 100644 orte/test/mpi/info_spawn.c create mode 100644 orte/test/mpi/init-exit77.c create mode 100644 orte/test/mpi/intercomm_create.c create mode 100644 orte/test/mpi/iof.c create mode 100644 orte/test/mpi/loop_child.c create mode 100644 orte/test/mpi/loop_spawn.c create mode 100755 orte/test/mpi/makedata.pl create mode 100644 orte/test/mpi/mpi_barrier.c create mode 100644 orte/test/mpi/mpi_info.c create mode 100644 orte/test/mpi/mpi_no_op.c create mode 100644 orte/test/mpi/mpi_spin.c create mode 100644 orte/test/mpi/multi_abort.c create mode 100644 orte/test/mpi/myhello.spec create mode 100644 orte/test/mpi/myring.spec create mode 100644 orte/test/mpi/no-disconnect.c create mode 100644 orte/test/mpi/nonzero.c create mode 100644 orte/test/mpi/paccept.c create mode 100644 orte/test/mpi/parallel_r64.c create mode 100644 orte/test/mpi/parallel_r8.c create mode 100644 orte/test/mpi/parallel_w64.c create mode 100644 orte/test/mpi/parallel_w8.c create mode 100644 orte/test/mpi/pconnect.c create mode 100644 orte/test/mpi/pmix.c create mode 100644 orte/test/mpi/pubsub.c create mode 100644 orte/test/mpi/read_write.c create mode 100644 orte/test/mpi/reduce-hang.c create mode 100644 orte/test/mpi/ring.c create mode 100644 orte/test/mpi/segv.c create mode 100644 orte/test/mpi/sendrecv_blaster.c create mode 100644 orte/test/mpi/server.c create mode 100755 orte/test/mpi/shell_hello create mode 100644 orte/test/mpi/simple_spawn.c create mode 100644 orte/test/mpi/singleton_client_server.c create mode 100644 orte/test/mpi/sio.c create mode 100644 orte/test/mpi/slave.c create mode 100644 orte/test/mpi/spawn-problem/Makefile create mode 100644 orte/test/mpi/spawn-problem/ch_rec.c create mode 100644 orte/test/mpi/spawn-problem/start.c create mode 100644 orte/test/mpi/spawn_multiple.c create mode 100644 orte/test/mpi/spawn_tree.c create mode 100644 orte/test/mpi/thread_init.c create mode 100644 orte/test/mpi/xlib.c create mode 100644 orte/test/mpi/ziaprobe.c create mode 100644 orte/test/mpi/ziatest.README create mode 100644 orte/test/mpi/ziatest.c create mode 100644 orte/test/system/Makefile create mode 100644 orte/test/system/Makefile.include create mode 100644 orte/test/system/binom.c create mode 100644 orte/test/system/event-threads.c create mode 100644 orte/test/system/evpri-test.c create mode 100644 orte/test/system/evpri-test2.c create mode 100644 orte/test/system/evthread-test.c create mode 100644 orte/test/system/get_limits.c create mode 100644 orte/test/system/getenv_pmi.c create mode 100644 orte/test/system/iof_delay.c create mode 100644 orte/test/system/iof_stress.c create mode 100644 orte/test/system/mapper.c create mode 100755 orte/test/system/mapr.py create mode 100644 orte/test/system/no_op.c create mode 100644 orte/test/system/ofi_big_msg.c create mode 100644 orte/test/system/ofi_conduit_stress.c create mode 100644 orte/test/system/ofi_query_test.c create mode 100644 orte/test/system/ofi_stress.c create mode 100644 orte/test/system/oob_stress.c create mode 100644 orte/test/system/oob_stress_channel.c create mode 100644 orte/test/system/opal-evpri-test.c create mode 100644 orte/test/system/opal_hotel.c create mode 100644 orte/test/system/opal_hwloc.c create mode 100644 orte/test/system/opal_interface.c create mode 100644 orte/test/system/orte_abort.c create mode 100644 orte/test/system/orte_dfs.c create mode 100644 orte/test/system/orte_errors.c create mode 100644 orte/test/system/orte_exit.c create mode 100644 orte/test/system/orte_loop_child.c create mode 100644 orte/test/system/orte_loop_spawn.c create mode 100644 orte/test/system/orte_no_op.c create mode 100644 orte/test/system/orte_nodename.c create mode 100644 orte/test/system/orte_notify.c create mode 100644 orte/test/system/orte_spawn.c create mode 100644 orte/test/system/orte_spin.c create mode 100644 orte/test/system/orte_tool.c create mode 100644 orte/test/system/pmixtool.c create mode 100644 orte/test/system/psm_keygen.c create mode 100644 orte/test/system/radix.c create mode 100755 orte/test/system/red.py create mode 100644 orte/test/system/reducer.c create mode 100644 orte/test/system/regex.c create mode 100644 orte/test/system/segfault.c create mode 100644 orte/test/system/sigusr_trap.c create mode 100644 orte/test/system/spin.c create mode 100644 orte/test/system/test-time.c create mode 100644 orte/test/system/threads.c create mode 100644 orte/test/system/ulfm.c create mode 100644 orte/tools/Makefile.am create mode 100644 orte/tools/orte-checkpoint/Makefile.am create mode 100644 orte/tools/orte-checkpoint/help-orte-checkpoint.txt create mode 100644 orte/tools/orte-checkpoint/orte-checkpoint.1in create mode 100644 orte/tools/orte-checkpoint/orte-checkpoint.c create mode 100644 orte/tools/orte-clean/Makefile.am create mode 100644 orte/tools/orte-clean/help-orte-clean.txt create mode 100644 orte/tools/orte-clean/orte-clean.1in create mode 100644 orte/tools/orte-clean/orte-clean.c create mode 100644 orte/tools/orte-dvm/Makefile.am create mode 100644 orte/tools/orte-dvm/orte-dvm.1in create mode 100644 orte/tools/orte-dvm/orte-dvm.c create mode 100644 orte/tools/orte-info/Makefile.am create mode 100644 orte/tools/orte-info/components.c create mode 100644 orte/tools/orte-info/help-orte-info.txt create mode 100644 orte/tools/orte-info/orte-info.1in create mode 100644 orte/tools/orte-info/orte-info.c create mode 100644 orte/tools/orte-info/orte-info.h create mode 100644 orte/tools/orte-info/output.c create mode 100644 orte/tools/orte-info/param.c create mode 100644 orte/tools/orte-info/version.c create mode 100644 orte/tools/orte-migrate/Makefile.am create mode 100644 orte/tools/orte-migrate/help-orte-migrate.txt create mode 100644 orte/tools/orte-migrate/orte-migrate.1in create mode 100644 orte/tools/orte-migrate/orte-migrate.c create mode 100644 orte/tools/orte-ps/Makefile.am create mode 100644 orte/tools/orte-ps/help-orte-ps.txt create mode 100644 orte/tools/orte-ps/orte-ps.1in create mode 100644 orte/tools/orte-ps/orte-ps.c create mode 100644 orte/tools/orte-restart/Makefile.am create mode 100644 orte/tools/orte-restart/help-orte-restart.txt create mode 100644 orte/tools/orte-restart/orte-restart.1in create mode 100644 orte/tools/orte-restart/orte-restart.c create mode 100644 orte/tools/orte-server/Makefile.am create mode 100644 orte/tools/orte-server/help-orte-server.txt create mode 100644 orte/tools/orte-server/orte-server.1in create mode 100644 orte/tools/orte-server/orte-server.c create mode 100644 orte/tools/orte-top/Makefile.am create mode 100644 orte/tools/orte-top/help-orte-top.txt create mode 100644 orte/tools/orte-top/orte-top.1in create mode 100644 orte/tools/orte-top/orte-top.c create mode 100644 orte/tools/orted/Makefile.am create mode 100644 orte/tools/orted/orted.1in create mode 100644 orte/tools/orted/orted.c create mode 100644 orte/tools/orterun/Makefile.am create mode 100644 orte/tools/orterun/help-orterun.txt create mode 100644 orte/tools/orterun/main.c create mode 100644 orte/tools/orterun/orterun.1in create mode 100644 orte/tools/orterun/orterun.c create mode 100644 orte/tools/orterun/orterun.h create mode 100644 orte/tools/wrappers/Makefile.am create mode 100644 orte/tools/wrappers/orte.pc.in create mode 100644 orte/tools/wrappers/orte_wrapper_script.in create mode 100644 orte/tools/wrappers/ortecc-wrapper-data.txt.in create mode 100644 orte/util/Makefile.am create mode 100644 orte/util/attr.c create mode 100644 orte/util/attr.h create mode 100644 orte/util/comm/comm.c create mode 100644 orte/util/comm/comm.h create mode 100644 orte/util/compress.c create mode 100644 orte/util/compress.h create mode 100644 orte/util/context_fns.c create mode 100644 orte/util/context_fns.h create mode 100644 orte/util/dash_host/dash_host.c create mode 100644 orte/util/dash_host/dash_host.h create mode 100644 orte/util/dash_host/help-dash-host.txt create mode 100644 orte/util/error_strings.c create mode 100644 orte/util/error_strings.h create mode 100644 orte/util/help-regex.txt create mode 100644 orte/util/hnp_contact.c create mode 100644 orte/util/hnp_contact.h create mode 100644 orte/util/hostfile/help-hostfile.txt create mode 100644 orte/util/hostfile/hostfile.c create mode 100644 orte/util/hostfile/hostfile.h create mode 100644 orte/util/hostfile/hostfile_lex.h create mode 100644 orte/util/hostfile/hostfile_lex.l create mode 100644 orte/util/hostfile/orte_hosts.7in create mode 100644 orte/util/listener.c create mode 100644 orte/util/listener.h create mode 100644 orte/util/name_fns.c create mode 100644 orte/util/name_fns.h create mode 100644 orte/util/nidmap.c create mode 100644 orte/util/nidmap.h create mode 100644 orte/util/parse_options.c create mode 100644 orte/util/parse_options.h create mode 100644 orte/util/pre_condition_transports.c create mode 100644 orte/util/pre_condition_transports.h create mode 100644 orte/util/proc_info.c create mode 100644 orte/util/proc_info.h create mode 100644 orte/util/regex.c create mode 100644 orte/util/regex.h create mode 100644 orte/util/session_dir.c create mode 100644 orte/util/session_dir.h create mode 100644 orte/util/show_help.c create mode 100644 orte/util/show_help.h create mode 100644 orte/util/threads.h create mode 100644 oshmem/Makefile.am create mode 100644 oshmem/include/Makefile.am create mode 100644 oshmem/include/oshmem/Makefile.am create mode 100644 oshmem/include/oshmem/constants.h create mode 100644 oshmem/include/oshmem/types.h create mode 100644 oshmem/include/oshmem/version.h.in create mode 100644 oshmem/include/oshmem_config.h create mode 100644 oshmem/include/pshmem.h create mode 100644 oshmem/include/pshmemx.h create mode 100644 oshmem/include/shmem-compat.h create mode 100644 oshmem/include/shmem.fh create mode 100644 oshmem/include/shmem.h.in create mode 100644 oshmem/include/shmemx.h create mode 100644 oshmem/info/Makefile.am create mode 100644 oshmem/info/info.c create mode 100644 oshmem/info/info.h create mode 100644 oshmem/mca/Makefile.am create mode 100644 oshmem/mca/atomic/Makefile.am create mode 100644 oshmem/mca/atomic/atomic.h create mode 100644 oshmem/mca/atomic/base/Makefile.am create mode 100644 oshmem/mca/atomic/base/atomic_base_available.c create mode 100644 oshmem/mca/atomic/base/atomic_base_frame.c create mode 100644 oshmem/mca/atomic/base/atomic_base_select.c create mode 100644 oshmem/mca/atomic/base/base.h create mode 100644 oshmem/mca/atomic/basic/Makefile.am create mode 100644 oshmem/mca/atomic/basic/atomic_basic.h create mode 100644 oshmem/mca/atomic/basic/atomic_basic_component.c create mode 100644 oshmem/mca/atomic/basic/atomic_basic_cswap.c create mode 100644 oshmem/mca/atomic/basic/atomic_basic_fadd.c create mode 100644 oshmem/mca/atomic/basic/atomic_basic_module.c create mode 100644 oshmem/mca/atomic/mxm/Makefile.am create mode 100644 oshmem/mca/atomic/mxm/atomic_mxm.h create mode 100644 oshmem/mca/atomic/mxm/atomic_mxm_component.c create mode 100644 oshmem/mca/atomic/mxm/atomic_mxm_cswap.c create mode 100644 oshmem/mca/atomic/mxm/atomic_mxm_fadd.c create mode 100644 oshmem/mca/atomic/mxm/atomic_mxm_module.c create mode 100644 oshmem/mca/atomic/mxm/configure.m4 create mode 100644 oshmem/mca/atomic/ucx/Makefile.am create mode 100644 oshmem/mca/atomic/ucx/atomic_ucx.h create mode 100644 oshmem/mca/atomic/ucx/atomic_ucx_component.c create mode 100644 oshmem/mca/atomic/ucx/atomic_ucx_cswap.c create mode 100644 oshmem/mca/atomic/ucx/atomic_ucx_fadd.c create mode 100644 oshmem/mca/atomic/ucx/atomic_ucx_module.c create mode 100644 oshmem/mca/atomic/ucx/configure.m4 create mode 100644 oshmem/mca/mca.h create mode 100644 oshmem/mca/memheap/Makefile.am create mode 100644 oshmem/mca/memheap/README create mode 100644 oshmem/mca/memheap/base/Makefile.am create mode 100644 oshmem/mca/memheap/base/base.h create mode 100644 oshmem/mca/memheap/base/help-oshmem-memheap.txt create mode 100644 oshmem/mca/memheap/base/memheap_base_alloc.c create mode 100644 oshmem/mca/memheap/base/memheap_base_frame.c create mode 100644 oshmem/mca/memheap/base/memheap_base_mkey.c create mode 100644 oshmem/mca/memheap/base/memheap_base_register.c create mode 100644 oshmem/mca/memheap/base/memheap_base_select.c create mode 100644 oshmem/mca/memheap/base/memheap_base_static.c create mode 100644 oshmem/mca/memheap/buddy/Makefile.am create mode 100644 oshmem/mca/memheap/buddy/memheap_buddy.c create mode 100644 oshmem/mca/memheap/buddy/memheap_buddy.h create mode 100644 oshmem/mca/memheap/buddy/memheap_buddy_component.c create mode 100644 oshmem/mca/memheap/buddy/memheap_buddy_component.h create mode 100644 oshmem/mca/memheap/configure.m4 create mode 100644 oshmem/mca/memheap/memheap.h create mode 100644 oshmem/mca/memheap/ptmalloc/Makefile.am create mode 100644 oshmem/mca/memheap/ptmalloc/malloc.c create mode 100644 oshmem/mca/memheap/ptmalloc/malloc_defs.h create mode 100644 oshmem/mca/memheap/ptmalloc/memheap_ptmalloc.c create mode 100644 oshmem/mca/memheap/ptmalloc/memheap_ptmalloc.h create mode 100644 oshmem/mca/memheap/ptmalloc/memheap_ptmalloc_component.c create mode 100644 oshmem/mca/memheap/ptmalloc/memheap_ptmalloc_component.h create mode 100644 oshmem/mca/scoll/Makefile.am create mode 100644 oshmem/mca/scoll/base/Makefile.am create mode 100644 oshmem/mca/scoll/base/base.h create mode 100644 oshmem/mca/scoll/base/scoll_base_available.c create mode 100644 oshmem/mca/scoll/base/scoll_base_frame.c create mode 100644 oshmem/mca/scoll/base/scoll_base_select.c create mode 100644 oshmem/mca/scoll/basic/Makefile.am create mode 100644 oshmem/mca/scoll/basic/scoll_basic.h create mode 100644 oshmem/mca/scoll/basic/scoll_basic_alltoall.c create mode 100644 oshmem/mca/scoll/basic/scoll_basic_barrier.c create mode 100644 oshmem/mca/scoll/basic/scoll_basic_broadcast.c create mode 100644 oshmem/mca/scoll/basic/scoll_basic_collect.c create mode 100644 oshmem/mca/scoll/basic/scoll_basic_component.c create mode 100644 oshmem/mca/scoll/basic/scoll_basic_module.c create mode 100644 oshmem/mca/scoll/basic/scoll_basic_reduce.c create mode 100644 oshmem/mca/scoll/fca/Makefile.am create mode 100644 oshmem/mca/scoll/fca/configure.m4 create mode 100644 oshmem/mca/scoll/fca/help-oshmem-scoll-fca.txt create mode 100644 oshmem/mca/scoll/fca/scoll_fca.h create mode 100644 oshmem/mca/scoll/fca/scoll_fca_api.h create mode 100644 oshmem/mca/scoll/fca/scoll_fca_component.c create mode 100644 oshmem/mca/scoll/fca/scoll_fca_debug.h create mode 100644 oshmem/mca/scoll/fca/scoll_fca_module.c create mode 100644 oshmem/mca/scoll/fca/scoll_fca_ops.c create mode 100644 oshmem/mca/scoll/mpi/Makefile.am create mode 100644 oshmem/mca/scoll/mpi/help-oshmem-scoll-mpi.txt create mode 100644 oshmem/mca/scoll/mpi/scoll_mpi.h create mode 100644 oshmem/mca/scoll/mpi/scoll_mpi_component.c create mode 100644 oshmem/mca/scoll/mpi/scoll_mpi_debug.h create mode 100644 oshmem/mca/scoll/mpi/scoll_mpi_dtypes.h create mode 100644 oshmem/mca/scoll/mpi/scoll_mpi_module.c create mode 100644 oshmem/mca/scoll/mpi/scoll_mpi_ops.c create mode 100644 oshmem/mca/scoll/scoll.h create mode 100644 oshmem/mca/spml/Makefile.am create mode 100644 oshmem/mca/spml/base/Makefile.am create mode 100644 oshmem/mca/spml/base/base.h create mode 100644 oshmem/mca/spml/base/spml_base.c create mode 100644 oshmem/mca/spml/base/spml_base_atomicreq.c create mode 100644 oshmem/mca/spml/base/spml_base_atomicreq.h create mode 100644 oshmem/mca/spml/base/spml_base_frame.c create mode 100644 oshmem/mca/spml/base/spml_base_getreq.c create mode 100644 oshmem/mca/spml/base/spml_base_getreq.h create mode 100644 oshmem/mca/spml/base/spml_base_putreq.c create mode 100644 oshmem/mca/spml/base/spml_base_putreq.h create mode 100644 oshmem/mca/spml/base/spml_base_request.c create mode 100644 oshmem/mca/spml/base/spml_base_request.h create mode 100644 oshmem/mca/spml/base/spml_base_request_dbg.h create mode 100644 oshmem/mca/spml/base/spml_base_select.c create mode 100644 oshmem/mca/spml/configure.m4 create mode 100644 oshmem/mca/spml/ikrit/Makefile.am create mode 100644 oshmem/mca/spml/ikrit/configure.m4 create mode 100644 oshmem/mca/spml/ikrit/help-oshmem-spml-ikrit.txt create mode 100644 oshmem/mca/spml/ikrit/spml_ikrit.c create mode 100644 oshmem/mca/spml/ikrit/spml_ikrit.h create mode 100644 oshmem/mca/spml/ikrit/spml_ikrit_component.c create mode 100644 oshmem/mca/spml/ikrit/spml_ikrit_component.h create mode 100644 oshmem/mca/spml/spml.h create mode 100644 oshmem/mca/spml/ucx/Makefile.am create mode 100644 oshmem/mca/spml/ucx/configure.m4 create mode 100644 oshmem/mca/spml/ucx/spml_ucx.c create mode 100644 oshmem/mca/spml/ucx/spml_ucx.h create mode 100644 oshmem/mca/spml/ucx/spml_ucx_component.c create mode 100644 oshmem/mca/spml/ucx/spml_ucx_component.h create mode 100644 oshmem/mca/sshmem/Makefile.am create mode 100644 oshmem/mca/sshmem/base/Makefile.am create mode 100644 oshmem/mca/sshmem/base/base.h create mode 100644 oshmem/mca/sshmem/base/help-oshmem-sshmem.txt create mode 100644 oshmem/mca/sshmem/base/sshmem_base_close.c create mode 100644 oshmem/mca/sshmem/base/sshmem_base_open.c create mode 100644 oshmem/mca/sshmem/base/sshmem_base_select.c create mode 100644 oshmem/mca/sshmem/base/sshmem_base_wrappers.c create mode 100644 oshmem/mca/sshmem/mmap/Makefile.am create mode 100644 oshmem/mca/sshmem/mmap/configure.m4 create mode 100644 oshmem/mca/sshmem/mmap/help-oshmem-sshmem-mmap.txt create mode 100644 oshmem/mca/sshmem/mmap/sshmem_mmap.h create mode 100644 oshmem/mca/sshmem/mmap/sshmem_mmap_component.c create mode 100644 oshmem/mca/sshmem/mmap/sshmem_mmap_module.c create mode 100644 oshmem/mca/sshmem/sshmem.h create mode 100644 oshmem/mca/sshmem/sshmem_types.h create mode 100644 oshmem/mca/sshmem/sysv/Makefile.am create mode 100644 oshmem/mca/sshmem/sysv/configure.m4 create mode 100644 oshmem/mca/sshmem/sysv/help-oshmem-sshmem-sysv.txt create mode 100644 oshmem/mca/sshmem/sysv/sshmem_sysv.h create mode 100644 oshmem/mca/sshmem/sysv/sshmem_sysv_component.c create mode 100644 oshmem/mca/sshmem/sysv/sshmem_sysv_module.c create mode 100644 oshmem/mca/sshmem/ucx/Makefile.am create mode 100644 oshmem/mca/sshmem/ucx/configure.m4 create mode 100644 oshmem/mca/sshmem/ucx/sshmem_ucx.h create mode 100644 oshmem/mca/sshmem/ucx/sshmem_ucx_component.c create mode 100644 oshmem/mca/sshmem/ucx/sshmem_ucx_module.c create mode 100644 oshmem/mca/sshmem/verbs/Makefile.am create mode 100644 oshmem/mca/sshmem/verbs/configure.m4 create mode 100644 oshmem/mca/sshmem/verbs/sshmem_verbs.h create mode 100644 oshmem/mca/sshmem/verbs/sshmem_verbs_component.c create mode 100644 oshmem/mca/sshmem/verbs/sshmem_verbs_module.c create mode 100644 oshmem/op/Makefile.am create mode 100644 oshmem/op/op.c create mode 100644 oshmem/op/op.h create mode 100644 oshmem/proc/Makefile.am create mode 100644 oshmem/proc/proc.c create mode 100644 oshmem/proc/proc.h create mode 100644 oshmem/proc/proc_group_cache.c create mode 100644 oshmem/proc/proc_group_cache.h create mode 100644 oshmem/request/Makefile.am create mode 100644 oshmem/request/request.c create mode 100644 oshmem/request/request.h create mode 100644 oshmem/request/request_dbg.h create mode 100644 oshmem/runtime/Makefile.am create mode 100644 oshmem/runtime/help-shmem-runtime.txt create mode 100644 oshmem/runtime/oshmem_info_support.c create mode 100644 oshmem/runtime/oshmem_info_support.h create mode 100644 oshmem/runtime/oshmem_shmem_abort.c create mode 100644 oshmem/runtime/oshmem_shmem_exchange.c create mode 100644 oshmem/runtime/oshmem_shmem_finalize.c create mode 100644 oshmem/runtime/oshmem_shmem_init.c create mode 100644 oshmem/runtime/oshmem_shmem_params.c create mode 100644 oshmem/runtime/oshmem_shmem_preconnect.h create mode 100644 oshmem/runtime/params.h create mode 100644 oshmem/runtime/runtime.h create mode 100644 oshmem/shmem/Makefile.am create mode 100644 oshmem/shmem/c/Makefile.am create mode 100644 oshmem/shmem/c/profile/Makefile.am create mode 100644 oshmem/shmem/c/profile/defines.h create mode 100644 oshmem/shmem/c/shmem_add.c create mode 100644 oshmem/shmem/c/shmem_addr_accessible.c create mode 100644 oshmem/shmem/c/shmem_align.c create mode 100644 oshmem/shmem/c/shmem_alloc.c create mode 100644 oshmem/shmem/c/shmem_alltoall.c create mode 100644 oshmem/shmem/c/shmem_barrier.c create mode 100644 oshmem/shmem/c/shmem_broadcast.c create mode 100644 oshmem/shmem/c/shmem_clear_cache_inv.c create mode 100644 oshmem/shmem/c/shmem_clear_cache_line_inv.c create mode 100644 oshmem/shmem/c/shmem_clear_lock.c create mode 100644 oshmem/shmem/c/shmem_collect.c create mode 100644 oshmem/shmem/c/shmem_cswap.c create mode 100644 oshmem/shmem/c/shmem_fadd.c create mode 100644 oshmem/shmem/c/shmem_fence.c create mode 100644 oshmem/shmem/c/shmem_fetch.c create mode 100644 oshmem/shmem/c/shmem_finalize.c create mode 100644 oshmem/shmem/c/shmem_finc.c create mode 100644 oshmem/shmem/c/shmem_free.c create mode 100644 oshmem/shmem/c/shmem_g.c create mode 100644 oshmem/shmem/c/shmem_get.c create mode 100644 oshmem/shmem/c/shmem_get_nb.c create mode 100644 oshmem/shmem/c/shmem_global_exit.c create mode 100644 oshmem/shmem/c/shmem_iget.c create mode 100644 oshmem/shmem/c/shmem_inc.c create mode 100644 oshmem/shmem/c/shmem_info.c create mode 100644 oshmem/shmem/c/shmem_init.c create mode 100644 oshmem/shmem/c/shmem_iput.c create mode 100644 oshmem/shmem/c/shmem_lock.c create mode 100644 oshmem/shmem/c/shmem_p.c create mode 100644 oshmem/shmem/c/shmem_pe_accessible.c create mode 100644 oshmem/shmem/c/shmem_ptr.c create mode 100644 oshmem/shmem/c/shmem_put.c create mode 100644 oshmem/shmem/c/shmem_put_nb.c create mode 100644 oshmem/shmem/c/shmem_query.c create mode 100644 oshmem/shmem/c/shmem_quiet.c create mode 100644 oshmem/shmem/c/shmem_realloc.c create mode 100644 oshmem/shmem/c/shmem_reduce.c create mode 100644 oshmem/shmem/c/shmem_set.c create mode 100644 oshmem/shmem/c/shmem_set_cache_inv.c create mode 100644 oshmem/shmem/c/shmem_set_cache_line_inv.c create mode 100644 oshmem/shmem/c/shmem_set_lock.c create mode 100644 oshmem/shmem/c/shmem_swap.c create mode 100644 oshmem/shmem/c/shmem_test_lock.c create mode 100644 oshmem/shmem/c/shmem_udcflush.c create mode 100644 oshmem/shmem/c/shmem_udcflush_line.c create mode 100644 oshmem/shmem/c/shmem_wait.c create mode 100644 oshmem/shmem/fortran/Makefile.am create mode 100644 oshmem/shmem/fortran/bindings.h create mode 100644 oshmem/shmem/fortran/profile/Makefile.am create mode 100644 oshmem/shmem/fortran/profile/defines.h create mode 100644 oshmem/shmem/fortran/profile/pbindings.h create mode 100644 oshmem/shmem/fortran/profile/prototypes_pshmem.h create mode 100644 oshmem/shmem/fortran/prototypes_shmem.h create mode 100644 oshmem/shmem/fortran/shmem_addr_accessible_f.c create mode 100644 oshmem/shmem/fortran/shmem_alltoall_f.c create mode 100644 oshmem/shmem/fortran/shmem_and_to_all_f.c create mode 100644 oshmem/shmem/fortran/shmem_barrier_all_f.c create mode 100644 oshmem/shmem/fortran/shmem_barrier_f.c create mode 100644 oshmem/shmem/fortran/shmem_broadcast_f.c create mode 100644 oshmem/shmem/fortran/shmem_cache_f.c create mode 100644 oshmem/shmem/fortran/shmem_character_get_f.c create mode 100644 oshmem/shmem/fortran/shmem_character_put_f.c create mode 100644 oshmem/shmem/fortran/shmem_collect_f.c create mode 100644 oshmem/shmem/fortran/shmem_complex_get_f.c create mode 100644 oshmem/shmem/fortran/shmem_complex_iget_f.c create mode 100644 oshmem/shmem/fortran/shmem_complex_iput_f.c create mode 100644 oshmem/shmem/fortran/shmem_complex_put_f.c create mode 100644 oshmem/shmem/fortran/shmem_double_get_f.c create mode 100644 oshmem/shmem/fortran/shmem_double_iget_f.c create mode 100644 oshmem/shmem/fortran/shmem_double_iput_f.c create mode 100644 oshmem/shmem/fortran/shmem_double_put_f.c create mode 100644 oshmem/shmem/fortran/shmem_fence_f.c create mode 100644 oshmem/shmem/fortran/shmem_finalize_f.c create mode 100644 oshmem/shmem/fortran/shmem_fortran_pointer.h create mode 100644 oshmem/shmem/fortran/shmem_get128_f.c create mode 100644 oshmem/shmem/fortran/shmem_get32_f.c create mode 100644 oshmem/shmem/fortran/shmem_get4_f.c create mode 100644 oshmem/shmem/fortran/shmem_get64_f.c create mode 100644 oshmem/shmem/fortran/shmem_get8_f.c create mode 100644 oshmem/shmem/fortran/shmem_get_nb_f.c create mode 100644 oshmem/shmem/fortran/shmem_getmem_f.c create mode 100644 oshmem/shmem/fortran/shmem_global_exit_f.c create mode 100644 oshmem/shmem/fortran/shmem_iget128_f.c create mode 100644 oshmem/shmem/fortran/shmem_iget32_f.c create mode 100644 oshmem/shmem/fortran/shmem_iget4_f.c create mode 100644 oshmem/shmem/fortran/shmem_iget64_f.c create mode 100644 oshmem/shmem/fortran/shmem_iget8_f.c create mode 100644 oshmem/shmem/fortran/shmem_info_f.c create mode 100644 oshmem/shmem/fortran/shmem_init_f.c create mode 100644 oshmem/shmem/fortran/shmem_int4_add_f.c create mode 100644 oshmem/shmem/fortran/shmem_int4_cswap_f.c create mode 100644 oshmem/shmem/fortran/shmem_int4_fadd_f.c create mode 100644 oshmem/shmem/fortran/shmem_int4_fetch_f.c create mode 100644 oshmem/shmem/fortran/shmem_int4_finc_f.c create mode 100644 oshmem/shmem/fortran/shmem_int4_inc_f.c create mode 100644 oshmem/shmem/fortran/shmem_int4_set_f.c create mode 100644 oshmem/shmem/fortran/shmem_int4_swap_f.c create mode 100644 oshmem/shmem/fortran/shmem_int4_wait_f.c create mode 100644 oshmem/shmem/fortran/shmem_int4_wait_until_f.c create mode 100644 oshmem/shmem/fortran/shmem_int8_add_f.c create mode 100644 oshmem/shmem/fortran/shmem_int8_cswap_f.c create mode 100644 oshmem/shmem/fortran/shmem_int8_fadd_f.c create mode 100644 oshmem/shmem/fortran/shmem_int8_fetch_f.c create mode 100644 oshmem/shmem/fortran/shmem_int8_finc_f.c create mode 100644 oshmem/shmem/fortran/shmem_int8_inc_f.c create mode 100644 oshmem/shmem/fortran/shmem_int8_set_f.c create mode 100644 oshmem/shmem/fortran/shmem_int8_swap_f.c create mode 100644 oshmem/shmem/fortran/shmem_int8_wait_f.c create mode 100644 oshmem/shmem/fortran/shmem_int8_wait_until_f.c create mode 100644 oshmem/shmem/fortran/shmem_integer_get_f.c create mode 100644 oshmem/shmem/fortran/shmem_integer_iget_f.c create mode 100644 oshmem/shmem/fortran/shmem_integer_iput_f.c create mode 100644 oshmem/shmem/fortran/shmem_integer_put_f.c create mode 100644 oshmem/shmem/fortran/shmem_iput128_f.c create mode 100644 oshmem/shmem/fortran/shmem_iput32_f.c create mode 100644 oshmem/shmem/fortran/shmem_iput4_f.c create mode 100644 oshmem/shmem/fortran/shmem_iput64_f.c create mode 100644 oshmem/shmem/fortran/shmem_iput8_f.c create mode 100644 oshmem/shmem/fortran/shmem_lock_f.c create mode 100644 oshmem/shmem/fortran/shmem_logical_get_f.c create mode 100644 oshmem/shmem/fortran/shmem_logical_iget_f.c create mode 100644 oshmem/shmem/fortran/shmem_logical_iput_f.c create mode 100644 oshmem/shmem/fortran/shmem_logical_put_f.c create mode 100644 oshmem/shmem/fortran/shmem_max_to_all_f.c create mode 100644 oshmem/shmem/fortran/shmem_min_to_all_f.c create mode 100644 oshmem/shmem/fortran/shmem_my_pe_f.c create mode 100644 oshmem/shmem/fortran/shmem_n_pes_f.c create mode 100644 oshmem/shmem/fortran/shmem_or_to_all_f.c create mode 100644 oshmem/shmem/fortran/shmem_pe_accessible_f.c create mode 100644 oshmem/shmem/fortran/shmem_prod_to_all_f.c create mode 100644 oshmem/shmem/fortran/shmem_ptr_f.c create mode 100644 oshmem/shmem/fortran/shmem_put128_f.c create mode 100644 oshmem/shmem/fortran/shmem_put32_f.c create mode 100644 oshmem/shmem/fortran/shmem_put4_f.c create mode 100644 oshmem/shmem/fortran/shmem_put64_f.c create mode 100644 oshmem/shmem/fortran/shmem_put8_f.c create mode 100644 oshmem/shmem/fortran/shmem_put_nb_f.c create mode 100644 oshmem/shmem/fortran/shmem_putmem_f.c create mode 100644 oshmem/shmem/fortran/shmem_quiet_f.c create mode 100644 oshmem/shmem/fortran/shmem_real4_fetch_f.c create mode 100644 oshmem/shmem/fortran/shmem_real4_set_f.c create mode 100644 oshmem/shmem/fortran/shmem_real4_swap_f.c create mode 100644 oshmem/shmem/fortran/shmem_real8_fetch_f.c create mode 100644 oshmem/shmem/fortran/shmem_real8_set_f.c create mode 100644 oshmem/shmem/fortran/shmem_real8_swap_f.c create mode 100644 oshmem/shmem/fortran/shmem_real_get_f.c create mode 100644 oshmem/shmem/fortran/shmem_real_iget_f.c create mode 100644 oshmem/shmem/fortran/shmem_real_iput_f.c create mode 100644 oshmem/shmem/fortran/shmem_real_put_f.c create mode 100644 oshmem/shmem/fortran/shmem_sum_to_all_f.c create mode 100644 oshmem/shmem/fortran/shmem_swap_f.c create mode 100644 oshmem/shmem/fortran/shmem_wait_f.c create mode 100644 oshmem/shmem/fortran/shmem_wait_until_f.c create mode 100644 oshmem/shmem/fortran/shmem_xor_to_all_f.c create mode 100644 oshmem/shmem/fortran/shpalloc_f.c create mode 100644 oshmem/shmem/fortran/shpclmove_f.c create mode 100644 oshmem/shmem/fortran/shpdeallc_f.c create mode 100644 oshmem/shmem/help-shmem-api.txt create mode 100644 oshmem/shmem/man/man3/Makefile.extra create mode 100644 oshmem/shmem/man/man3/OpenSHMEM.3in create mode 100644 oshmem/shmem/man/man3/_my_pe.3in create mode 100644 oshmem/shmem/man/man3/_num_pes.3in create mode 100644 oshmem/shmem/man/man3/intro_shmem.3in create mode 100644 oshmem/shmem/man/man3/shfree.3in create mode 100644 oshmem/shmem/man/man3/shmalloc.3in create mode 100644 oshmem/shmem/man/man3/shmem_addr_accessible.3in create mode 100644 oshmem/shmem/man/man3/shmem_align.3in create mode 100644 oshmem/shmem/man/man3/shmem_alltoall32.3in create mode 100644 oshmem/shmem/man/man3/shmem_alltoall64.3in create mode 100644 oshmem/shmem/man/man3/shmem_alltoalls32.3in create mode 100644 oshmem/shmem/man/man3/shmem_alltoalls64.3in create mode 100644 oshmem/shmem/man/man3/shmem_barrier.3in create mode 100644 oshmem/shmem/man/man3/shmem_barrier_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_broadcast32.3in create mode 100644 oshmem/shmem/man/man3/shmem_broadcast64.3in create mode 100644 oshmem/shmem/man/man3/shmem_char_g.3in create mode 100644 oshmem/shmem/man/man3/shmem_char_get.3in create mode 100644 oshmem/shmem/man/man3/shmem_char_get_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_char_p.3in create mode 100644 oshmem/shmem/man/man3/shmem_char_put.3in create mode 100644 oshmem/shmem/man/man3/shmem_char_put_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_clear_cache_inv.3in create mode 100644 oshmem/shmem/man/man3/shmem_clear_cache_line_inv.3in create mode 100644 oshmem/shmem/man/man3/shmem_clear_lock.3in create mode 100644 oshmem/shmem/man/man3/shmem_collect32.3in create mode 100644 oshmem/shmem/man/man3/shmem_collect64.3in create mode 100644 oshmem/shmem/man/man3/shmem_complexd_prod_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_complexd_sum_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_complexf_prod_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_complexf_sum_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_double_fetch.3in create mode 100644 oshmem/shmem/man/man3/shmem_double_g.3in create mode 100644 oshmem/shmem/man/man3/shmem_double_get.3in create mode 100644 oshmem/shmem/man/man3/shmem_double_get_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_double_iget.3in create mode 100644 oshmem/shmem/man/man3/shmem_double_iput.3in create mode 100644 oshmem/shmem/man/man3/shmem_double_max_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_double_min_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_double_p.3in create mode 100644 oshmem/shmem/man/man3/shmem_double_prod_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_double_put.3in create mode 100644 oshmem/shmem/man/man3/shmem_double_put_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_double_set.3in create mode 100644 oshmem/shmem/man/man3/shmem_double_sum_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_double_swap.3in create mode 100644 oshmem/shmem/man/man3/shmem_fcollect32.3in create mode 100644 oshmem/shmem/man/man3/shmem_fcollect64.3in create mode 100644 oshmem/shmem/man/man3/shmem_fence.3in create mode 100644 oshmem/shmem/man/man3/shmem_finalize.3in create mode 100644 oshmem/shmem/man/man3/shmem_float_fetch.3in create mode 100644 oshmem/shmem/man/man3/shmem_float_g.3in create mode 100644 oshmem/shmem/man/man3/shmem_float_get.3in create mode 100644 oshmem/shmem/man/man3/shmem_float_get_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_float_iget.3in create mode 100644 oshmem/shmem/man/man3/shmem_float_iput.3in create mode 100644 oshmem/shmem/man/man3/shmem_float_max_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_float_min_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_float_p.3in create mode 100644 oshmem/shmem/man/man3/shmem_float_prod_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_float_put.3in create mode 100644 oshmem/shmem/man/man3/shmem_float_put_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_float_set.3in create mode 100644 oshmem/shmem/man/man3/shmem_float_sum_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_float_swap.3in create mode 100644 oshmem/shmem/man/man3/shmem_free.3in create mode 100644 oshmem/shmem/man/man3/shmem_get128.3in create mode 100644 oshmem/shmem/man/man3/shmem_get128_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_get16_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_get32.3in create mode 100644 oshmem/shmem/man/man3/shmem_get32_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_get64.3in create mode 100644 oshmem/shmem/man/man3/shmem_get64_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_get8_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_getmem.3in create mode 100644 oshmem/shmem/man/man3/shmem_getmem_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_global_exit.3in create mode 100644 oshmem/shmem/man/man3/shmem_iget128.3in create mode 100644 oshmem/shmem/man/man3/shmem_iget32.3in create mode 100644 oshmem/shmem/man/man3/shmem_iget64.3in create mode 100644 oshmem/shmem/man/man3/shmem_info_get_name.3in create mode 100644 oshmem/shmem/man/man3/shmem_info_get_version.3in create mode 100644 oshmem/shmem/man/man3/shmem_init.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_add.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_and_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_cswap.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_fadd.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_fetch.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_finc.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_g.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_get.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_get_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_iget.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_inc.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_iput.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_max_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_min_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_or_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_p.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_prod_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_put.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_put_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_set.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_sum_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_swap.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_wait.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_wait_until.3in create mode 100644 oshmem/shmem/man/man3/shmem_int_xor_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_iput128.3in create mode 100644 oshmem/shmem/man/man3/shmem_iput32.3in create mode 100644 oshmem/shmem/man/man3/shmem_iput64.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_add.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_and_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_cswap.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_fadd.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_fetch.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_finc.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_g.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_get.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_get_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_iget.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_inc.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_iput.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_max_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_min_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_or_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_p.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_prod_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_put.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_put_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_set.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_sum_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_swap.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_wait.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_wait_until.3in create mode 100644 oshmem/shmem/man/man3/shmem_long_xor_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_longdouble_g.3in create mode 100644 oshmem/shmem/man/man3/shmem_longdouble_get.3in create mode 100644 oshmem/shmem/man/man3/shmem_longdouble_get_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_longdouble_iget.3in create mode 100644 oshmem/shmem/man/man3/shmem_longdouble_iput.3in create mode 100644 oshmem/shmem/man/man3/shmem_longdouble_max_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_longdouble_min_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_longdouble_p.3in create mode 100644 oshmem/shmem/man/man3/shmem_longdouble_prod_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_longdouble_put.3in create mode 100644 oshmem/shmem/man/man3/shmem_longdouble_put_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_longdouble_sum_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_add.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_and_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_cswap.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_fadd.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_fetch.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_finc.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_g.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_get.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_get_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_iget.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_inc.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_iput.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_max_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_min_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_or_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_p.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_prod_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_put.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_put_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_set.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_sum_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_swap.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_wait.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_wait_until.3in create mode 100644 oshmem/shmem/man/man3/shmem_longlong_xor_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_malloc.3in create mode 100644 oshmem/shmem/man/man3/shmem_my_pe.3in create mode 100644 oshmem/shmem/man/man3/shmem_n_pes.3in create mode 100644 oshmem/shmem/man/man3/shmem_pe_accessible.3in create mode 100644 oshmem/shmem/man/man3/shmem_ptr.3in create mode 100644 oshmem/shmem/man/man3/shmem_put128.3in create mode 100644 oshmem/shmem/man/man3/shmem_put128_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_put16_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_put32.3in create mode 100644 oshmem/shmem/man/man3/shmem_put32_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_put64.3in create mode 100644 oshmem/shmem/man/man3/shmem_put64_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_put8_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_putmem.3in create mode 100644 oshmem/shmem/man/man3/shmem_putmem_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_quiet.3in create mode 100644 oshmem/shmem/man/man3/shmem_realloc.3in create mode 100644 oshmem/shmem/man/man3/shmem_set_cache_inv.3in create mode 100644 oshmem/shmem/man/man3/shmem_set_cache_line_inv.3in create mode 100644 oshmem/shmem/man/man3/shmem_set_lock.3in create mode 100644 oshmem/shmem/man/man3/shmem_short_and_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_short_g.3in create mode 100644 oshmem/shmem/man/man3/shmem_short_get.3in create mode 100644 oshmem/shmem/man/man3/shmem_short_get_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_short_iget.3in create mode 100644 oshmem/shmem/man/man3/shmem_short_iput.3in create mode 100644 oshmem/shmem/man/man3/shmem_short_max_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_short_min_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_short_or_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_short_p.3in create mode 100644 oshmem/shmem/man/man3/shmem_short_prod_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_short_put.3in create mode 100644 oshmem/shmem/man/man3/shmem_short_put_nbi.3in create mode 100644 oshmem/shmem/man/man3/shmem_short_sum_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_short_wait.3in create mode 100644 oshmem/shmem/man/man3/shmem_short_wait_until.3in create mode 100644 oshmem/shmem/man/man3/shmem_short_xor_to_all.3in create mode 100644 oshmem/shmem/man/man3/shmem_swap.3in create mode 100644 oshmem/shmem/man/man3/shmem_test_lock.3in create mode 100644 oshmem/shmem/man/man3/shmem_udcflush.3in create mode 100644 oshmem/shmem/man/man3/shmem_udcflush_line.3in create mode 100644 oshmem/shmem/man/man3/shmem_wait.3in create mode 100644 oshmem/shmem/man/man3/shmem_wait_until.3in create mode 100644 oshmem/shmem/man/man3/shmemalign.3in create mode 100644 oshmem/shmem/man/man3/shrealloc.3in create mode 100644 oshmem/shmem/man/man3/start_pes.3in create mode 100644 oshmem/shmem/shmem_api_logger.h create mode 100644 oshmem/shmem/shmem_lock.h create mode 100644 oshmem/tools/Makefile.am create mode 100644 oshmem/tools/oshmem_info/Makefile.am create mode 100644 oshmem/tools/oshmem_info/help-oshmem-info.txt create mode 100644 oshmem/tools/oshmem_info/oshmem_info.1in create mode 100644 oshmem/tools/oshmem_info/oshmem_info.c create mode 100644 oshmem/tools/oshmem_info/oshmem_info.h create mode 100644 oshmem/tools/oshmem_info/param.c create mode 100644 oshmem/tools/wrappers/Makefile.am create mode 100644 oshmem/tools/wrappers/shmemc++-wrapper-data.txt.in create mode 100644 oshmem/tools/wrappers/shmemcc-wrapper-data.txt.in create mode 100644 oshmem/tools/wrappers/shmemfort-wrapper-data.txt.in create mode 100644 oshmem/util/Makefile.am create mode 100644 oshmem/util/oshmem_util.c create mode 100644 oshmem/util/oshmem_util.h create mode 100644 test/Makefile.am create mode 100644 test/asm/Makefile.am create mode 100644 test/asm/atomic_barrier.c create mode 100644 test/asm/atomic_cmpset.c create mode 100644 test/asm/atomic_math.c create mode 100644 test/asm/atomic_spinlock.c create mode 100644 test/asm/run_tests create mode 100644 test/carto/carto-file create mode 100644 test/carto/carto_test.c create mode 100644 test/class/Makefile.am create mode 100644 test/class/ompi_rb_tree.c create mode 100644 test/class/opal_bitmap.c create mode 100644 test/class/opal_fifo.c create mode 100644 test/class/opal_hash_table.c create mode 100644 test/class/opal_lifo.c create mode 100644 test/class/opal_list.c create mode 100644 test/class/opal_pointer_array.c create mode 100644 test/class/opal_proc_table.c create mode 100644 test/class/opal_tree.c create mode 100644 test/class/opal_value_array.c create mode 100644 test/datatype/Makefile.am create mode 100644 test/datatype/checksum.c create mode 100644 test/datatype/ddt_lib.c create mode 100644 test/datatype/ddt_lib.h create mode 100644 test/datatype/ddt_pack.c create mode 100644 test/datatype/ddt_raw.c create mode 100644 test/datatype/ddt_test.c create mode 100644 test/datatype/external32.c create mode 100644 test/datatype/opal_datatype_test.c create mode 100644 test/datatype/opal_ddt_lib.c create mode 100644 test/datatype/opal_ddt_lib.h create mode 100644 test/datatype/position.c create mode 100644 test/datatype/position_noncontig.c create mode 100644 test/datatype/to_self.c create mode 100644 test/datatype/unpack_hetero.c create mode 100644 test/datatype/unpack_ooo.c create mode 100644 test/dss/Makefile.am create mode 100644 test/dss/dss_buffer.c create mode 100644 test/dss/dss_cmp.c create mode 100644 test/dss/dss_copy.c create mode 100644 test/dss/dss_payload.c create mode 100644 test/dss/dss_print.c create mode 100644 test/event/Makefile.am create mode 100644 test/event/event-test.c create mode 100644 test/event/signal-test.c create mode 100644 test/event/time-test.c create mode 100644 test/memchecker/Makefile.am create mode 100644 test/memchecker/irecv_init_check.c create mode 100644 test/memchecker/irecv_uninit_check.c create mode 100644 test/memchecker/non_blocking_recv_test.c create mode 100644 test/memchecker/non_blocking_send_test.c create mode 100644 test/monitoring/Makefile.am create mode 100644 test/monitoring/aggregate_profile.pl create mode 100644 test/monitoring/monitoring_prof.c create mode 100644 test/monitoring/monitoring_test.c create mode 100644 test/monitoring/profile2mat.pl create mode 100644 test/mpi/Makefile.am create mode 100644 test/mpi/environment/Makefile.am create mode 100644 test/mpi/environment/chello.c create mode 100755 test/mpi/environment/run_tests create mode 100755 test/mpi/run_tests create mode 100644 test/runtime/Makefile.am create mode 100644 test/runtime/README create mode 100644 test/runtime/opal_init_finalize.c create mode 100644 test/runtime/orte_init_finalize.c create mode 100644 test/runtime/sigchld.c create mode 100644 test/runtime/start_shut.c create mode 100644 test/support/Makefile.am create mode 100644 test/support/Makefile.options create mode 100644 test/support/support.c create mode 100644 test/support/support.h create mode 100644 test/threads/Makefile.am create mode 100644 test/threads/opal_condition.c create mode 100644 test/threads/opal_thread.c create mode 100644 test/util/Makefile.am create mode 100644 test/util/ompi_numtostr.c create mode 100644 test/util/opal_argv.c create mode 100644 test/util/opal_basename.c create mode 100644 test/util/opal_bit_ops.c create mode 100644 test/util/opal_error.c create mode 100644 test/util/opal_if.c create mode 100644 test/util/opal_os_create_dirpath.c create mode 100644 test/util/opal_os_path.c create mode 100644 test/util/opal_path_nfs.c create mode 100644 test/util/opal_timer.c create mode 100644 test/util/orte_session_dir.c create mode 100644 test/util/orte_universe_setup_file_io.c diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 00000000..1f19f0ad --- /dev/null +++ b/Doxyfile @@ -0,0 +1,1099 @@ +# Doxyfile 1.3.4 +# +# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = Open MPI + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = 0.1.1 + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = doxygen + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, +# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en +# (Japanese with English messages), Korean, Norwegian, Polish, Portuguese, +# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# This tag can be used to specify the encoding used in the generated output. +# The encoding is not always determined by the language that is chosen, +# but also whether or not the output is meant for Windows or non-Windows users. +# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES +# forces the Windows encoding (this is the default for the Windows binary), +# whereas setting the tag to NO uses a Unix-style encoding (the default for +# all platforms other than Windows). + +USE_WINDOWS_ENCODING = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will +# prepend the brief description of a member or function before the +# detailed description. Note: if both HIDE_UNDOC_MEMBERS and +# BRIEF_MEMBER_DESC are set to NO, the brief descriptions will be +# completely suppressed. + +REPEAT_BRIEF = YES + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show +# all inherited members of a class in the documentation of that class +# as if those members were ordinary class members. Constructors, +# destructors and assignment operators of the base classes will not be +# shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. It is allowed to use relative paths in the argument list. + +STRIP_FROM_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explict @brief command for a brief description. + +JAVADOC_AUTOBRIEF = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# reimplements. + +INHERIT_DOCS = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of +# C sources only. Doxygen will then generate output that is more +# tailored for C. For instance, some of the names that are used will +# be different. The list of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of +# Java sources only. Doxygen will then generate output that is more +# tailored for Java. For instance, namespaces will be presented as +# packages, qualified scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a +# class will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = opal orte ompi + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp +# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc + +FILE_PATTERNS = *.c *.h *.cc *.dox + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = opal/event ompi/mca/io/romio + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are +# excluded from the input. + +EXCLUDE_SYMLINKS = YES + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = static-modules.h *config*.h ompi_stdint.h ltdl.h + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. + +INPUT_FILTER = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = NO + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output dir. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = YES + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +#PAPER_TYPE = a4wide +PAPER_TYPE = letter + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimised for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assigments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = YES + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. + +PREDEFINED = DOXYGEN + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse the +# parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = doxygen/tagfile + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. Note that this +# option is superceded by the HAVE_DOT option below. This is only a fallback. It is +# recommended to install and use dot, since it yields more powerful graphs. + +CLASS_DIAGRAMS = YES + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similiar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes that +# lay further from the root node will be omitted. Note that setting this option to +# 1 or 2 may greatly reduce the computation time needed for large code bases. Also +# note that a graph may be further truncated if the graph's image dimensions are +# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). +# If 0 is used for the depth value (the default), the graph is not depth-constrained. + +MAX_DOT_GRAPH_DEPTH = 0 + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/HACKING b/HACKING new file mode 100644 index 00000000..473500aa --- /dev/null +++ b/HACKING @@ -0,0 +1,249 @@ +Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana + University Research and Technology + Corporation. All rights reserved. +Copyright (c) 2004-2005 The University of Tennessee and The University + of Tennessee Research Foundation. All rights + reserved. +Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + University of Stuttgart. All rights reserved. +Copyright (c) 2004-2005 The Regents of the University of California. + All rights reserved. +Copyright (c) 2008-2016 Cisco Systems, Inc. All rights reserved. +Copyright (c) 2013 Intel, Inc. All rights reserved. +$COPYRIGHT$ + +Additional copyrights may follow + +$HEADER$ + +Overview +======== + +This file is here for those who are building/exploring OMPI in its +source code form, most likely through a developer's tree (i.e., a +Git clone). + + +Developer Builds: Compiler Pickyness by Default +=============================================== + +If you are building Open MPI from a Git clone (i.e., there is a ".git" +directory in your build tree), the default build includes extra +compiler pickyness, which will result in more compiler warnings than +in non-developer builds. Getting these extra compiler warnings is +helpful to Open MPI developers in making the code base as clean as +possible. + +Developers can disable this picky-by-default behavior by using the +--disable-picky configure option. Also note that extra-picky compiles +do *not* happen automatically when you do a VPATH build (e.g., if +".git" is in your source tree, but not in your build tree). + +Prior versions of Open MPI would automatically activate a lot of +(performance-reducing) debugging code by default if ".git" was found +in your build tree. This is no longer true. You can manually enable +these (performance-reducing) debugging features in the Open MPI code +base with these configure options: + + --enable-debug + --enable-mem-debug + --enable-mem-profile + +NOTE: These options are really only relevant to those who are +developing Open MPI itself. They are not generally helpful for +debugging general MPI applications. + + +Use of GNU Autoconf, Automake, and Libtool (and m4) +=================================================== + +You need to read/care about this section *ONLY* if you are building +from a developer's tree (i.e., a Git clone of the Open MPI source +tree). If you have an Open MPI distribution tarball, the contents of +this section are optional -- you can (and probably should) skip +reading this section. + +If you are building Open MPI from a developer's tree, you must first +install fairly recent versions of the GNU tools Autoconf, Automake, +and Libtool (and possibly GNU m4, because recent versions of Autoconf +have specific GNU m4 version requirements). The specific versions +required depend on if you are using the Git master branch or a release +branch (and which release branch you are using). The specific +versions can be found here: + + http://www.open-mpi.org/source/building.php + +You can check what versions of the autotools you have installed with +the following: + +shell$ m4 --version +shell$ autoconf --version +shell$ automake --version +shell$ libtoolize --version + +Required version levels for all the OMPI releases can be found here: + +http://www.open-mpi.org/source/building.php + +To strengthen the above point: the core Open MPI developers typically +use very, very recent versions of the GNU tools. There are known bugs +in older versions of the GNU tools that Open MPI no longer compensates +for (it seemed senseless to indefinitely support patches for ancient +versions of Autoconf, for example). You *WILL* have problems if you +do not use recent versions of the GNU tools. + +If you need newer versions, you are *strongly* encouraged to heed the +following advice: + +NOTE: On MacOS/X, the default "libtool" program is different than the + GNU libtool. You must download and install the GNU version + (e.g., via MacPorts, Homebrew, or some other mechanism). + +1. Unless your OS distribution has easy-to-use binary installations, + the sources can be can be downloaded from: + + ftp://ftp.gnu.org/gnu/autoconf/ + ftp://ftp.gnu.org/gnu/automake/ + ftp://ftp.gnu.org/gnu/libtool/ + and if you need it: + ftp://ftp.gnu.org/gnu/m4/ + + NOTE: It is certainly easiest to download/build/install all four of + these tools together. But note that Open MPI has no specific m4 + requirements; it is only listed here because Autoconf requires + minimum versions of GNU m4. Hence, you may or may not *need* to + actually install a new version of GNU m4. That being said, if you + are confused or don't know, just install the latest GNU m4 with the + rest of the GNU Autotools and everything will work out fine. + +2. Build and install the tools in the following order: + + 2a. m4 + 2b. Autoconf + 2c. Automake + 2d. Libtool + +3. You MUST install the last three tools (Autoconf, Automake, Libtool) + into the same prefix directory. These three tools are somewhat + inter-related, and if they're going to be used together, they MUST + share a common installation prefix. + + You can install m4 anywhere as long as it can be found in the path; + it may be convenient to install it in the same prefix as the other + three. Or you can use any recent-enough m4 that is in your path. + + 3a. It is *strongly* encouraged that you do not install your new + versions over the OS-installed versions. This could cause + other things on your system to break. Instead, install into + $HOME/local, or /usr/local, or wherever else you tend to + install "local" kinds of software. + 3b. In doing so, be sure to prefix your $path with the directory + where they are installed. For example, if you install into + $HOME/local, you may want to edit your shell startup file + (.bashrc, .cshrc, .tcshrc, etc.) to have something like: + + # For bash/sh: + export PATH=$HOME/local/bin:$PATH + # For csh/tcsh: + set path = ($HOME/local/bin $path) + + 3c. Ensure to set your $path *BEFORE* you configure/build/install + the four packages. + +4. All four packages require two simple commands to build and + install (where PREFIX is the prefix discussed in 3, above). + + shell$ cd + shell$ ./configure --prefix=PREFIX + shell$ make; make install + + --> If you are using the csh or tcsh shells, be sure to run the + "rehash" command after you install each package. + + shell$ cd + shell$ ./configure --prefix=PREFIX + shell$ make; make install + + --> If you are using the csh or tcsh shells, be sure to run the + "rehash" command after you install each package. + + shell$ cd + shell$ ./configure --prefix=PREFIX + shell$ make; make install + + --> If you are using the csh or tcsh shells, be sure to run the + "rehash" command after you install each package. + + shell$ cd + shell$ ./configure --prefix=PREFIX + shell$ make; make install + + --> If you are using the csh or tcsh shells, be sure to run the + "rehash" command after you install each package. + + m4, Autoconf and Automake build and install very quickly; Libtool will + take a minute or two. + +5. You can now run OMPI's top-level "autogen.pl" script. This script + will invoke the GNU Autoconf, Automake, and Libtool commands in the + proper order and setup to run OMPI's top-level "configure" script. + + Running autogen.pl may take a few minutes, depending on your + system. It's not very exciting to watch. :-) + + If you have a multi-processor system, enabling the multi-threaded + behavior in Automake 1.11 (or newer) can result in autogen.pl + running faster. Do this by setting the AUTOMAKE_JOBS environment + variable to the number of processors (threads) that you want it to + use before invoking autogen.pl. For example (you can again put + this in your shell startup files): + + # For bash/sh: + export AUTOMAKE_JOBS=4 + # For csh/tcsh: + set AUTOMAKE_JOBS 4 + + 5a. You generally need to run autogen.pl whenever the top-level + file "configure.ac" changes, or any files in the config/ or + /config/ directories change (these directories are + where a lot of "include" files for OMPI's configure script + live). + + 5b. You do *NOT* need to re-run autogen.pl if you modify a + Makefile.am. + +Use of Flex +=========== + +Flex is used during the compilation of a developer's checkout (it is +not used to build official distribution tarballs). Other flavors of +lex are *not* supported: given the choice of making parsing code +portable between all flavors of lex and doing more interesting work on +Open MPI, we greatly prefer the latter. + +Note that no testing has been performed to see what the minimum +version of Flex is required by Open MPI. We suggest that you use +v2.5.35 at the earliest. + +*** NOTE: Windows developer builds of Open MPI *require* Flex version +2.5.35. Specifically, we know that v2.5.35 works and 2.5.4a does not. +We have not tested to figure out exactly what the minimum required +flex version is on Windows; we suggest that you use 2.5.35 at the +earliest. It is for this reason that the +contrib/dist/make_dist_tarball script checks for a Windows-friendly +version of flex before continuing. + +For now, Open MPI will allow developer builds with Flex 2.5.4. This +is primarily motivated by the fact that RedHat/Centos 5 ships with +Flex 2.5.4. It is likely that someday Open MPI developer builds will +require Flex version >=2.5.35. + +Note that the flex-generated code generates some compiler warnings on +some platforms, but the warnings do not seem to be consistent or +uniform on all platforms, compilers, and flex versions. As such, we +have done little to try to remove those warnings. + +If you do not have Flex installed, it can be downloaded from the +following URL: + + http://flex.sourceforge.net/ diff --git a/INSTALL b/INSTALL new file mode 100644 index 00000000..13ab723e --- /dev/null +++ b/INSTALL @@ -0,0 +1,101 @@ +Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana + University Research and Technology + Corporation. All rights reserved. +Copyright (c) 2004-2005 The University of Tennessee and The University + of Tennessee Research Foundation. All rights + reserved. +Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + University of Stuttgart. All rights reserved. +Copyright (c) 2004-2005 The Regents of the University of California. + All rights reserved. +Copyright (c) 2008-2015 Cisco Systems, Inc. All rights reserved. +$COPYRIGHT$ + +Additional copyrights may follow + +$HEADER$ + + +For More Information +==================== + +This file is a *very* short overview of building and installing Open +MPI, and building MPI applications. Much more information is +available on the Open MPI web site (e.g., see the FAQ section): + + http://www.open-mpi.org/ + + +Developer Builds +================ + +If you have checked out a DEVELOPER'S COPY of Open MPI (i.e., you +cloned from Git), you should read the HACKING file before attempting +to build Open MPI. You must then run: + +shell$ ./autogen.pl + +You will need very recent versions of GNU Autoconf, Automake, and +Libtool. If autogen.pl fails, read the HACKING file. If anything +else fails, read the HACKING file. Finally, we suggest reading the +HACKING file. + +*** NOTE: Developer's copies of Open MPI typically include a large +performance penalty at run-time because of extra debugging overhead. + + +User Builds +=========== + +Building Open MPI is typically a combination of running "configure" +and "make". Execute the following commands to install the Open MPI +system from within the directory at the top of the tree: + +shell$ ./configure --prefix=/where/to/install +[...lots of output...] +shell$ make all install + +If you need special access to install, then you can execute "make +all" as a user with write permissions in the build tree, and a +separate "make install" as a user with write permissions to the +install tree. + +Compiling support for various networks or other specific hardware may +require additional command ling flags when running configure. See the +README file for more details. Note that VPATH builds are fully +supported. For example: + +shell$ tar xf openmpi-X.Y.Z.tar.gz +shell$ cd openmpi-X.Y.Z +shell$ mkdir build +shell$ cd build +shell$ ../configure ...your options... +[...lots of output...] +shell$ make all install + +Parallel builds are also supported (although some versions of "make", +such as GNU make, will only use the first target listed on the command +line when executable parallel builds). For example (assume GNU make): + +shell$ make -j 4 all +[...lots of output...] +shell$ make install + +Parallel make is generally only helpful in the build phase (i.e., +"make all"); the installation process (i.e., "make install") is mostly +serial and does not benefit much from parallelization. + + +Compiling MPI Applications +========================== + +MPI applications should be compiled using the Open MPI "wrapper" +compilers: + +C programs: mpicc your-code.c +C++ programs: mpiCC your-code.cc or + mpic++ your-code.cc (for case-insensitive filesystems) +Fortran programs: mpifort your-code.f90 + +These compilers simply add various command line flags (such as -lmpi) +and invoke a back-end compiler; they are not compilers in themselves. diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..2d80ee41 --- /dev/null +++ b/LICENSE @@ -0,0 +1,91 @@ +Most files in this release are marked with the copyrights of the +organizations who have edited them. The copyrights below are in no +particular order and generally reflect members of the Open MPI core +team who have contributed code to this release. The copyrights for +code used under license from other parties are included in the +corresponding files. + +Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana + University Research and Technology + Corporation. All rights reserved. +Copyright (c) 2004-2010 The University of Tennessee and The University + of Tennessee Research Foundation. All rights + reserved. +Copyright (c) 2004-2010 High Performance Computing Center Stuttgart, + University of Stuttgart. All rights reserved. +Copyright (c) 2004-2008 The Regents of the University of California. + All rights reserved. +Copyright (c) 2006-2010 Los Alamos National Security, LLC. All rights + reserved. +Copyright (c) 2006-2010 Cisco Systems, Inc. All rights reserved. +Copyright (c) 2006-2010 Voltaire, Inc. All rights reserved. +Copyright (c) 2006-2011 Sandia National Laboratories. All rights reserved. +Copyright (c) 2006-2010 Sun Microsystems, Inc. All rights reserved. + Use is subject to license terms. +Copyright (c) 2006-2010 The University of Houston. All rights reserved. +Copyright (c) 2006-2009 Myricom, Inc. All rights reserved. +Copyright (c) 2007-2008 UT-Battelle, LLC. All rights reserved. +Copyright (c) 2007-2010 IBM Corporation. All rights reserved. +Copyright (c) 1998-2005 Forschungszentrum Juelich, Juelich Supercomputing + Centre, Federal Republic of Germany +Copyright (c) 2005-2008 ZIH, TU Dresden, Federal Republic of Germany +Copyright (c) 2007 Evergrid, Inc. All rights reserved. +Copyright (c) 2008 Chelsio, Inc. All rights reserved. +Copyright (c) 2008-2009 Institut National de Recherche en + Informatique. All rights reserved. +Copyright (c) 2007 Lawrence Livermore National Security, LLC. + All rights reserved. +Copyright (c) 2007-2009 Mellanox Technologies. All rights reserved. +Copyright (c) 2006-2010 QLogic Corporation. All rights reserved. +Copyright (c) 2008-2010 Oak Ridge National Labs. All rights reserved. +Copyright (c) 2006-2010 Oracle and/or its affiliates. All rights reserved. +Copyright (c) 2009 Bull SAS. All rights reserved. +Copyright (c) 2010 ARM ltd. All rights reserved. +Copyright (c) 2010-2011 Alex Brick . All rights reserved. +Copyright (c) 2012 The University of Wisconsin-La Crosse. All rights + reserved. +Copyright (c) 2013-2016 Intel, Inc. All rights reserved. +Copyright (c) 2011-2014 NVIDIA Corporation. All rights reserved. +Copyright (c) 2017 Amazon.com, Inc. or its affiliates. All Rights + reserved. + +$COPYRIGHT$ + +Additional copyrights may follow + +$HEADER$ + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +- Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer listed + in this license in the documentation and/or other materials + provided with the distribution. + +- Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +The copyright holders provide no reassurances that the source code +provided does not infringe any patent, copyright, or any other +intellectual property rights of third parties. The copyright holders +disclaim any liability to any recipient for claims brought against +recipient by any third party for infringement of that parties +intellectual property rights. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 00000000..aaaf9c9c --- /dev/null +++ b/Makefile.am @@ -0,0 +1,59 @@ +# +# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2009 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2006-2016 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2012-2015 Los Alamos National Security, Inc. All rights reserved. +# Copyright (c) 2014 Intel, Inc. All rights reserved. +# Copyright (c) 2017 Amazon.com, Inc. or its affiliates. +# All Rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +SUBDIRS = config contrib $(MCA_PROJECT_SUBDIRS) test +EXTRA_DIST = README INSTALL VERSION Doxyfile LICENSE autogen.pl README.JAVA.txt AUTHORS + +include examples/Makefile.include + +dist-hook: + env LS_COLORS= sh "$(top_srcdir)/config/distscript.sh" "$(top_srcdir)" "$(distdir)" "$(OMPI_REPO_REV)" + @if test ! -s $(distdir)/AUTHORS ; then \ + echo "AUTHORS file is empty; aborting distribution"; \ + exit 1; \ + fi + +# Check for common symbols. Use a "-hook" to increase the odds that a +# developer will see it at the end of their installation process. +install-exec-hook: + -@if test -d "$(top_srcdir)/.git"; then \ + $(top_srcdir)/config/find_common_syms \ + --brief \ + --top_builddir=$(top_builddir) \ + --top_srcdir=$(top_srcdir) \ + --objext=$(OBJEXT); \ + fi + +ACLOCAL_AMFLAGS = -I config + +# Use EXTRA_DIST and an explicit target (with a FORCE hack so that +# it's always run) rather than a dist-hook because there's some magic +# extra logic in Automake that will add AUTHORS to EXTRA_DIST if the +# file exists when Automake is run. Once we're explicit (to avoid odd +# copy behavior), it's easier to always build AUTHORS here, rather +# than trying to handle the EXTRA_DIST dependency from a clean repo +# (no AUTHORS file present) and use dist-hook to run every time. +AUTHORS: FORCE + $(PERL) "$(top_srcdir)/contrib/dist/make-authors.pl" --skip-ok --quiet --srcdir="$(top_srcdir)" + +FORCE: diff --git a/Makefile.ompi-rules b/Makefile.ompi-rules new file mode 100644 index 00000000..2a9cb2b7 --- /dev/null +++ b/Makefile.ompi-rules @@ -0,0 +1,68 @@ +# -*- makefile -*- +# Copyright (c) 2008-2015 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +TRIM_OPTIONS= +if ! MAN_PAGE_BUILD_MPI_CXX_BINDINGS + TRIM_OPTIONS += --nocxx +endif +if ! MAN_PAGE_BUILD_MPIFH_BINDINGS + TRIM_OPTIONS += --nofortran +endif +if ! MAN_PAGE_BUILD_USEMPIF08_BINDINGS + TRIM_OPTIONS += --nof08 +endif + +.1in.1: + $(OMPI_V_GEN) $(top_srcdir)/ompi/mpi/man/make_manpage.pl \ + --package-name='@PACKAGE_NAME@' \ + --package-version='@PACKAGE_VERSION@' \ + --ompi-date='@OMPI_RELEASE_DATE@' \ + --opal-date='@OPAL_RELEASE_DATE@' \ + --orte-date='@ORTE_RELEASE_DATE@' \ + --input=$< \ + --output=$@ + +.3in.3: + $(OMPI_V_GEN) $(top_srcdir)/ompi/mpi/man/make_manpage.pl \ + --package-name='@PACKAGE_NAME@' \ + --package-version='@PACKAGE_VERSION@' \ + --ompi-date='@OMPI_RELEASE_DATE@' \ + --opal-date='@OPAL_RELEASE_DATE@' \ + --orte-date='@ORTE_RELEASE_DATE@' \ + $(TRIM_OPTIONS) \ + --input=$< \ + --output=$@ + +.7in.7: + $(OMPI_V_GEN) $(top_srcdir)/ompi/mpi/man/make_manpage.pl \ + --package-name='@PACKAGE_NAME@' \ + --package-version='@PACKAGE_VERSION@' \ + --ompi-date='@OMPI_RELEASE_DATE@' \ + --opal-date='@OPAL_RELEASE_DATE@' \ + --orte-date='@ORTE_RELEASE_DATE@' \ + --input=$< \ + --output=$@ + +# A little verbosity magic; "make" will show the terse output. "make +# V=1" will show the actual commands used (just like the other +# Automake-generated compilation/linker rules). +V=0 + +OMPI_V_LN_S = $(ompi__v_LN_S_$V) +ompi__v_LN_S_ = $(ompi__v_LN_S_$AM_DEFAULT_VERBOSITY) +ompi__v_LN_S_0 = @echo " LN_S " `basename $@`; + +OMPI_V_MKDIR = $(ompi__v_MKDIR_$V) +ompi__v_MKDIR_ = $(ompi__v_MKDIR_$AM_DEFAULT_VERBOSITY) +ompi__v_MKDIR_0 = @echo " MKDIR " $@; + +OMPI_V_GEN = $(ompi__v_GEN_$V) +ompi__v_GEN_ = $(ompi__v_GEN_$AM_DEFAULT_VERBOSITY) +ompi__v_GEN_0 = @echo " GENERATE" $@; diff --git a/NEWS b/NEWS new file mode 100644 index 00000000..dca626ae --- /dev/null +++ b/NEWS @@ -0,0 +1,3869 @@ +Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana + University Research and Technology + Corporation. All rights reserved. +Copyright (c) 2004-2006 The University of Tennessee and The University + of Tennessee Research Foundation. All rights + reserved. +Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + University of Stuttgart. All rights reserved. +Copyright (c) 2004-2006 The Regents of the University of California. + All rights reserved. +Copyright (c) 2006-2017 Cisco Systems, Inc. All rights reserved. +Copyright (c) 2006 Voltaire, Inc. All rights reserved. +Copyright (c) 2006 Sun Microsystems, Inc. All rights reserved. + Use is subject to license terms. +Copyright (c) 2006-2017 Los Alamos National Security, LLC. All rights + reserved. +Copyright (c) 2010-2017 IBM Corporation. All rights reserved. +Copyright (c) 2012 Oak Ridge National Labs. All rights reserved. +Copyright (c) 2012-2017 Sandia National Laboratories. All rights reserved. +Copyright (c) 2012 University of Houston. All rights reserved. +Copyright (c) 2013 NVIDIA Corporation. All rights reserved. +Copyright (c) 2013-2017 Intel, Inc. All rights reserved. +Copyright (c) 2017 Research Organization for Information Science + and Technology (RIST). All rights reserved. +Copyright (c) 2018 Amazon.com, Inc. or its affiliates. All Rights + reserved. +$COPYRIGHT$ + +Additional copyrights may follow + +$HEADER$ + +=========================================================================== + +This file contains notable changes between releases for each release since +Open MPI 1.0. Because Open MPI maintains multiple release branches at any time, +it is possible for items to appear more than once in the list. + +3.0.1 -- March, 2018 +---------------------- + +- Fix ability to attach parallel debuggers to MPI processes. +- Fix a number of issues in MPI I/O found by the HDF5 test suite. +- Fix (extremely) large message transfers with shared memory. +- Fix out of sequence bug in multi-NIC configurations. +- Fix stdin redirection bug that could result in lost input. +- Disable the LSF launcher if CSM is detected. +- Plug a memory leak in MPI_Mem_free(). Thanks to Philip Blakely for reporting. +- Fix the tree spawn operation when the number of nodes is larger than the radix. + Thanks to Carlos Eduardo de Andrade for reporting. +- Fix Fortran 2008 macro in MPI extensions. Thanks to Nathan T. Weeks for + reporting. +- Add UCX to list of interfaces that OpenSHMEM will use by default. +- Add --{enable|disable}-show-load-errors-by-default to control + default behavior of the load errors option. +- OFI MTL improvements: handle empty completion queues properly, fix + incorrect error message around fi_getinfo(), use default progress + option for provider by default, Add support for reading multiple + CQ events in ofi_progress. +- PSM2 MTL improvements: Allow use of GPU buffers, thread fixes. +- Numerous corrections to memchecker behavior. +- Add a mca parameter ras_base_launch_orted_on_hn to allow for launching + MPI processes on the same node where mpirun is executing using a separate + orte daemon, rather than the mpirun process. This may be useful to set to + true when using SLURM, as it improves interoperability with SLURM's signal + propagation tools. By default it is set to false, except for Cray XC systems. +- Fix a problem reported on the mailing separately by Kevin McGrattan and Stephen + Guzik about consistency issues on NFS file systems when using OMPIO. This fix + also introduces a new mca parameter fs_ufs_lock_algorithm which allows to + control the locking algorithm used by ompio for read/write operations. By + default, ompio does not perfom locking on local UNIX file systems, locks the + entire file per operation on NFS file systems, and selective byte-range + locking on other distributed file systems. +- Add an mca parameter pmix_server_usock_connections to allow mpirun to + support applications statically built against the Open MPI v2.x release, + or installed in a container along with the Open MPI v2.x libraries. It is + set to false by default. + +3.0.0 -- September, 2017 +------------------------ + +Major new features: + +- Use UCX allocator for OSHMEM symmetric heap allocations to optimize intra-node + data transfers. UCX SPML only. +- Use UCX multi-threaded API in the UCX PML. Requires UCX 1.0 or later. +- Added support for Flux PMI +- Update embedded PMIx to version 2.1.0 +- Update embedded hwloc to version 1.11.7 + +Changes in behavior compared to prior versions: + +- Per Open MPI's versioning scheme (see the README), increasing the + major version number to 3 indicates that this version is not + ABI-compatible with prior versions of Open MPI. In addition, there may + be differences in MCA parameter names and defaults from previous releases. + Command line options for mpirun and other commands may also differ from + previous versions. You will need to recompile MPI and OpenSHMEM applications + to work with this version of Open MPI. +- With this release, Open MPI supports MPI_THREAD_MULTIPLE by default. +- New configure options have been added to specify the locations of libnl + and zlib. +- A new configure option has been added to request Flux PMI support. +- The help menu for mpirun and related commands is now context based. + "mpirun --help compatibility" generates the help menu in the same format + as previous releases. + +Removed legacy support: +- AIX is no longer supported. +- Loadlever is no longer supported. +- OpenSHMEM currently supports the UCX and MXM transports via the ucx and ikrit + SPMLs respectively. +- Remove IB XRC support from the OpenIB BTL due to lack of support. +- Remove support for big endian PowerPC. +- Remove support for XL compilers older than v13.1 + +Known issues: + +- MPI_Connect/accept between applications started by different mpirun + commands will fail, even if ompi-server is running. + +2.1.3 -- March, 2018 +-------------------- + +Bug fixes/minor improvements: +- Update internal PMIx version to 1.2.5. +- Fix a problem with ompi_info reporting using param option. + Thanks to Alexander Pozdneev for reporting. +- Correct PMPI_Aint_{add|diff} to be functions (not subroutines) + in the Fortran mpi_f08 module. +- Fix a problem when doing MPI I/O using data types with large + extents in conjunction with MPI_TYPE_CREATE_SUBARRAY. Thanks to + Christopher Brady for reporting. +- Fix a problem when opening many files using MPI_FILE_OPEN. + Thanks to William Dawson for reporting. +- Fix a problem with debuggers failing to attach to a running job. + Thanks to Dirk Schubert for reporting. +- Fix a problem when using madvise and the OpenIB BTL. Thanks to + Timo Bingmann for reporting. +- Fix a problem in the Vader BTL that resulted in failures of + IMB under certain circumstances. Thanks to Nicolas Morey- + Chaisemartin for reporting. +- Fix a problem preventing Open MPI from working under Cygwin. + Thanks to Marco Atzeri for reporting. +- Reduce some verbosity being emitted by the USNIC BTL under certain + circumstances. Thanks to Peter Forai for reporting. +- Fix a problem with misdirection of SIGKILL. Thanks to Michael Fern + for reporting. +- Replace use of posix_memalign with malloc for small allocations. Thanks + to Ben Menaude for reporting. +- Fix a problem with Open MPI's out of band TCP network for file descriptors + greater than 32767. Thanks to Wojtek Wasko for reporting and fixing. +- Plug a memory leak in MPI_Mem_free(). Thanks to Philip Blakely for reporting. + +2.1.2 -- September, 2017 +------------------------ + +Bug fixes/minor improvements: +- Update internal PMIx version to 1.2.3. +- Fix some problems when using the NAG Fortran compiler to build Open MPI + and when using the compiler wrappers. Thanks to Neil Carlson for reporting. +- Fix a compilation problem with the SM BTL. Thanks to Paul Hargrove for + reporting. +- Fix a problem with MPI_IALLTOALLW when using zero-length messages. + Thanks to Dahai Guo for reporting. +- Fix a problem with C11 generic type interface for SHMEM_G. Thanks + to Nick Park for reporting. +- Switch to using the lustreapi.h include file when building Open MPI + with Lustre support. +- Fix a problem in the OB1 PML that led to hangs with OSU collective tests. +- Fix a progression issue with MPI_WIN_FLUSH_LOCAL. Thanks to + Joseph Schuchart for reporting. +- Fix an issue with recent versions of PBSPro requiring libcrypto. + Thanks to Petr Hanousek for reporting. +- Fix a problem when using MPI_ANY_SOURCE with MPI_SENDRECV. +- Fix an issue that prevented signals from being propagated to ORTE + daemons. +- Ensure that signals are forwarded from ORTE daemons to all processes + in the process group created by the daemons. Thanks to Ted Sussman + for reporting. +- Fix a problem with launching a job under a debugger. Thanks to + Greg Lee for reporting. +- Fix a problem with Open MPI native I/O MPI_FILE_OPEN when using + a communicator having an associated topology. Thanks to + Wei-keng Liao for reporting. +- Fix an issue when using MPI_ACCUMULATE with derived datatypes. +- Fix a problem with Fortran bindings that led to compilation errors + for user defined reduction operations. Thanks to Nathan Weeks for + reporting. +- Fix ROMIO issues with large writes/reads when using NFS file systems. +- Fix definition of Fortran MPI_ARGV_NULL and MPI_ARGVS_NULL. +- Enable use of the head node of a SLURM allocation on Cray XC systems. +- Fix a problem with synchronous sends when using the UCX PML. +- Use default socket buffer size to improve TCP BTL performance. +- Add a mca parameter ras_base_launch_orted_on_hn to allow for launching + MPI processes on the same node where mpirun is executing using a separate + orte daemon, rather than the mpirun process. This may be useful to set to + true when using SLURM, as it improves interoperability with SLURM's signal + propagation tools. By default it is set to false, except for Cray XC systems. +- Fix --without-lsf when lsf is installed in the default search path. +- Remove support for big endian PowerPC. +- Remove support for XL compilers older than v13.1 +- Remove IB XRC support from the OpenIB BTL due to loss of maintainer. + +2.1.1 -- April, 2017 +-------------------- + +Bug fixes/minor improvements: + +- Fix a problem with one of Open MPI's fifo data structures which led to + hangs in a make check test. Thanks to Nicolas Morey-Chaisemartin for + reporting. +- Add missing MPI_AINT_ADD/MPI_AINT_DIFF function definitions to mpif.h. + Thanks to Aboorva Devarajan for reporting. +- Fix the error return from MPI_WIN_LOCK when rank argument is invalid. + Thanks to Jeff Hammond for reporting and fixing this issue. +- Fix a problem with mpirun/orterun when started under a debugger. Thanks + to Gregory Leff for reporting. +- Add configury option to disable use of CMA by the vader BTL. Thanks + to Sascha Hunold for reporting. +- Add configury check for MPI_DOUBLE_COMPLEX datatype support. + Thanks to Alexander Klein for reporting. +- Fix memory allocated by MPI_WIN_ALLOCATE_SHARED to + be 64 bit aligned. Thanks to Joseph Schuchart for + reporting. +- Update MPI_WTICK man page to reflect possibly higher + resolution than 10e-6. Thanks to Mark Dixon for + reporting +- Add missing MPI_T_PVAR_SESSION_NULL definition to mpi.h + include file. Thanks to Omri Mor for this contribution. +- Enhance the Open MPI spec file to install modulefile in /opt + if installed in a non-default location. Thanks to Kevin + Buckley for reporting and supplying a fix. +- Fix a problem with conflicting PMI symbols when linking statically. + Thanks to Kilian Cavalotti for reporting. + +Known issues (to be addressed in v2.1.2): + +- See the list of fixes slated for v2.1.2 here: + https://github.com/open-mpi/ompi/milestone/28 + +2.1.0 -- March, 2017 +-------------------- + +Major new features: + +- The main focus of the Open MPI v2.1.0 release was to update to PMIx + v1.2.1. When using PMIx (e.g., via mpirun-based launches, or via + direct launches with recent versions of popular resource managers), + launch time scalability is improved, and the run time memory + footprint is greatly decreased when launching large numbers of MPI / + OpenSHMEM processes. +- Update OpenSHMEM API conformance to v1.3. +- The usnic BTL now supports MPI_THREAD_MULTIPLE. +- General/overall performance improvements to MPI_THREAD_MULTIPLE. +- Add a summary message at the bottom of configure that tells you many + of the configuration options specified and/or discovered by Open + MPI. + +Changes in behavior compared to prior versions: + +- None. + +Removed legacy support: + +- The ptmalloc2 hooks have been removed from the Open MPI code base. + This is not really a user-noticable change; it is only mentioned + here because there was much rejoycing in the Open MPI developer + community. + +Bug fixes/minor improvements: + +- New MCA parameters: + - iof_base_redirect_app_stderr_to_stdout: as its name implies, it + combines MPI / OpenSHMEM applications' stderr into its stdout + stream. + - opal_event_include: allow the user to specify which FD selection + mechanism is used by the underlying event engine. + - opal_stacktrace_output: indicate where stacktraces should be sent + upon MPI / OpenSHMEM process crashes ("none", "stdout", "stderr", + "file:filename"). + - orte_timeout_for_stack_trace: number of seconds to wait for stack + traces to be reported (or <=0 to wait forever). + - mtl_ofi_control_prog_type/mtl_ofi_data_prog_type: specify libfabric + progress model to be used for control and data. +- Fix MPI_WTICK regression where the time reported may be inaccurate + on systems with processor frequency scalaing enabled. +- Fix regression that lowered the memory maximum message bandwidth for + large messages on some BTL network transports, such as openib, sm, + and vader. +- Fix a name collision in the shared file pointer MPI IO file locking + scheme. Thanks to Nicolas Joly for reporting the issue. +- Fix datatype extent/offset errors in MPI_PUT and MPI_RACCUMULATE + when using the Portals 4 one-sided component. +- Add support for non-contiguous datatypes to the Portals 4 one-sided + component. +- Various updates for the UCX PML. +- Updates to the following man pages: + - mpirun(1) + - MPI_COMM_CONNECT(3) + - MPI_WIN_GET_NAME(3). Thanks to Nicolas Joly for reporting the + typo. + - MPI_INFO_GET_[NKEYS|NTHKEY](3). Thanks to Nicolas Joly for + reporting the typo. +- Fixed a problem in the TCP BTL when using MPI_THREAD_MULTIPLE. + Thanks to Evgueni Petrov for reporting. +- Fixed external32 representation in the romio314 module. Note that + for now, external32 representation is not correctly supported by the + ompio module. Thanks to Thomas Gastine for bringing this to our + attention. +- Add note how to disable a warning message about when a high-speed + MPI transport is not found. Thanks to Susan Schwarz for reporting + the issue. +- Ensure that sending SIGINT when using the rsh/ssh launcher does not + orphan children nodes in the launch tree. +- Fix the help message when showing deprecated MCA param names to show + the correct (i.e., deprecated) name. +- Enable support for the openib BTL to use multiple different + InfiniBand subnets. +- Fix a minor error in MPI_AINT_DIFF. +- Fix bugs with MPI_IN_PLACE handling in: + - MPI_ALLGATHER[V] + - MPI_[I][GATHER|SCATTER][V] + - MPI_IREDUCE[_SCATTER] + - Thanks to all the users who helped diagnose these issues. +- Allow qrsh to tree spawn (if the back-end system supports it). +- Fix MPI_T_PVAR_GET_INDEX to return the correct index. +- Correctly position the shared file pointer in append mode in the + OMPIO component. +- Add some deprecated names into shmem.h for backwards compatibility + with legacy codes. +- Fix MPI_MODE_NOCHECK support. +- Fix a regression in PowerPC atomics support. Thanks to Orion + Poplawski for reporting the issue. +- Fixes for assembly code with aggressively-optimized compilers on + x86_64/AMD64 platforms. +- Fix one more place where configure was mangling custom CFLAGS. + Thanks to Phil Tooley (@Telemin) for reporting the issue. +- Better handle builds with external installations of hwloc. +- Fixed a hang with MPI_PUT and MPI_WIN_LOCK_ALL. +- Fixed a bug when using MPI_GET on non-contiguous datatypes and + MPI_LOCK/MPI_UNLOCK. +- Fixed a bug when using POST/START/COMPLETE/WAIT after a fence. +- Fix configure portability by cleaning up a few uses of "==" with + "test". Thanks to Kevin Buckley for pointing out the issue. +- Fix bug when using darrays with lib and extent of darray datatypes. +- Updates to make Open MPI binary builds more bit-for-bit + reproducable. Thanks to Alastair McKinstry for the suggestion. +- Fix issues regarding persistent request handling. +- Ensure that shmemx.h is a standalone OpenSHMEM header file. Thanks + to Nick Park (@nspark) for the report. +- Ensure that we always send SIGTERM prior to SIGKILL. Thanks to Noel + Rycroft for the report. +- Added ConnectX-5 and Chelsio T6 device defaults for the openib BTL. +- OpenSHMEM no longer supports MXM less than v2.0. +- Plug a memory leak in ompi_osc_sm_free. Thanks to Joseph Schuchart + for the report. +- The "self" BTL now uses less memory. +- The vader BTL is now more efficient in terms of memory usage when + using XPMEM. +- Removed the --enable-openib-failover configure option. This is not + considered backwards-incompatible because this option was stale and + had long-since stopped working, anyway. +- Allow jobs launched under Cray aprun to use hyperthreads if + opal_hwloc_base_hwthreads_as_cpus MCA parameter is set. +- Add support for 32-bit and floating point Cray Aries atomic + operations. +- Add support for network AMOs for MPI_ACCUMULATE, MPI_FETCH_AND_OP, + and MPI_COMPARE_AND_SWAP if the "ompi_single_intrinsic" info key is + set on the window or the "acc_single_intrinsic" MCA param is set. +- Automatically disqualify RDMA CM support in the openib BTL if + MPI_THREAD_MULTIPLE is used. +- Make configure smarter/better about auto-detecting Linux CMA + support. +- Improve the scalability of MPI_COMM_SPLIT_TYPE. +- Fix the mixing of C99 and C++ header files with the MPI C++ + bindings. Thanks to Alastair McKinstry for the bug report. +- Add support for ARM v8. +- Several MCA parameters now directly support MPI_T enumerator + semantics (i.e., they accept a limited set of values -- e.g., MCA + parameters that accept boolean values). +- Added --with-libmpi-name=STRING configure option for vendor releases + of Open MPI. See the README for more detail. +- Fix a problem with Open MPI's internal memory checker. Thanks to Yvan + Fournier for reporting. +- Fix a multi-threaded issue with MPI_WAIT. Thanks to Pascal Deveze for + reporting. + +Known issues (to be addressed in v2.1.1): + +- See the list of fixes slated for v2.1.1 here: + https://github.com/open-mpi/ompi/milestone/26 + +2.0.3 -- June 2017 +------------------ + +Bug fixes/minor improvements: + + - Fix a problem with MPI_IALLTOALLW when zero size messages are present. + Thanks to @mathbird for reporting. + - Add missing MPI_USER_FUNCTION definition to the mpi_f08 module. + Thanks to Nathan Weeks for reporting this issue. + - Fix a problem with MPI_WIN_LOCK not returning an error code when + a negative rank is supplied. Thanks to Jeff Hammond for reporting and + providing a fix. + - Fix a problem with make check that could lead to hangs. Thanks to + Nicolas Morey-Chaisemartin for reporting. + - Resolve a symbol conflict problem with PMI-1 and PMI-2 PMIx components. + Thanks to Kilian Cavalotti for reporting this issue. + - Insure that memory allocations returned from MPI_WIN_ALLOCATE_SHARED are + 64 byte aligned. Thanks to Joseph Schuchart for reporting this issue. + - Make use of DOUBLE_COMPLEX, if available, for Fortran bindings. Thanks + to Alexander Klein for reporting this issue. + - Add missing MPI_T_PVAR_SESSION_NULL definition to Open MPI mpi.h include + file. Thanks to Omri Mor for reporting and fixing. + - Fix a problem with use of MPI shared file pointers when accessing + a file from independent jobs. Thanks to Nicolas Joly for reporting + this issue. + - Optimize zero size MPI_IALLTOALL{V,W} with MPI_IN_PLACE. Thanks to + Lisandro Dalcin for the report. + - Fix a ROMIO buffer overflow problem for large transfers when using NFS + filesystems. + - Fix type of MPI_ARGV[S]_NULL which prevented it from being used + properly with MPI_COMM_SPAWN[_MULTIPLE] in the mpi_f08 module. + - Ensure to add proper linker flags to the wrapper compilers for + dynamic libraries on platforms that need it (e.g., RHEL 7.3 and + later). + - Get better performance on TCP-based networks 10Gbps and higher by + using OS defaults for buffer sizing. + - Fix a bug with MPI_[R][GET_]ACCUMULATE when using DARRAY datatypes. + - Fix handling of --with-lustre configure command line argument. + Thanks to Prentice Bisbal and Tim Mattox for reporting the issue. + - Added MPI_AINT_ADD and MPI_AINT_DIFF declarations to mpif.h. Thanks + to Aboorva Devarajan (@AboorvaDevarajan) for the bug report. + - Fix a problem in the TCP BTL when Open MPI is initialized with + MPI_THREAD_MULTIPLE support. Thanks to Evgueni Petro for analyzing and + reporting this issue. + - Fix yalla PML to properly handle underflow errors, and fixed a + memory leak with blocking non-contiguous sends. + - Restored ability to run autogen.pl on official distribution tarballs + (although this is still not recommended for most users!). + - Fix accuracy problems with MPI_WTIME on some systems by always using + either clock_gettime(3) or gettimeofday(3). + - Fix a problem where MPI_WTICK was not returning a higher time resolution + when available. Thanks to Mark Dixon for reporting this issue. + - Restore SGE functionality. Thanks to Kevin Buckley for the initial + report. + - Fix external hwloc compilation issues, and extend support to allow + using external hwloc installations as far back as v1.5.0. Thanks to + Orion Poplawski for raising the issue. + - Added latest Mellanox Connect-X and Chelsio T-6 adapter part IDs to + the openib list of default values. + - Do a better job of cleaning up session directories (e.g., in /tmp). + - Update a help message to indicate how to suppress a warning about + no high performance networks being detected by Open MPI. Thanks to + Susan Schwarz for reporting this issue. + - Fix a problem with mangling of custom CFLAGS when configuring Open MPI. + Thanks to Phil Tooley for reporting. + - Fix some minor memory leaks and remove some unused variables. + Thanks to Joshua Gerrard for reporting. + - Fix MPI_ALLGATHERV bug with MPI_IN_PLACE. + +Known issues (to be addressed in v2.0.4): + +- See the list of fixes slated for v2.0.4 here: + https://github.com/open-mpi/ompi/milestone/29 + +2.0.2 -- 26 January 2017 +------------------------- + +Bug fixes/minor improvements: + +- Fix a problem with MPI_FILE_WRITE_SHARED when using MPI_MODE_APPEND and + Open MPI's native MPI-IO implementation. Thanks to Nicolas Joly for + reporting. +- Fix a typo in the MPI_WIN_GET_NAME man page. Thanks to Nicolas Joly + for reporting. +- Fix a race condition with ORTE's session directory setup. Thanks to + @tbj900 for reporting this issue. +- Fix a deadlock issue arising from Open MPI's approach to catching calls to + munmap. Thanks to Paul Hargrove for reporting and helping to analyze this + problem. +- Fix a problem with PPC atomics which caused make check to fail unless builtin + atomics configure option was enabled. Thanks to Orion Poplawski for reporting. +- Fix a problem with use of x86_64 cpuid instruction which led to segmentation + faults when Open MPI was configured with -O3 optimization. Thanks to Mark + Santcroos for reporting this problem. +- Fix a problem when using built in atomics configure options on PPC platforms + when building 32 bit applications. Thanks to Paul Hargrove for reporting. +- Fix a problem with building Open MPI against an external hwloc installation. + Thanks to Orion Poplawski for reporting this issue. +- Remove use of DATE in the message queue version string reported to debuggers to + insure bit-wise reproducibility of binaries. Thanks to Alastair McKinstry + for help in fixing this problem. +- Fix a problem with early exit of a MPI process without calling MPI_FINALIZE + or MPI_ABORT that could lead to job hangs. Thanks to Christof Koehler for + reporting. +- Fix a problem with forwarding of SIGTERM signal from mpirun to MPI processes + in a job. Thanks to Noel Rycroft for reporting this problem +- Plug some memory leaks in MPI_WIN_FREE discovered using Valgrind. Thanks + to Joseph Schuchart for reporting. +- Fix a problems MPI_NEIGHOR_ALLTOALL when using a communicator with an empty topology + graph. Thanks to Daniel Ibanez for reporting. +- Fix a typo in a PMIx component help file. Thanks to @njoly for reporting this. +- Fix a problem with Valgrind false positives when using Open MPI's internal memchecker. + Thanks to Yvan Fournier for reporting. +- Fix a problem with MPI_FILE_DELETE returning MPI_SUCCESS when + deleting a non-existent file. Thanks to Wei-keng Liao for reporting. +- Fix a problem with MPI_IMPROBE that could lead to hangs in subsequent MPI + point to point or collective calls. Thanks to Chris Pattison for reporting. +- Fix a problem when configure Open MPI for powerpc with --enable-mpi-cxx + enabled. Thanks to Alastair McKinstry for reporting. +- Fix a problem using MPI_IALLTOALL with MPI_IN_PLACE argument. Thanks to + Chris Ward for reporting. +- Fix a problem using MPI_RACCUMULATE with the Portals4 transport. Thanks to + @PDeveze for reporting. +- Fix an issue with static linking and duplicate symbols arising from PMIx + Slurm components. Thanks to Limin Gu for reporting. +- Fix a problem when using MPI dynamic memory windows. Thanks to + Christoph Niethammer for reporting. +- Fix a problem with Open MPI's pkgconfig files. Thanks to Alastair McKinstry + for reporting. +- Fix a problem with MPI_IREDUCE when the same buffer is supplied for the + send and recv buffer arguments. Thanks to Valentin Petrov for reporting. +- Fix a problem with atomic operations on PowerPC. Thanks to Paul + Hargrove for reporting. + +Known issues (to be addressed in v2.0.3): + +- See the list of fixes slated for v2.0.3 here: + https://github.com/open-mpi/ompi/milestone/23 + +2.0.1 -- 2 September 2016 +----------------------- + +Bug fixes/minor improvements: + +- Short message latency and message rate performance improvements for + all transports. +- Fix shared memory performance when using RDMA-capable networks. + Thanks to Tetsuya Mishima and Christoph Niethammer for reporting. +- Fix bandwith performance degredation in the yalla (MXM) PML. Thanks + to Andreas Kempf for reporting the issue. +- Fix OpenSHMEM crash when running on non-Mellanox MXM-based networks. + Thanks to Debendra Das for reporting the issue. +- Fix a crash occuring after repeated calls to MPI_FILE_SET_VIEW with + predefined datatypes. Thanks to Eric Chamberland and Matthew + Knepley for reporting and helping chase down this issue. +- Fix stdin propagation to MPI processes. Thanks to Jingchao Zhang + for reporting the issue. +- Fix various runtime and portability issues by updating the PMIx + internal component to v1.1.5. +- Fix process startup failures on Intel MIC platforms due to very + large entries in /proc/mounts. +- Fix a problem with use of relative path for specifing executables to + mpirun/oshrun. Thanks to David Schneider for reporting. +- Various improvements when running over portals-based networks. +- Fix thread-based race conditions with GNI-based networks. +- Fix a problem with MPI_FILE_CLOSE and MPI_FILE_SET_SIZE. Thanks + to Cihan Altinay for reporting. +- Remove all use of rand(3) from within Open MPI so as not to perturb + applications use of it. Thanks to Matias Cabral and Noel Rycroft + for reporting. +- Fix crash in MPI_COMM_SPAWN. +- Fix types for MPI_UNWEIGHTED and MPI_WEIGHTS_EMPTY. Thanks to + Lisandro Dalcin for reporting. +- Correctly report the name of MPI_INTEGER16. +- Add some missing MPI constants to the Fortran bindings. +- Fixed compile error when configuring Open MPI with --enable-timing. +- Correctly set the shared library version of libompitrace.so. Thanks + to Alastair McKinstry for reporting. +- Fix errors in the MPI_RPUT, MPI_RGET, MPI_RACCUMULATE, and + MPI_RGET_ACCUMULATE Fortran bindings. Thanks to Alfio Lazzaro and + Joost VandeVondele for tracking this down. +- Fix problems with use of derived datatypes in non-blocking + collectives. Thanks to Yuki Matsumoto for reporting. +- Fix problems with OpenSHMEM header files when using CMake. Thanks to + Paul Kapinos for reporting the issue. +- Fix problem with use use of non-zero lower bound datatypes in + collectives. Thanks to Hristo Iliev for reporting. +- Fix a problem with memory allocation within MPI_GROUP_INTERSECTION. + Thanks to Lisandro Dalcin for reporting. +- Fix an issue with MPI_ALLGATHER for communicators that don't consist + of two ranks. Thanks to David Love for reporting. +- Various fixes for collectives when used with esoteric MPI datatypes. +- Fixed corner cases of handling DARRAY and HINDEXED_BLOCK datatypes. +- Fix a problem with filesystem type check for OpenBSD. + Thanks to Paul Hargrove for reporting. +- Fix some debug input within Open MPI internal functions. Thanks to + Durga Choudhury for reporting. +- Fix a typo in a configury help message. Thanks to Paul Hargrove for + reporting. +- Correctly support MPI_IN_PLACE in MPI_[I]ALLTOALL[V|W] and + MPI_[I]EXSCAN. +- Fix alignment issues on SPARC platforms. + +Known issues (to be addressed in v2.0.2): + +- See the list of fixes slated for v2.0.2 here: + https://github.com/open-mpi/ompi/milestone/20, and + https://github.com/open-mpi/ompi-release/milestone/19 + (note that the "ompi-release" Github repo will be folded/absorbed + into the "ompi" Github repo at some point in the future) + +2.0.0 -- 12 July 2016 +--------------------- + + ********************************************************************** + * Open MPI is now fully MPI-3.1 compliant + ********************************************************************** + +Major new features: + +- Many enhancements to MPI RMA. Open MPI now maps MPI RMA operations + on to native RMA operations for those networks which support this + capability. +- Greatly improved support for MPI_THREAD_MULTIPLE (when configured + with --enable-mpi-thread-multiple). +- Enhancements to reduce the memory footprint for jobs at scale. A + new MCA parameter, "mpi_add_procs_cutoff", is available to set the + threshold for using this feature. +- Completely revamped support for memory registration hooks when using + OS-bypass network transports. +- Significant OMPIO performance improvements and many bug fixes. +- Add support for PMIx - Process Management Interface for Exascale. + Version 1.1.2 of PMIx is included internally in this release. +- Add support for PLFS file systems in Open MPI I/O. +- Add support for UCX transport. +- Simplify build process for Cray XC systems. Add support for + using native SLURM. +- Add a --tune mpirun command line option to simplify setting many + environment variables and MCA parameters. +- Add a new MCA parameter "orte_default_dash_host" to offer an analogue + to the existing "orte_default_hostfile" MCA parameter. +- Add the ability to specify the number of desired slots in the mpirun + --host option. + +Changes in behavior compared to prior versions: + +- In environments where mpirun cannot automatically determine the + number of slots available (e.g., when using a hostfile that does not + specify "slots", or when using --host without specifying a ":N" + suffix to hostnames), mpirun now requires the use of "-np N" to + specify how many MPI processes to launch. +- The MPI C++ bindings -- which were removed from the MPI standard in + v3.0 -- are no longer built by default and will be removed in some + future version of Open MPI. Use the --enable-mpi-cxx-bindings + configure option to build the deprecated/removed MPI C++ bindings. +- ompi_info now shows all components, even if they do not have MCA + parameters. The prettyprint output now separates groups with a + dashed line. +- OMPIO is now the default implementation of parallel I/O, with the + exception for Lustre parallel filesystems (where ROMIO is still the + default). The default selection of OMPI vs. ROMIO can be controlled + via the "--mca io ompi|romio" command line switch to mpirun. +- Per Open MPI's versioning scheme (see the README), increasing the + major version number to 2 indicates that this version is not + ABI-compatible with prior versions of Open MPI. You will need to + recompile MPI and OpenSHMEM applications to work with this version + of Open MPI. +- Removed checkpoint/restart code due to loss of maintainer. :-( +- Change the behavior for handling certain signals when using PSM and + PSM2 libraries. Previously, the PSM and PSM2 libraries would trap + certain signals in order to generate tracebacks. The mechanism was + found to cause issues with Open MPI's own error reporting mechanism. + If not already set, Open MPI now sets the IPATH_NO_BACKTRACE and + HFI_NO_BACKTRACE environment variables to disable PSM/PSM2's + handling these signals. + +Removed legacy support: + +- Removed support for OS X Leopard. +- Removed support for Cray XT systems. +- Removed VampirTrace. +- Removed support for Myrinet/MX. +- Removed legacy collective module:ML. +- Removed support for Alpha processors. +- Removed --enable-mpi-profiling configure option. + +Known issues (to be addressed in v2.0.1): + +- See the list of fixes slated for v2.0.1 here: + https://github.com/open-mpi/ompi/milestone/16, and + https://github.com/open-mpi/ompi-release/milestone/16 + (note that the "ompi-release" Github repo will be folded/absorbed + into the "ompi" Github repo at some point in the future) + +- ompi-release#986: Fix data size counter for large ops with fcoll/static +- ompi-release#987: Fix OMPIO performance on Lustre +- ompi-release#1013: Fix potential inconsistency in btl/openib default settings +- ompi-release#1014: Do not return MPI_ERR_PENDING from collectives +- ompi-release#1056: Remove dead profile code from oshmem +- ompi-release#1081: Fix MPI_IN_PLACE checking for IALLTOALL{V|W} +- ompi-release#1081: Fix memchecker in MPI_IALLTOALLW +- ompi-release#1081: Support MPI_IN_PLACE in MPI_(I)ALLTOALLW and MPI_(I)EXSCAN +- ompi-release#1107: Allow future PMIx support for RM spawn limits +- ompi-release#1108: Fix sparse group process reference counting +- ompi-release#1109: If specified to be oversubcribed, disable binding +- ompi-release#1122: Allow NULL arrays for empty datatypes +- ompi-release#1123: Fix signed vs. unsigned compiler warnings +- ompi-release#1123: Make max hostname length uniform across code base +- ompi-release#1127: Fix MPI_Compare_and_swap +- ompi-release#1127: Fix MPI_Win_lock when used with MPI_Win_fence +- ompi-release#1132: Fix typo in help message for --enable-mca-no-build +- ompi-release#1154: Ensure pairwise coll algorithms disqualify themselves properly +- ompi-release#1165: Fix typos in debugging/verbose message output +- ompi-release#1178: Fix ROMIO filesystem check on OpenBSD 5.7 +- ompi-release#1197: Fix Fortran pthread configure check +- ompi-release#1205: Allow using external PMIx 1.1.4 and 2.0 +- ompi-release#1215: Fix configure to support the NAG Fortran compiler +- ompi-release#1220: Fix combiner args for MPI_HINDEXED_BLOCK +- ompi-release#1225: Fix combiner args for MPI_DARRAY +- ompi-release#1226: Disable old memory hooks with recent gcc versions +- ompi-release#1231: Fix new "patcher" support for some XLC platforms +- ompi-release#1244: Fix Java error handling +- ompi-release#1250: Ensure TCP is not selected for RDMA operations +- ompi-release#1252: Fix verbose output in coll selection +- ompi-release#1253: Set a default name for user-defined MPI_Op +- ompi-release#1254: Add count==0 checks in some non-blocking colls +- ompi-release#1258: Fix "make distclean" when using external pmix/hwloc/libevent +- ompi-release#1260: Clean up/uniform mca/coll/base memory management +- ompi-release#1261: Remove "patcher" warning message for static builds +- ompi-release#1263: Fix IO MPI_Request for 0-size read/write +- ompi-release#1264: Add blocking fence for SLURM operations + +Bug fixes / minor enhancements: + +- Updated internal/embedded copies of third-party software: + - Update the internal copy of ROMIO to that which shipped in MPICH + 3.1.4. + - Update internal copy of libevent to v2.0.22. + - Update internal copy of hwloc to v1.11.2. +- Notable new MCA parameters: + - opal_progress_lp_call_ration: Control how often low-priority + callbacks are made during Open MPI's main progress loop. + - opal_common_verbs_want_fork_support: This replaces the + btl_openib_want_fork_support parameter. +- Add --with-platform-patches-dir configure option. +- Add --with-pmi-libdir configure option for environments that install + PMI libs in a non-default location. +- Various configure-related compatibility updates for newer versions + of libibverbs and OFED. +- Numerous fixes/improvements to orte-dvm. Special thanks to Mark + Santcroos for his help. +- Fix a problem with timer code on ia32 platforms. Thanks to + Paul Hargrove for reporting this and providing a patch. +- Fix a problem with use of a 64 bit atomic counter. Thanks to + Paul Hargrove for reporting. +- Fix a problem with singleton job launching. Thanks to Lisandro + Dalcin for reporting. +- Fix a problem with use of MPI_UNDEFINED with MPI_COMM_SPLIT_TYPE. + Thanks to Lisandro Dalcin for reporting. +- Silence a compiler warning in PSM MTL. Thanks to Adrian Reber for + reporting this. +- Properly detect Intel TrueScale and OmniPath devices in the ACTIVE + state. Thanks to Durga Choudhury for reporting the issue. +- Fix detection and use of Solaris Studio 12.5 (beta) compilers. + Thanks to Paul Hargrove for reporting and debugging. +- Fix various small memory leaks. +- Allow NULL arrays when creating empty MPI datatypes. +- Replace use of alloca with malloc for certain datatype creation + functions. Thanks to Bogdan Sataric for reporting this. +- Fix use of MPI_LB and MPI_UB in creation of of certain MPI datatypes. + Thanks to Gus Correa for helping to fix this. +- Implement a workaround for a GNU Libtool problem. Thanks to Eric + Schnetter for reporting and fixing. +- Improve hcoll library detection in configure. Thanks to David + Shrader and Ake Sandgren for reporting this. +- Miscellaneous minor bug fixes in the hcoll component. +- Miscellaneous minor bug fixes in the ugni component. +- Fix problems with XRC detection in OFED 3.12 and older releases. + Thanks to Paul Hargrove for his analysis of this problem. +- Update (non-standard/experimental) Java MPI interfaces to support + MPI-3.1 functionality. +- Fix an issue with MCA parameters for Java bindings. Thanks to + Takahiro Kawashima and Siegmar Gross for reporting this issue. +- Fix a problem when using persistent requests in the Java bindings. + Thanks to Nate Chambers for reporting. +- Fix problem with Java bindings on OX X 10.11. Thanks to Alexander + Daryin for reporting this issue. +- Fix a performance problem for large messages for Cray XC systems. + Thanks to Jerome Vienne for reporting this. +- Fix an issue with MPI_WIN_LOCK_ALL. Thanks to Thomas Jahns for + reporting. +- Fix an issue with passing a parameter to configure multiple times. + Thanks to QuesarVII for reporting and supplying a fix. +- Add support for ALPS resource allocation system on Cray CLE 5.2 and + later. Thanks to Mark Santcroos. +- Corrections to the HACKING file. Thanks to Maximilien Levesque. +- Fix an issue with user supplied reduction operator functions. + Thanks to Rupert Nash for reporting this. +- Fix an issue with an internal list management function. Thanks to + Adrian Reber for reporting this. +- Fix a problem with MPI-RMA PSCW epochs. Thanks to Berk Hess for + reporting this. +- Fix a problem in neighborhood collectives. Thanks to Lisandro + Dalcin for reporting. +- Fix MPI_IREDUCE_SCATTER_BLOCK for a one-process communicator. Thanks + to Lisandro Dalcin for reporting. +- Add (Open MPI-specific) additional flavors to MPI_COMM_SPLIT_TYPE. + See MPI_Comm_split_type(3) for details. Thanks to Nick Andersen for + supplying this enhancement. +- Improve closing of file descriptors during the job launch phase. + Thanks to Piotr Lesnicki for reporting and providing this + enhancement. +- Fix a problem in MPI_GET_ACCUMULATE and MPI_RGET_ACCUMULATE when + using Portals4. Thanks to Nicolas Chevalier for reporting. +- Use correct include file for lstat prototype in ROMIO. Thanks to + William Throwe for finding and providing a fix. +- Add missing Fortran bindings for MPI_WIN_ALLOCATE. Thanks to Christoph + Niethammer for reporting and fixing. +- Fortran related fixes to handle Intel 2016 compiler. Thanks to + Fabrice Roy for reporting this. +- Fix a Fortran linkage issue. Thanks to Macro Atzeri for finding and + suggesting a fix. +- Fix problem with using BIND(C) for Fortran bindings with logical + parameters. Thanks to Paul Romano for reporting. +- Fix an issue with use of DL-related macros in opal library. Thanks to + Scott Atchley for finding this. +- Fix an issue with parsing mpirun command line options which contain + colons. Thanks to Lev Given for reporting. +- Fix a problem with Open MPI's package configury files. Thanks to + Christoph Junghans for reporting. +- Fix a typo in the MPI_INTERCOMM_MERGE man page. Thanks To Harald + Servat for reporting and correcting. +- Update man pages for non-blocking sends per MPI 3.1 standard. + Thanks to Alexander Pozdneev for reporting. +- Fix problem when compiling against PVFS2. Thanks to Dave Love for + reporting. +- Fix problems with MPI_NEIGHBOR_ALLTOALL{V,W}. Thanks to Willem + Vermin for reporting this issue. +- Fix various compilation problems on Cygwin. Thanks to Marco Atzeri + for supplying these fixes. +- Fix problem with resizing of subarray and darray data types. Thanks + to Keith Bennett and Dan Garmann for reporting. +- Fix a problem with MPI_COMBINER_RESIZED. Thanks to James Ramsey for + the report. +- Fix an hwloc binding issue. Thanks to Ben Menadue for reporting. +- Fix a problem with the shared memory (sm) BTL. Thanks to Peter Wind + for the report. +- Fixes for heterogeneous support. Thanks to Siegmar Gross for reporting. +- Fix a problem with memchecker. Thanks to Clinton Simpson for reporting. +- Fix a problem with MPI_UNWEIGHTED in topology functions. Thanks to + Jun Kudo for reporting. +- Fix problem with a MCA parameter base filesystem types. Thanks to + Siegmar Gross for reporting. +- Fix a problem with some windows info argument types. Thanks to + Alastair McKinstry for reporting. + +1.10.7 - 16 May 2017 +------ +- Fix bug in TCP BTL that impacted performance on 10GbE (and faster) + networks by not adjusting the TCP send/recv buffer sizes and using + system default values +- Add missing MPI_AINT_ADD and MPI_AINT_DIFF function delcarations in + mpif.h +- Fixed time reported by MPI_WTIME; it was previously reported as + dependent upon the CPU frequency. +- Fix platform detection on FreeBSD +- Fix a bug in the handling of MPI_TYPE_CREATE_DARRAY in + MPI_(R)(GET_)ACCUMULATE +- Fix openib memory registration limit calculation +- Add missing MPI_T_PVAR_SESSION_NULL in mpi.h +- Fix "make distcheck" when using external hwloc and/or libevent packages +- Add latest ConnectX-5 vendor part id to OpenIB device params +- Fix race condition in the UCX PML +- Fix signal handling for rsh launcher +- Fix Fortran compilation errors by removing MPI_SIZEOF in the Fortran + interfaces when the compiler does not support it +- Fixes for the pre-ignore-TKR "mpi" Fortran module implementation + (i.e., for older Fortran compilers -- these problems did not exist + in the "mpi" module implementation for modern Fortran compilers): + - Add PMPI_* interfaces + - Fix typo in MPI_FILE_WRITE_AT_ALL_BEGIN interface name + - Fix typo in MPI_FILE_READ_ORDERED_BEGIN interface name +- Fixed the type of MPI_DISPLACEMENT_CURRENT in all Fortran interfaces + to be an INTEGER(KIND=MPI_OFFSET_KIND). +- Fixed typos in MPI_INFO_GET_* man pages. Thanks to Nicolas Joly for + the patch +- Fix typo bugs in wrapper compiler script + +1.10.6 - 17 Feb 2017 +------ +- Fix bug in timer code that caused problems at optimization settings + greater than 2 +- OSHMEM: make mmap allocator the default instead of sysv or verbs +- Support MPI_Dims_create with dimension zero +- Update USNIC support +- Prevent 64-bit overflow on timer counter +- Add support for forwarding signals +- Fix bug that caused truncated messages on large sends over TCP BTL +- Fix potential infinite loop when printing a stacktrace + +1.10.5 - 19 Dec 2016 +------ +- Update UCX APIs +- Fix bug in darray that caused MPI/IO failures +- Use a MPI_Get_library_version() like string to tag the debugger DLL. + Thanks to Alastair McKinstry for the report +- Fix multi-threaded race condition in coll/libnbc +- Several fixes to OSHMEM +- Fix bug in UCX support due to uninitialized field +- Fix MPI_Ialltoallv with MPI_IN_PLACE and without MPI param check +- Correctly reset receive request type before init. Thanks Chris Pattison + for the report and test case. +- Fix bug in iallgather[v] +- Fix concurrency issue with MPI_Comm_accept. Thanks to Pieter Noordhuis + for the patch +- Fix ompi_coll_base_{gather,scatter}_intra_binomial +- Fixed an issue with MPI_Type_get_extent returning the wrong extent + for distributed array datatypes. +- Re-enable use of rtdtsc instruction as a monotonic clock source if + the processor has a core-invariant tsc. This is a partial fix for a + performance regression introduced in Open MPI v1.10.3. + + +1.10.4 - 01 Sept 2016 +------ + +- Fix assembler support for MIPS +- Improve memory handling for temp buffers in collectives +- Fix [all]reduce with non-zero lower bound datatypes + Thanks Hristo Iliev for the report +- Fix non-standard ddt handling. Thanks Yuki Matsumoto for the report +- Various libnbc fixes. Thanks Yuki Matsumoto for the report +- Fix typos in request RMA bindings for Fortran. Thanks to @alazzaro + and @vondele for the assist +- Various bug fixes and enhancements to collective support +- Fix predefined types mapping in hcoll +- Revive the coll/sync component to resolve unexpected message issues + during tight loops across collectives +- Fix typo in wrapper compiler for Fortran static builds + + +1.10.3 - 15 June 2016 +------ + +- Fix zero-length datatypes. Thanks to Wei-keng Liao for reporting + the issue. +- Minor manpage cleanups +- Implement atomic support in OSHMEM/UCX +- Fix support of MPI_COMBINER_RESIZED. Thanks to James Ramsey + for the report +- Fix computation of #cpus when --use-hwthread-cpus is used +- Add entry points for Allgatherv, iAllgatherv, Reduce, and iReduce + for the HCOLL library +- Fix an HCOLL integration bug that could signal completion of request + while still being worked +- Fix computation of cores when SMT is enabled. Thanks to Ben Menadue + for the report +- Various USNIC fixes +- Create a datafile in the per-proc directory in order to make it + unique per communicator. Thanks to Peter Wind for the report +- Fix zero-size malloc in one-sided pt-to-pt code. Thanks to Lisandro + Dalcin for the report +- Fix MPI_Get_address when passed MPI_BOTTOM to not return an error. + Thanks to Lisandro Dalcin for the report +- Fix MPI_TYPE_SET_ATTR with NULL value. Thanks to Lisandro Dalcin for + the report +- Fix various Fortran08 binding issues +- Fix memchecker no-data case. Thanks to Clinton Stimpson for the report +- Fix CUDA support under OS-X +- Fix various OFI/MTL integration issues +- Add MPI_T man pages +- Fix one-sided pt-to-pt issue by preventing communication from happening + before a target enters a fence, even in the no-precede case +- Fix a bug that disabled Totalview for MPMD use-case +- Correctly support MPI_UNWEIGHTED in topo-graph-neighbors. Thanks to + Jun Kudo for the report +- Fix singleton operations under SLURM when PMI2 is enabled +- Do not use MPI_IN_PLACE in neighborhood collectives for non-blocking + collectives (libnbc). Thanks to Jun Kudo for the report +- Silence autogen deprecation warnings for newer versions of Perl +- Do not return MPI_ERR_PENDING from collectives +- Use type int* for MPI_WIN_DISP_UNIT, MPI_WIN_CREATE_FLAVOR, and MPI_WIN_MODEL. + Thanks to Alastair McKinstry for the report +- Fix register_datarep stub function in IO/OMPIO. Thanks to Eric + Chamberland for the report +- Fix a bus error on MPI_WIN_[POST,START] in the shared memory one-sided component +- Add several missing MPI_WIN_FLAVOR constants to the Fortran support +- Enable connecting processes from different subnets using the openib BTL +- Fix bug in basic/barrier algorithm in OSHMEM +- Correct process binding for the --map-by node case +- Include support for subnet-to-subnet routing over InfiniBand networks +- Fix usnic resource check +- AUTHORS: Fix an errant reference to Subversion IDs +- Fix affinity for MPMD jobs running under LSF +- Fix many Fortran binding bugs +- Fix `MPI_IN_PLACE`-related bugs +- Fix PSM/PSM2 support for singleton operations +- Ensure MPI transports continue to progress during RTE barriers +- Update HWLOC to 1.9.1 end-of-series +- Fix a bug in the Java command line parser when the + -Djava.library.path options was given by the user +- Update the MTL/OFI provider selection behavior +- Add support for clock_gettime on Linux. +- Correctly detect and configure for Solaris Studio 12.5 + beta compilers +- Correctly compute #slots when -host is used for MPMD case +- Fix a bug in the hcoll collectives due to an uninitialized field +- Do not set a binding policy when oversubscribing a node +- Fix hang in intercommunicator operations when oversubscribed +- Speed up process termination during MPI_Abort +- Disable backtrace support by default in the PSM/PSM2 libraries to + prevent unintentional conflicting behavior. + + +1.10.2: 26 Jan 2016 +------------------- + + ********************************************************************** + * OSHMEM is now 1.2 compliant + ********************************************************************** + +- Fix NBC_Copy for legitimate zero-size messages +- Fix multiple bugs in OSHMEM +- Correctly handle mpirun --host @ +- Centralize two MCA params to avoid duplication between OMPI and + OSHMEM layers: opal_abort_delay and opal_abort_print_stack +- Add support for Fujitsu compilers +- Add UCX support for OMPI and OSHMEM +- Correctly handle oversubscription when not given directives + to permit it. Thanks to @ammore1 for reporting it +- Fix rpm spec file to not include the /usr directory +- Add Intel HFI1 default parameters for the openib BTL +- Resolve symbol conflicts in the PSM2 library +- Add ability to empty the rgpusm cache when full if requested +- Fix another libtool bug when -L requires a space between it + and the path. Thanks to Eric Schnetter for the patch. +- Add support for OSHMEM v1.2 APIs +- Improve efficiency of oshmem_preconnect_all algorithm +- Fix bug in buffered sends support +- Fix double free in edge case of mpirun. Thanks to @jsharpe for + the patch +- Multiple one-sided support fixes +- Fix integer overflow in the tuned "reduce" collective when + using buffers larger than INT_MAX in size +- Fix parse of user environment variables in mpirun. Thanks to + Stefano Garzarella for the patch +- Performance improvements in PSM2 support +- Fix NBS iBarrier for inter-communicators +- Fix bug in vader BTL during finalize +- Improved configure support for Fortran compilers +- Fix rank_file mapper to support default --slot-set. Thanks + to Matt Thompson for reporting it +- Update MPI_Testsome man page. Thanks to Eric Schnetter for + the suggestion +- Fix missing resize of the returned type for subarray and + darray types. Thanks to Keith Bennett and Dan Garmann for + reporting it +- Fix Java support on OSX 10.11. Thanks to Alexander Daryin + for reporting the problem +- Fix some compilation issues on Solaris 11.2. Thanks to + Paul Hargrove for his continued help in such areas + + +1.10.1: 4 Nov 2015 +------------------ + +- Workaround an optimization problem with gcc compilers >= 4.9.2 that + causes problems with memory registration, and forced + mpi_leave_pinned to default to 0 (i.e., off). Thanks to @oere for + the fix. +- Fix use of MPI_LB and MPI_UB in subarray and darray datatypes. + Thanks to Gus Correa and Dimitar Pashov for pointing out the issue. +- Minor updates to mpi_show_mpi_alloc_mem_leaks and + ompi_debug_show_handle_leaks functionality. +- Fix segv when invoking non-blocking reductions with a user-defined + operation. Thanks to Rupert Nash and Georg Geiser for identifying + the issue. +- No longer probe for PCI topology on Solaris (unless running as root). +- Fix for Intel Parallel Studio 2016 ifort partial support of the + !GCC$ pragma. Thanks to Fabrice Roy for reporting the problem. +- Bunches of Coverity / static analysis fixes. +- Fixed ROMIO to look for lstat in . Thanks to William + Throwe for submitting the patch both upstream and to Open MPI. +- Fixed minor memory leak when attempting to open plugins. +- Fixed type in MPI_IBARRIER C prototype. Thanks to Harald Servat for + reporting the issue. +- Add missing man pages for MPI_WIN_CREATE_DYNAMIC, MPI_WIN_ATTACH, + MPI_WIN_DETACH, MPI_WIN_ALLOCATE, MPI_WIN_ALLOCATE_SHARED. +- When mpirun-launching new applications, only close file descriptors + that are actually open (resulting in a faster launch in some + environments). +- Fix "test ==" issues in Open MPI's configure script. Thank to Kevin + Buckley for pointing out the issue. +- Fix performance issue in usnic BTL: ensure progress thread is + throttled back to not aggressively steal CPU cycles. +- Fix cache line size detection on POWER architectures. +- Add missing #include in a few places. Thanks to Orion Poplawski for + supplying the patch. +- When OpenSHMEM building is disabled, no longer install its header + files, help files, or man pages. Add man pages for oshrun, oshcc, + and oshfort. +- Fix mpi_f08 implementations of MPI_COMM_SET_INFO, and profiling + versions of MPI_BUFFER_DETACH, MPI_WIN_ALLOCATE, + MPI_WIN_ALLOCATE_SHARED, MPI_WTICK, and MPI_WTIME. +- Add orte_rmaps_dist_device MCA param, allowing users to map near a + specific device. +- Various updates/fixes to the openib BTL. +- Add missing defaults for the Mellanox ConnectX 3 card to the openib BTL. +- Minor bug fixes in the OFI MTL. +- Various updates to Mellanox's MXM, hcoll, and FCA components. +- Add OpenSHMEM man pages. Thanks to Tony Curtis for sharing the man + pages files from openshmem.org. +- Add missing "const" attributes to MPI_COMPARE_AND_SWAP, + MPI_FETCH_AND_OP, MPI_RACCUMULATE, and MPI_WIN_DETACH prototypes. + Thanks to Michael Knobloch and Takahiro Kawashima for bringing this + to our attention. +- Fix linking issues on some platforms (e.g., SLES 12). +- Fix hang on some corner cases when MPI applications abort. +- Add missing options to mpirun man page. Thanks to Daniel Letai + for bringing this to our attention. +- Add new --with-platform-patches-dir configure option +- Adjust relative selection priorities to ensure that MTL + support is favored over BTL support when both are available +- Use CUDA IPC for all sized messages for performance + + +1.10.0: 25 Aug 2015 +------------------- + +** NOTE: The v1.10.0 release marks the transition to Open MPI's new +** version numbering scheme. The v1.10.x release series is based on +** the v1.8.x series, but with a few new features. v2.x will be the +** next series after the v1.10.x series, and complete the transition +** to the new version numbering scheme. See README for more details +** on the new versioning scheme. +** +** NOTE: In accordance with OMPI version numbering, the v1.10 is *not* +** API compatible with the v1.8 release series. + +- Added libfabric support (see README for more details): + - usNIC BTL updated to use libfabric. + - Added OFI MTL (usable with PSM in libfabric v1.1.0). +- Added Intel Omni-Path support via new PSM2 MTL. +- Added "yalla" PML for faster MXM support. +- Removed support for MX +- Added persistent distributed virtual machine (pDVM) support for fast + workflow executions. +- Fixed typo in GCC inline assembly introduced in Open MPI v1.8.8. + Thanks to Paul Hargrove for pointing out the issue. +- Add missing man pages for MPI_Win_get|set_info(3). +- Ensure that session directories are cleaned up at the end of a run. +- Fixed linking issues on some OSs where symbols of dependent + libraries are not automatically publicly available. +- Improve hcoll and fca configury library detection. Thanks to David + Shrader for helping track down the issue. +- Removed the LAMA mapper (for use in setting affinity). Its + functionality has been largely superseded by other mpirun CLI + options. +- CUDA: Made the asynchronous copy mode be the default. +- Fix a malloc(0) warning in MPI_IREDUCE_SCATTER_BLOCK. Thanks to + Lisandro Dalcin for reporting the issue. +- Fix typo in MPI_Scatter(3) man page. Thanks to Akshay Venkatesh for + noticing the mistake. +- Add rudimentary protection from TCP port scanners. +- Fix typo in Open MPI error handling. Thanks to Åke Sandgren for + pointing out the error. +- Increased the performance of the CM PML (i.e., the Portals, PSM, + PSM2, MXM, and OFI transports). +- Restored visibility of blocking send requests in message queue + debuggers (e.g., TotalView, DDT). +- Fixed obscure IPv6-related bug in the TCP BTL. +- Add support for the "no_locks" MPI_Info key for one-sided + functionality. +- Fixed ibv_fork support for verbs-based networks. +- Fixed a variety of small bugs in OpenSHMEM. +- Fixed MXM configure with additional CPPFLAGS and LDFLAGS. Thanks to + David Shrader for the patch. +- Fixed incorrect memalign threshhold in the openib BTL. Thanks to + Xavier Besseron for pointing out the issue. + + +1.8.8: 5 Aug 2015 +----------------- + +- Fix a segfault in MPI_FINALIZE with the PSM MTL. +- Fix mpi_f08 sentinels (e.g., MPI_STATUS_IGNORE) handling. +- Set some additional MXM default values for OSHMEM. +- Fix an invalid memory access in MPI_MRECV and MPI_IMRECV. +- Include two fixes that were mistakenly left out of the official + v1.8.7 tarball: + - Fixed MPI_WIN_POST and MPI_WIN_START for zero-size messages + - Protect the OOB TCP ports from segfaulting when accessed by port + scanners + + +1.8.7: 15 Jul 2015 +------------------ + +** NOTE: v1.8.7 technically breaks ABI with prior versions +** in the 1.8 series because it repairs two incorrect API +** signatures. However, users will only need to recompile +** if they were using those functions - which they couldn't +** have been, because the signatures were wrong :-) + +- Plugged a memory leak that impacted blocking sends +- Fixed incorrect declaration for MPI_T_pvar_get_index and added + missing return code MPI_T_INVALID_NAME. +- Fixed an uninitialized variable in PMI2 support +- Added new vendor part id for Mellanox ConnectX4-LX +- Fixed NBC_Copy for legitimate zero-size messages +- Fixed MPI_Win_post and MPI_Win_start for zero-size messages +- Protect the OOB ports from segfaulting when accessed by port scanners +- Fixed several Fortran typos +- Fixed configure detection of XRC support +- Fixed support for highly heterogeneous systems to avoid + memory corruption when printing out the bindings + +1.8.6: 17 Jun 2015 +------------------ + +- Fixed memory leak on Mac OS-X exposed by TCP keepalive +- Fixed keepalive support to ensure that daemon/node failure + results in complete job cleanup +- Update Java binding support +- Fixed MPI_THREAD_MULTIPLE bug in vader shared memory BTL +- Fixed issue during shutdown when CUDA initialization wasn't complete +- Fixed orted environment when no prefix given +- Fixed trivial typo in MPI_Neighbor_allgather manpage +- Fixed tree-spawn support for sh and ksh shells +- Several data type fixes +- Fixed IPv6 support bug +- Cleaned up an unlikely build issue +- Fixed PMI2 process map parsing for cyclic mappings +- Fixed memalign threshold in openib BTL +- Fixed debugger access to message queues for blocking send/recv + + +1.8.5: 5 May 2015 +----------------- + +- Fixed configure problems in some cases when using an external hwloc + installation. Thanks to Erick Schnetter for reporting the error and + helping track down the source of the problem. +- Fixed linker error on OS X when using the clang compiler. Thanks to + Erick Schnetter for reporting the error and helping track down the + source of the problem. +- Fixed MPI_THREAD_MULTIPLE deadlock error in the vader BTL. Thanks + to Thomas Klimpel for reporting the issue. +- Fixed several Valgrind warnings. Thanks for Lisandro Dalcin for + contributing a patch fixing some one-sided code paths. +- Fixed version compatibility test in OOB that broke ABI within the + 1.8 series. NOTE: this will not resolve the problem between pre-1.8.5 + versions, but will fix it going forward. +- Fix some issues related to running on Intel Xeon Phi coprocessors. +- Opportunistically switch away from using GNU Libtool's libltdl + library when possible (by default). +- Fix some VampirTrace errors. Thanks to Paul Hargrove for reporting + the issues. +- Correct default binding patterns when --use-hwthread-cpus was + specified and nprocs <= 2. +- Fix warnings about -finline-functions when compiling with clang. +- Updated the embedded hwloc with several bug fixes, including the + "duplicate Lhwloc1 symbol" that multiple users reported on some + platforms. +- Do not error when mpirun is invoked with with default bindings + (i.e., no binding was specified), and one or more nodes do not + support bindings. Thanks to Annu Desari for pointing out the + problem. +- Let root invoke "mpirun --version" to check the version without + printing the "Don't run as root!" warnings. Thanks to Robert McLay + for the suggestion. +- Fixed several bugs in OpenSHMEM support. +- Extended vader shared memory support to 32-bit architectures. +- Fix handling of very large datatypes. Thanks to Bogdan Sataric for + the bug report. +- Fixed a bug in handling subarray MPI datatypes, and a bug when using + MPI_LB and MPI_UB. Thanks to Gus Correa for pointing out the issue. +- Restore user-settable bandwidth and latency PML MCA variables. +- Multiple bug fixes for cleanup during MPI_FINALIZE in unusual + situations. +- Added support for TCP keepalive signals to ensure timely termination + when sockets between daemons cannot be created (e.g., due to a + firewall). +- Added MCA parameter to allow full use of a SLURM allocation when + started from a tool (supports LLNL debugger). +- Fixed several bugs in the configure logic for PMI and hwloc. +- Fixed incorrect interface index in TCP communications setup. Thanks + to Mark Kettenis for spotting the problem and providing a patch. +- Fixed MPI_IREDUCE_SCATTER with single-process communicators when + MPI_IN_PLACE was not used. +- Added XRC support for OFED v3.12 and higher. +- Various updates and bug fixes to the Mellanox hcoll collective + support. +- Fix problems with Fortran compilers that did not support + REAL*16/COMPLEX*32 types. Thanks to Orion Poplawski for identifying + the issue. +- Fixed problem with rpath/runpath support in pkg-config files. + Thanks to Christoph Junghans for notifying us of the issue. +- Man page fixes: + - Removed erroneous "color" discussion from MPI_COMM_SPLIT_TYPE. + Thanks to Erick Schnetter for spotting the outdated text. + - Fixed prototypes for MPI_IBARRIER. Thanks to Maximilian for + finding the issue. + - Updated docs about buffer usage in non-blocking communications. + Thanks to Alexander Pozdneev for citing the outdated text. + - Added documentation about the 'ompi_unique' MPI_Info key with + MPI_PUBLISH_NAME. + - Fixed typo in MPI_INTERCOMM_MERGE. Thanks to Harald Servat for + noticing and sending a patch. + - Updated configure paths in HACKING. Thanks to Maximilien Levesque + for the fix. + - Fixed Fortran typo in MPI_WIN_LOCK_ALL. Thanks to Thomas Jahns + for pointing out the issue. +- Fixed a number of MPI one-sided bugs. +- Fixed MPI_COMM_SPAWN when invoked from a singleton job. +- Fixed a number of minor issues with CUDA support, including + registering of shared memory and supporting reduction support for + GPU buffers. +- Improved support for building OMPI on Cray platforms. +- Fixed performance regression introduced by the inadvertent default + enabling of MPI_THREAD_MULTIPLE support. + + +1.8.4: 19 Dec 2014 +------------------ + +- Fix MPI_SIZEOF; now available in mpif.h for modern Fortran compilers + (see README for more details). Also fixed various compiler/linker + errors. +- Fixed inadvertant Fortran ABI break between v1.8.1 and v1.8.2 in the + mpi interface module when compiled with gfortran >= v4.9. +- Fix various MPI_THREAD_MULTIPLE issues in the TCP BTL. +- mpirun no longer requires the --hetero-nodes switch; it will + automatically detect when running in heterogeneous scenarios. +- Update LSF support, to include revamped affinity functionality. +- Update embedded hwloc to v1.9.1. +- Fixed max registerable memory computation in the openib BTL. +- Updated error message when debuggers are unable to find various + symbols/types to be more clear. Thanks to Dave Love for raising the + issue. +- Added proper support for LSF and PBS/Torque libraries in static builds. +- Rankfiles now support physical processor IDs. +- Fixed potential hang in MPI_ABORT. +- Fixed problems with the PSM MTL and "re-connect" scenarios, such as + MPI_INTERCOMM_CREATE. +- Fix MPI_IREDUCE_SCATTER with a single process. +- Fix (rare) race condition in stdout/stderr funneling to mpirun where + some trailing output could get lost when a process terminated. +- Removed inadvertent change that set --enable-mpi-thread-multiple "on" + by default, thus impacting performance for non-threaded apps. +- Significantly reduced startup time by optimizing internal hash table + implementation. +- Fixed OS X linking with the Fortran mpi module when used with + gfortran >= 4.9. Thanks to Github user yafshar for raising the + issue. +- Fixed memory leak on Cygwin platforms. Thanks for Marco Atzeri for + reporting the issue. +- Fixed seg fault in neighborhood collectives when the degree of the + topology is higher than the communicator size. Thanks to Lisandro + Dalcin for reporting the issue. +- Fixed segfault in neighborhood collectives under certain use-cases. +- Fixed various issues regarding Solaris support. Thanks to Siegmar + Gross for patiently identifying all the issues. +- Fixed PMI configure tests for certain Slurm installation patterns. +- Fixed param registration issue in Java bindings. Thanks to Takahiro + Kawashima and Siegmar Gross for identifying the issue. +- Several man page fixes. +- Silence several warnings and close some memory leaks (more remain, + but it's better than it was). +- Re-enabled the use of CMA and knem in the shared memory BTL. +- Updated mpirun manpage to correctly explain new map/rank/binding options. +- Fixed MPI_IALLGATHER problem with intercommunicators. Thanks for + Takahiro Kawashima for the patch. +- Numerous updates and performance improvements to OpenSHMEM. +- Turned off message coalescing in the openib BTL until a proper fix + for that capability can be provided (tentatively expected for 1.8.5) +- Fix a bug in iof output that dates back to the dinosaurs which would + output extra bytes if the system was very heavily loaded +- Fix a bug where specifying mca_component_show_load_errors=0 could + cause ompi_info to segfault +- Updated valgrind suppression file + + +1.8.3: 26 Sep 2014 +------------------ + +- Fixed application abort bug to ensure that MPI_Abort exits appropriately + and returns the provided exit status +- Fixed some alignment (not all) issues identified by Clang +- Allow CUDA-aware to work with nonblocking collectives. Forces packing to + happen when using GPU buffers. +- Fixed configure test issue with Intel 2015 Fortran compiler +- Fixed some PGI-related errors +- Provide better help message when encountering a firewall +- Fixed MCA parameter quoting to protect multi-word params and params + that contain special characters +- Improved the bind-to help message to clarify the defaults +- Add new MPI-3.1 tools interface +- Several performance optimizations and memory leak cleanups +- Turn off the coll/ml plugin unless specifically requested as it + remains in an experimental state +- Fix LSF support by adding required libraries for the latest LSF + releases. Thanks to Joshua Randal for supplying the initial + patches. + + +1.8.2: 25 Aug 2014 +------------------ + +- Fix auto-wireup of OOB, allowing ORTE to automatically + test all available NICs +- "Un-deprecate" pernode, npernode, and npersocket options + by popular demand +- Add missing Fortran bindings for MPI_WIN_LOCK_ALL, + MPI_WIN_UNLOCK_ALL, and MPI_WIN_SYNC. +- Fix cascading/over-quoting in some cases with the rsh/ssh-based + launcher. Thanks to multiple users for raising the issue. +- Properly add support for gfortran 4.9 ignore TKR pragma (it was + erroneously only partially added in v1.7.5). Thanks to Marcus + Daniels for raising the issue. +- Update/improve help messages in the usnic BTL. +- Resolve a race condition in MPI_Abort. +- Fix obscure cases where static linking from wrapper compilers would + fail. +- Clarify the configure --help message about when OpenSHMEM is + enabled/disabled by default. Thanks to Paul Hargrove for the + suggestion. +- Align pages properly where relevant. Thanks to Paul Hargrove for + identifying the issue. +- Various compiler warning and minor fixes for OpenBSD, FreeBSD, and + Solaris/SPARC. Thanks to Paul Hargrove for the patches. +- Properly pass function pointers from Fortran to C in the mpi_f08 + module, thereby now supporting gfortran 4.9. Thanks to Tobias + Burnus for assistance and testing with this issue. +- Improve support for Cray CLE 5. +- Fix mpirun regression: ensure exit status is non-zero if mpirun is + terminated due to signal. +- Improved CUDA efficiency of asynchronous copies. +- Fix to parameter type in MPI_Type_indexed.3. Thanks to Bastian + Beischer for reporting the mistake. +- Fix NUMA distance calculations in the openib BTL. +- Decrease time required to shut down mpirun at the end of a job. +- More RMA fixes. +- More hostfile fixes from Tetsuya Mishima. +- Fix darray issue where UB was not computed correctly. +- Fix mpi_f08 parameter name for MPI_GET_LIBRARY_VERSION. Thanks to + Junchao Zhang for pointing out the issue. +- Ensure mpirun aborts properly when unable to map processes in + scheduled environments. +- Ensure that MPI RMA error codes show up properly. Thanks to + Lisandro Dalcin for reporting the issue. +- Minor bug fixes and improvements to the bash and zsh mpirun + autocompletion scripts. +- Fix sequential mpirun process mapper. Thanks to Bill Chen for + reporting the issue. +- Correct SLURM stdout/stderr redirection. +- Added missing portals 4 files. +- Performance improvements for blocking sends and receives. +- Lots of cleanup to the ml collective component +- Added new Java methods to provide full MPI coverage +- Many OSHMEM cleanups +- Prevent comm_spawn from automatically launching a VM across + all available nodes +- Close many memory leaks to achieve valgrind-clean operation +- Better handling of TCP connection discovery for mismatched networks + where we don't have a direct 1:1 subnet match between nodes +- Prevent segfault when OMPI info tools are used in pipes and user + exits one step of that pipe before completing output + + +1.8.1: 23 Apr 2014 +------------------ + +- Fix for critical bug: mpirun removed files (but not directories) + from / when run as root. Thanks to Jay Fenlason and Orion Poplawski + for bringing the issue to our attention and helping identify the + fix. + + +1.8: 31 Mar 2014 +---------------- + +- Commit upstream ROMIO fix for mixed NFS+local filesystem environments. +- Several fixes for MPI-3 one-sided support. For example, + arbitrary-length datatypes are now supported. +- Add config support for the Mellanox ConnectX 4 card. +- Add missing MPI_COMM_GET|SET_INFO functions, and missing + MPI_WEIGHTS_EMPTY and MPI_ERR_RMA_SHARED constants. Thanks to + Lisandro Dalcin for pointing out the issue. +- Update some help messages in OSHMEM, the usnic BTL, the TCP BTL, and + ORTE, and update documentation about ompi_info's --level option. +- Fix some compiler warnings. +- Ensure that ORTE daemons are not bound to a single processor + if TaskAffinity is set on by default in Slurm. Thanks to Artem Polyakov + for identifying the problem and providing a patch + + +1.7.5 20 Mar 2014 +----------------- + + ********************************************************************** + * Open MPI is now fully MPI-3.0 compliant + ********************************************************************** + +- Add Linux OpenSHMEM support built on top of Open MPI's MPI + layer. Thanks to Mellanox for contributing this new feature. +- Allow restricting ORTE daemons to specific cores using the + orte_daemon_cores MCA param. +- Ensure to properly set "locality" flags for processes launched via + MPI dynamic functions such as MPI_COMM_SPAWN. +- Fix MPI_GRAPH_CREATE when nnodes is smaller than the size of the old + communicator. +- usnic BTL now supports underlying UDP transport. +- usnic BTL now checks for common connectivty errors at first send to + a remote server. +- Minor scalability improvements in the usnic BTL. +- ompi_info now lists whether the Java MPI bindings are available or not. +- MPI-3: mpi.h and the Fortran interfaces now report MPI_VERSION==3 + and MPI_SUBVERSION==0. +- MPI-3: Added support for new RMA functions and functionality. +- Fix MPI_Info "const buglet. Thanks to Orion Poplawski for + identifying the issue. +- Multiple fixes to mapping/binding options. Thanks to Tetsuya Mishima + for his assistance. +- Multiple fixes for normal and abnormal process termination, + including singleton MPI_Abort and ensuring to kill entire process + groups when abnormally terminating a job. +- Fix DESTDIR install for javadocs. Thanks to Orion Poplawski for + pointing out the issue. +- Various performance improvements for the MPI Java bindings. +- OMPI now uses its own internal random number generator and will not + perturb srand() and friends. +- Some cleanups for Cygwin builds. Thanks to Marco Atzeri for the + patches. +- Add a new collective component (coll/ml) that provides substantially + improved performance. It is still experimental, and requires + setting coll_ml_priority > 0 to become active. +- Add version check during startup to ensure you are using the same + version of Open MPI on all nodes in a job. +- Significantly improved the performance of MPI_DIMS_CREATE for large + values. Thanks to Andreas Schäfer for the contribution. +- Removed ASYNCHRONOUS keyword from the "ignore TKR" mpi_f08 module. +- Deprecated the following mpirun options: + --bynode, --bycore, --byslot: replaced with --map-by node|core|slot. + --npernode, --npersocket: replaced with --map-by ppr:N:node and + --map-by ppr:N:socket, respectively +- Pick NFS "infinitely stale" fix from ROMIO upstream. +- Various PMI2 fixes and extension to support broader range of mappings. +- Improve launch performance at large scale. +- Add support for PBS/Torque environments that set environment + variables to indicate the number of slots available on each nodes. + Set the ras_tm_smp MCA parameter to "1" to enable this mode. +- Add new, more scalable endpoint exchange (commonly called "modex") + method that only exchanges endpoint data on a per-peer basis + on first message. Not all transports have been updated to use + this feature. Set the rte_orte_direct_modex parameter to "1" + to enable this mode. + + +1.7.4: 5 Feb 2014 +----------------- + + ********************************************************************** + * CRITICAL CHANGE + * + * As of release 1.7.4, OpenMPI's default mapping, ranking, and binding + * settings have changed: + * + * Mapping: + * if #procs <= 2, default to map-by core + * if #procs > 2, default to map-by socket + * Ranking: + * if default mapping is used, then default to rank-by slot + * if map-by is given, then default to rank-by , + * where is whatever object we mapped against + * Binding: + * default to bind-to core + * + * Users can override any of these settings individually using the + * corresponding MCA parameter. Note that multi-threaded applications + * in particular may want to override at least the binding default + * to allow threads to use multiple cores. + ********************************************************************** + +- Restore version number output in "ompi_info --all". +- Various bug fixes for the mpi_f08 Fortran bindings. +- Fix ROMIO compile error with Lustre 2.4. Thanks to Adam Moody for + reporting the issue. +- Various fixes for 32 bit platforms. +- Add ability to selectively disable building the mpi or mpi_f08 + module. See the README file for details. +- Fix MX MTL finalization issue. +- Fix ROMIO issue when opening a file with MPI_MODE_EXCL. +- Fix PowerPC and MIPS assembly issues. +- Various fixes to the hcoll and FCA collective offload modules. +- Prevent integer overflow when creating datatypes. Thanks to + original patch from Gilles Gouaillardet. +- Port some upstream hwloc fixes to Open MPI's embedded copy for + working around buggy NUMA node cpusets and including mising header + files. Thanks to Jeff Becker and Paul Hargrove for reporting the + issues. +- Fix recursive invocation issues in the MXM MTL. +- Various bug fixes to the new MCA parameter back-end system. +- Have the posix fbtl module link against -laio on NetBSD platforms. + Thanks to Paul Hargrove for noticing the issue. +- Various updates and fixes to network filesystem detection to support + more operating systems. +- Add gfortran v4.9 "ignore TKR" syntax to the mpi Fortran module. +- Various compiler fixes for several BSD-based platforms. Thanks to + Paul Hargrove for reporting the issues. +- Fix when MPI_COMM_SPAWN[_MULTIPLE] is used on oversubscribed + systems. +- Change the output from --report bindings to simply state that a + process is not bound, instead of reporting that it is bound to all + processors. +- Per MPI-3.0 guidance, remove support for all MPI subroutines with + choice buffers from the TKR-based mpi Fortran module. Thanks to Jed + Brown for raising the issue. +- Only allow the usnic BTL to build on 64 bit platforms. +- Various bug fixes to SLURM support, to include ensuring proper + exiting on abnormal termination. +- Ensure that MPI_COMM_SPAWN[_MULTIPLE] jobs get the same mapping + directives that were used with mpirun. +- Fixed the application of TCP_NODELAY. +- Change the TCP BTL to not warn if a non-existent interface is + ignored. +- Restored the "--bycore" mpirun option for backwards compatibility. +- Fixed debugger attach functionality. Thanks to Ashley Pittman for + reporting the issue and suggesting the fix. +- Fixed faulty MPI_IBCAST when invoked on a communicator with only + one process. +- Add new Mellanox device IDs to the openib BTL. +- Progress towards cleaning up various internal memory leaks as + reported by Valgrind. +- Fixed some annoying flex-generated warnings that have been there for + years. Thanks to Tom Fogal for the initial patch. +- Support user-provided environment variables via the "env" info key + to MPI_COMM_SPAWN[_MULTIPLE]. Thanks to Tom Fogal for the feature + request. +- Fix uninitialized variable in MPI_DIST_GRAPH_CREATE. +- Fix a variety of memory errors on SPARC platforms. Thanks to + Siegmar Gross for reporting and testing all the issues. +- Remove Solaris threads support. When building on Solaris, pthreads + will be used. +- Correctly handle the convertor internal stack for persistent + receives. Thanks to Guillaume Gouaillardet for identifying the + problem. +- Add support for using an external libevent via --with-libevent. See + the README for more details. +- Various OMPIO updates and fixes. +- Add support for the MPIEXEC_TIMEOUT environment variable. If set, + mpirun will terminate the job after this many seconds. +- Update the internal copy of ROMIO to that which shipped in MPICH + 3.0.4. +- Various performance tweaks and improvements in the usnic BTL, + including now reporting MPI_T performance variables for each usnic + device. +- Fix to not access send datatypes for non-root processes with + MPI_ISCATTER[V] and MPI_IGATHER[V]. Thanks to Pierre Jolivet for + supplying the initial patch. +- Update VampirTrace to 5.14.4.9. +- Fix ptmalloc2 hook disable when used with ummunotify. +- Change the default connection manager for the openib BTL to be based + on UD verbs data exchanges instead of ORTE OOB data exchanges. +- Fix Fortran compile error when compiling with 8-byte INTEGERs and + 4-byte ints. +- Fix C++11 issue identified by Jeremiah Willcock. +- Many changes, updates, and bug fixes to the ORTE run-time layer. +- Correctly handle MPI_REDUCE_SCATTER with recvcounts of 0. +- Update man pages for MPI-3, and add some missing man pages for + MPI-2.x functions. +- Updated mpi_f08 module in accordance with post-MPI-3.0 errata which + basically removed BIND(C) from all interfaces. +- Fixed MPI_IN_PLACE detection for MPI_SCATTER[V] in Fortran + routines. Thanks to Charles Gerlach for identifying the issue. +- Added support for routable RoCE to the openib BTL. +- Update embedded hwloc to v1.7.2. +- ErrMgr framework redesigned to better support fault tolerance development + activities. See the following RFC for details: + http://www.open-mpi.org/community/lists/devel/2010/03/7589.php +- Added database framework to OPAL and changed all modex operations + to flow thru it, also included additional system info in the + available data +- Added staged state machine to support sequential work flows +- Added distributed file system support for accessing files across + nodes that do not have networked file systems +- Extended filem framework to support scalable pre-positioning of + files for use by applications, adding new "raw" component that + transmits files across the daemon network +- Native Windows support has been removed. A cygwin package is + available from that group for Windows-based use. +- Added new MPI Java bindings. See the Javadocs for more details on + the API. +- Wrapper compilers now add rpath support by default to generated + executables on systems that support it. This behavior can be + disabled via --disable-wrapper-rpath. See note in README about ABI + issues when using rpath in MPI applications. +- Added a new parallel I/O component and multiple new frameworks to + support parallel I/O operations. +- Fixed MPI_STATUS_SIZE Fortran issue when used with 8-byte Fortran + INTEGERs and 4-byte C ints. Since this issue affects ABI, it is + only enabled if Open MPI is configured with + --enable-abi-breaking-fortran-status-i8-fix. Thanks to Jim Parker + for supplying the initial patch. +- Add support for Intel Phi SCIF transport. +- For CUDA-aware MPI configured with CUDA 6.0, use new pointer + attribute to avoid extra synchronization in stream 0 when using + CUDA IPC between GPUs on the same node. +- For CUDA-aware MPI configured with CUDA 6.0, compile in support + of GPU Direct RDMA in openib BTL to improve small message latency. +- Updated ROMIO from MPICH v3.0.4. +- MPI-3: Added support for remaining non-blocking collectives. +- MPI-3: Added support for neighborhood collectives. +- MPI-3: Updated C bindings with consistent use of []. +- MPI-3: Added the const keyword to read-only buffers. +- MPI-3: Added support for non-blocking communicator duplication. +- MPI-3: Added support for non-collective communicator creation. + + +1.7.3: 17 Oct 2013 +------------------ + +- Make CUDA-aware support dynamically load libcuda.so so CUDA-aware + MPI library can run on systems without CUDA software. +- Fix various issues with dynamic processes and intercommunicator + operations under Torque. Thanks to Suraj Prabhakaran for reporting + the problem. +- Enable support for the Mellanox MXM2 library by default. +- Improve support for Portals 4. +- Various Solaris fixes. Many thanks to Siegmar Gross for his + incredible patience in reporting all the issues. +- MPI-2.2: Add reduction support for MPI_C_*COMPLEX and MPI::*COMPLEX. +- Fixed internal accounting when openpty() fails. Thanks to Michal + Peclo for reporting the issue and providing a patch. +- Fixed too-large memory consumption in XRC mode of the openib BTL. + Thanks to Alexey Ryzhikh for the patch. +- Add bozo check for negative np values to mpirun to prevent a + deadlock. Thanks to Upinder Malhi for identifying the issue. +- Fixed MPI_IS_THREAD_MAIN behavior. Thanks to Lisandro Dalcin for + pointing out the problem. +- Various rankfile fixes. +- Fix functionality over iWARP devices. +- Various memory and performance optimizations and tweaks. +- Fix MPI_Cancel issue identified by Fujitsu. +- Add missing support for MPI_Get_address in the "use mpi" TKR + implementation. Thanks to Hugo Gagnon for identifying the issue. +- MPI-3: Add support for MPI_Count. +- MPI-2.2: Add missing MPI_IN_PLACE support for MPI_ALLTOALL. +- Added new usnic BTL to support the Cisco usNIC device. +- Minor VampirTrace update to 5.14.4.4. +- Removed support for ancient OS X systems (i.e., prior to 10.5). +- Fixed obscure packing/unpacking datatype bug. Thanks to Takahiro + Kawashima for identifying the issue. +- Add run-time support for PMI2 environments. +- Update openib BTL default parameters to include support for Mellanox + ConnectX3-Pro devices. +- Update libevent to v2.0.21. +- "ompi_info --param TYPE PLUGIN" now only shows a small number of MCA + parameters by default. Add "--level 9" or "--all" to see *all* MCA + parameters. See README for more details. +- Add support for asynchronous CUDA-aware copies. +- Add support for Mellanox MPI collective operation offload via the + "hcoll" library. +- MPI-3: Add support for the MPI_T interface. Open MPI's MCA + parameters are now accessible via the MPI_T control variable + interface. Support has been added for a small number of MPI_T + performance variables. +- Add Gentoo memory hooks override. Thanks to Justin Bronder for the + patch. +- Added new "mindist" process mapper, allowing placement of processes + via PCI locality information reported by the BIOS. +- MPI-2.2: Add support for MPI_Dist_graph functionality. +- Enable generic, client-side support for PMI2 implementations. Can + be leveraged by any resource manager that implements PMI2; e.g. SLURM, + versions 2.6 and higher. + +1.7.2: 26 Jun 2013 +------------------ + +- Major VampirTrace update to 5.14.4.2. + (** also appeared: 1.6.5) +- Fix to set flag==1 when MPI_IPROBE is called with MPI_PROC_NULL. + (** also appeared: 1.6.5) +- Set the Intel Phi device to be ignored by default by the openib BTL. + (** also appeared: 1.6.5) +- Decrease the internal memory storage used by intrinsic MPI datatypes + for Fortran types. Thanks to Takahiro Kawashima for the initial + patch. + (** also appeared: 1.6.5) +- Fix total registered memory calculation for Mellanox ConnectIB and + OFED 2.0. + (** also appeared: 1.6.5) +- Fix possible data corruption in the MXM MTL component. + (** also appeared: 1.6.5) +- Remove extraneous -L from hwloc's embedding. Thanks to Stefan + Friedel for reporting the issue. + (** also appeared: 1.6.5) +- Fix contiguous datatype memory check. Thanks to Eric Chamberland + for reporting the issue. + (** also appeared: 1.6.5) +- Make the openib BTL more friendly to ignoring verbs devices that are + not RC-capable. + (** also appeared: 1.6.5) +- Fix some MPI datatype engine issues. Thanks to Thomas Jahns for + reporting the issue. + (** also appeared: 1.6.5) +- Add INI information for Chelsio T5 device. + (** also appeared: 1.6.5) +- Integrate MXM STREAM support for MPI_ISEND and MPI_IRECV, and other + minor MXM fixes. + (** also appeared: 1.6.5) +- Fix to not show amorphous "MPI was already finalized" error when + failing to MPI_File_close an open file. Thanks to Brian Smith for + reporting the issue. + (** also appeared: 1.6.5) +- Add a distance-based mapping component to find the socket "closest" + to the PCI bus. +- Fix an error that caused epoll to automatically be disabled + in libevent. +- Upgrade hwloc to 1.5.2. +- *Really* fixed XRC compile issue in Open Fabrics support. +- Fix MXM connection establishment flow. +- Fixed parallel debugger ability to attach to MPI jobs. +- Fixed some minor memory leaks. +- Fixed datatype corruption issue when combining datatypes of specific + formats. +- Added Location Aware Mapping Algorithm (LAMA) mapping component. +- Fixes for MPI_STATUS handling in corner cases. +- Add a distance-based mapping component to find the socket "closest" + to the PCI bus. + + +1.7.1: 16 Apr 2013 +------------------ + +- Fixed compile error when --without-memory-manager was specified + on Linux +- Fixed XRC compile issue in Open Fabrics support. + + +1.7: 1 Apr 2013 +--------------- + +- Added MPI-3 functionality: + - MPI_GET_LIBRARY_VERSION + - Matched probe + - MPI_TYPE_CREATE_HINDEXED_BLOCK + - Non-blocking collectives + - MPI_INFO_ENV support + - Fortran '08 bindings (see below) +- Dropped support for checkpoint/restart due to loss of maintainer :-( +- Enabled compile-time warning of deprecated MPI functions by default + (in supported compilers). +- Revamped Fortran MPI bindings (see the README for details): + - "mpifort" is now the preferred wrapper compiler for Fortran + - Added "use mpi_f08" bindings (for compilers that support it) + - Added better "use mpi" support (for compilers that support it) + - Removed incorrect MPI_SCATTERV interface from "mpi" module that + was added in the 1.5.x series for ABI reasons. +- Lots of VampirTrace upgrades and fixes; upgrade to v5.14.3. +- Modified process affinity system to provide warning when bindings + result in being "bound to all", which is equivalent to not being + bound. +- Removed maffinity, paffinity, and carto frameworks (and associated + MCA params). +- Upgraded to hwloc v1.5.1. +- Added performance improvements to the OpenIB (OpenFabrics) BTL. +- Made malloc hooks more friendly to IO interprosers. Thanks to the + bug report and suggested fix from Darshan maintainer Phil Carns. +- Added support for the DMTCP checkpoint/restart system. +- Added support for the Cray uGNI interconnect. +- Fixed header file problems on OpenBSD. +- Fixed issue with MPI_TYPE_CREATE_F90_REAL. +- Wrapper compilers now explicitly list/link all Open MPI libraries if + they detect static linking CLI arguments. +- Open MPI now requires a C99 compiler to build. Please upgrade your + C compiler if you do not have a C99-compliant compiler. +- Fix MPI_GET_PROCESSOR_NAME Fortran binding to set ierr properly. + Thanks to LANL for spotting the error. +- Many MXM and FCA updates. +- Fixed erroneous free of putenv'ed string that showed up in Valgrind + reports. +- Fixed MPI_IN_PLACE case for MPI_ALLGATHER. +- Fixed a bug that prevented MCA params from being forwarded to + daemons upon launch. +- Fixed issues with VT and CUDA --with-cuda[-libdir] configuration CLI + parameters. +- Entirely new implementation of many MPI collective routines focused + on better performance. +- Revamped autogen / build system. +- Add new sensor framework to ORTE that includes modules for detecting + stalled applications and processes that consume too much memory. +- Added new state machine framework to ORTE that converts ORTE into an + event-driven state machine using the event library. +- Added a new MCA parameter (ess_base_stream_buffering) that allows the user + to override the system default for buffering of stdout/stderr streams + (via setvbuf). Parameter is not visible via ompi_info. +- Revamped the launch system to allow consideration of node hardware + in assigning process locations and bindings. +- Added the -novm option to preserve the prior launch behavior. +- Revamped the process mapping system to utilize node hardware by adding + new map-by, rank-by, and bind-to cmd line options. +- Added new MCA parameter to provide protection against IO forwarding + backlog. +- Dropped support for native Windows due to loss of maintainers. :-( +- Added a new parallel I/O component and multiple new frameworks to + support parallel I/O operations. +- Fix typo in orte_setup_hadoop.m4. Thanks to Aleksej Saushev for + reporting it +- Fix a very old error in opal_path_access(). Thanks to Marco Atzeri + for chasing it down. + + +1.6.6: Not released +------------------- + +- Prevent integer overflow in datatype creation. Thanks to Gilles + Gouaillardet for identifying the problem and providing a preliminary + version of the patch. +- Ensure help-opal-hwloc-base.txt is included in distribution + tarballs. Thanks to Gilles Gouaillardet for supplying the patch. +- Correctly handle the invalid status for NULL and inactive requests. + Thanks to KAWASHIMA Takahiro for submitting the initial patch. +- Fixed MPI_STATUS_SIZE Fortran issue when used with 8-byte Fortran + INTEGERs and 4-byte C ints. Since this issue affects ABI, it is + only enabled if Open MPI is configured with + --enable-abi-breaking-fortran-status-i8-fix. Thanks to Jim Parker + for supplying the initial patch. +- Fix datatype issue for sending from the middle of non-contiguous + data. +- Fixed failure error with pty support. Thanks to Michal Pecio for + the patch. +- Fixed debugger support for direct-launched jobs. +- Fix MPI_IS_THREAD_MAIN to return the correct value. Thanks to + Lisandro Dalcin for pointing out the issue. +- Update VT to 5.14.4.4: + - Fix C++-11 issue. + - Fix support for building RPMs on Fedora with CUDA libraries. +- Add openib part number for ConnectX3-Pro HCA. +- Ensure to check that all resolved IP addresses are local. +- Fix MPI_COMM_SPAWN via rsh when mpirun is on a different server. +- Add Gentoo "sandbox" memory hooks override. + + +1.6.5: 26 Jun 2013 +------------------ + +- Updated default SRQ parameters for the openib BTL. + (** also to appear: 1.7.2) +- Major VampirTrace update to 5.14.4.2. + (** also to appear: 1.7.2) +- Fix to set flag==1 when MPI_IPROBE is called with MPI_PROC_NULL. + (** also to appear: 1.7.2) +- Set the Intel Phi device to be ignored by default by the openib BTL. + (** also to appear: 1.7.2) +- Decrease the internal memory storage used by intrinsic MPI datatypes + for Fortran types. Thanks to Takahiro Kawashima for the initial + patch. + (** also to appear: 1.7.2) +- Fix total registered memory calculation for Mellanox ConnectIB and + OFED 2.0. + (** also to appear: 1.7.2) +- Fix possible data corruption in the MXM MTL component. + (** also to appear: 1.7.2) +- Remove extraneous -L from hwloc's embedding. Thanks to Stefan + Friedel for reporting the issue. + (** also to appear: 1.7.2) +- Fix contiguous datatype memory check. Thanks to Eric Chamberland + for reporting the issue. + (** also to appear: 1.7.2) +- Make the openib BTL more friendly to ignoring verbs devices that are + not RC-capable. + (** also to appear: 1.7.2) +- Fix some MPI datatype engine issues. Thanks to Thomas Jahns for + reporting the issue. + (** also to appear: 1.7.2) +- Add INI information for Chelsio T5 device. + (** also to appear: 1.7.2) +- Integrate MXM STREAM support for MPI_ISEND and MPI_IRECV, and other + minor MXM fixes. + (** also to appear: 1.7.2) +- Improved alignment for OpenFabrics buffers. +- Fix to not show amorphous "MPI was already finalized" error when + failing to MPI_File_close an open file. Thanks to Brian Smith for + reporting the issue. + (** also to appear: 1.7.2) + + +1.6.4: 21 Feb 2013 +------------------ + +- Fix Cygwin shared memory and debugger plugin support. Thanks to + Marco Atzeri for reporting the issue and providing initial patches. +- Fix to obtaining the correct available nodes when a rankfile is + providing the allocation. Thanks to Siegmar Gross for reporting the + problem. +- Fix process binding issue on Solaris. Thanks to Siegmar Gross for + reporting the problem. +- Updates for MXM 2.0. +- Major VT update to 5.14.2.3. +- Fixed F77 constants for Cygwin/Cmake build. +- Fix a linker error when configuring --without-hwloc. +- Automatically provide compiler flags that compile properly on some + types of ARM systems. +- Fix slot_list behavior when multiple sockets are specified. Thanks + to Siegmar Gross for reporting the problem. +- Fixed memory leak in one-sided operations. Thanks to Victor + Vysotskiy for letting us know about this one. +- Added performance improvements to the OpenIB (OpenFabrics) BTL. +- Improved error message when process affinity fails. +- Fixed MPI_MINLOC on man pages for MPI_REDUCE(_LOCAL). Thanks to Jed + Brown for noticing the problem and supplying a fix. +- Made malloc hooks more friendly to IO interprosers. Thanks to the + bug report and suggested fix from Darshan maintainer Phil Carns. +- Restored ability to direct launch under SLURM without PMI support. +- Fixed MPI datatype issues on OpenBSD. +- Major VT update to 5.14.2.3. +- Support FCA v3.0+. +- Fixed header file problems on OpenBSD. +- Fixed issue with MPI_TYPE_CREATE_F90_REAL. +- Fix an issue with using external libltdl installations. Thanks to + opolawski for identifying the problem. +- Fixed MPI_IN_PLACE case for MPI_ALLGATHER for FCA. +- Allow SLURM PMI support to look in lib64 directories. Thanks to + Guillaume Papaure for the patch. +- Restore "use mpi" ABI compatibility with the rest of the 1.5/1.6 + series (except for v1.6.3, where it was accidentally broken). +- Fix a very old error in opal_path_access(). Thanks to Marco Atzeri + for chasing it down. + + +1.6.3: 30 Oct 2012 +------------------ + +- Fix mpirun --launch-agent behavior when a prefix is specified. + Thanks to Reuti for identifying the issue. +- Fixed memchecker configury. +- Brought over some compiler warning squashes from the development trunk. +- Fix spawning from a singleton to multiple hosts when the "add-host" + MPI_Info key is used. Thanks to Brian Budge for pointing out the + problem. +- Add Mellanox ConnextIB IDs and max inline value. +- Fix rankfile when no -np is given. +- FreeBSD detection improvement. Thanks to Brooks Davis for the + patch. +- Removed TCP warnings on Windows. +- Improved collective algorithm selection for very large messages. +- Fix PSM MTL affinity settings. +- Fix issue with MPI_OP_COMMUTATIVE in the mpif.h bindings. Thanks to + Ake Sandgren for providing a patch to fix the issue. +- Fix issue with MPI_SIZEOF when using CHARACTER and LOGICAL types in + the mpi module. Thanks to Ake Sandgren for providing a patch to fix + the issue. + + +1.6.2: 25 Sep 2012 +------------------ + +- Fix issue with MX MTL. Thanks to Doug Eadline for raising the issue. +- Fix singleton MPI_COMM_SPAWN when the result job spans multiple nodes. +- Fix MXM hang, and update for latest version of MXM. +- Update to support Mellanox FCA 2.5. +- Fix startup hang for large jobs. +- Ensure MPI_TESTANY / MPI_WAITANY properly set the empty status when + count==0. +- Fix MPI_CART_SUB behavior of not copying periods to the new + communicator properly. Thanks to John Craske for the bug report. +- Add btl_openib_abort_not_enough_reg_mem MCA parameter to cause Open + MPI to abort MPI jobs if there is not enough registered memory + available on the system (vs. just printing a warning). Thanks to + Brock Palen for raising the issue. +- Minor fix to Fortran MPI_INFO_GET: only copy a value back to the + user's buffer if the flag is .TRUE. +- Fix VampirTrace compilation issue with the PGI compiler suite. + + +1.6.1: 22 Aug 2012 +------------------ + +- A bunch of changes to eliminate hangs on OpenFabrics-based networks. + Users with Mellanox hardware are ***STRONGLY ENCOURAGED*** to check + their registered memory kernel module settings to ensure that the OS + will allow registering more than 8GB of memory. See this FAQ item + for details: + + http://www.open-mpi.org/faq/?category=openfabrics#ib-low-reg-mem + + - Fall back to send/receive semantics if registered memory is + unavilable for RDMA. + - Fix two fragment leaks when registered memory is exhausted. + - Hueristically determine how much registered memory is available + and warn if it's significantly less than all of RAM. + - Artifically limit the amount of registered memory each MPI process + can use to about 1/Nth to total registered memory available. + - Improve error messages when events occur that are likely due to + unexpected registered memory exhaustion. + +- Fix double semicolon error in the C++ in . Thanks to John + Foster for pointing out the issue. +- Allow -Xclang to be specified multiple times in CFLAGS. Thanks to + P. Martin for raising the issue. +- Break up a giant "print *" statement in the ABI-preserving incorrect + MPI_SCATTER interface in the "large" Fortran "mpi" module. Thanks + to Juan Escobar for the initial patch. +- Switch the MPI_ALLTOALLV default algorithm to a pairwise exchange. +- Increase the openib BTL default CQ length to handle more types of + OpenFabrics devices. +- Lots of VampirTrace fixes; upgrade to v5.13.0.4. +- Map MPI_2INTEGER to underlying MPI_INTEGERs, not MPI_INTs. +- Ensure that the OMPI version number is toleant of handling spaces. + Thanks to dragonboy for identifying the issue. +- Fixed IN parameter marking on Fortran "mpi" module + MPI_COMM_TEST_INTER interface. +- Various MXM improvements. +- Make the output of "mpirun --report-bindings" much more friendly / + human-readable. +- Properly handle MPI_COMPLEX8|16|32. +- More fixes for mpirun's processor affinity options (--bind-to-core + and friends). +- Use aligned memory for OpenFabrics registered memory. +- Multiple fixes for parameter checking in MPI_ALLGATHERV, + MPI_REDUCE_SCATTER, MPI_SCATTERV, and MPI_GATHERV. Thanks to the + mpi4py community (Bennet Fauber, Lisandro Dalcin, Jonathan Dursi). +- Fixed file positioning overflows in MPI_FILE_GET_POSITION, + MPI_FILE_GET_POSITION_SHARED, FILE_GET_SIZE, FILE_GET_VIEW. +- Removed the broken --cpu-set mpirun option. +- Fix cleanup of MPI errorcodes. Thanks to Alexey Bayduraev for the + patch. +- Fix default hostfile location. Thanks to Götz Waschk for noticing + the issue. +- Improve several error messages. + + +1.6: 14 May 2012 +---------------- + +- Fix some process affinity issues. When binding a process, Open MPI + will now bind to all available hyperthreads in a core (or socket, + depending on the binding options specified). + --> Note that "mpirun --bind-to-socket ..." does not work on POWER6- + and POWER7-based systems with some Linux kernel versions. See + the FAQ on the Open MPI web site for more information. +- Add support for ARM5 and ARM6 (in addition to the existing ARM7 + support). Thanks to Evan Clinton for the patch. +- Minor Mellanox MXM fixes. +- Properly detect FDR10, FDR, and EDR OpenFabrics devices. +- Minor fixes to the mpirun(1) and MPI_Comm_create(3) man pages. +- Prevent segv if COMM_SPAWN_MULTIPLE fails. Thanks to Fujitsu for + the patch. +- Disable interposed memory management in fakeroot environments. This + fixes a problem in some build environments. +- Minor hwloc updates. +- Array versions of MPI_TEST and MPI_WAIT with a count==0 will now + return immediately with MPI_SUCCESS. Thanks to Jeremiah Willcock + for the suggestion. +- Update VampirTrace to v5.12.2. +- Properly handle forwarding stdin to all processes when "mpirun + --stdin all" is used. +- Workaround XLC assembly bug. +- OS X Tiger (10.4) has not been supported for a while, so forcibly + abort configure if we detect it. +- Fix segv in the openib BTL when running on SPARC 64 systems. +- Fix some include file ordering issues on some BSD-based platforms. + Thanks to Paul Hargove for this (and many, many other) fixes. +- Properly handle .FALSE. return parameter value to attribute copy + callback functions. +- Fix a bunch of minor C++ API issues; thanks to Fujitsu for the patch. +- Fixed the default hostfile MCA parameter behavior. +- Per the MPI spec, ensure not to touch the port_name parameter to + MPI_CLOSE_PORT (it's an IN parameter). + + +1.5.5: 27 Mar 2012 +------------------ + +- Many, many portability configure/build fixes courtesy of Paul + Hargrove. Thanks, Paul! +- Fixed shared memory fault tolerance support compiler errors. +- Removed not-production-quality rshd and tmd PLM launchers. +- Minor updates to the Open MPI SRPM spec file. +- Fixed mpirun's --bind-to-socket option. +- A few MPI_THREAD_MULTIPLE fixes in the shared memory BTL. +- Upgrade the GNU Autotools used to bootstrap the 1.5/1.6 series to + all the latest versions at the time of this release. +- Categorically state in the README that if you're having a problem + with Open MPI with the Linux Intel 12.1 compilers, *upgrade your + Intel Compiler Suite to the latest patch version*, and the problems + will go away. :-) +- Fix the --without-memory-manager configure option. +- Fixes for Totalview/DDT MPI-capable debuggers. +- Update rsh/ssh support to properly handle the Mac OS X library path + (i.e., DYLD_LIBRARY_PATH). +- Make warning about shared memory backing files on a networked file + system be optional (i.e., can be disabled via MCA parameter). +- Several fixes to processor and memory affinity. +- Various shared memory infrastructure improvements. +- Various checkpoint/restart fixes. +- Fix MPI_IN_PLACE (and other MPI sentinel values) on OS X. Thanks to + Dave Goodell for providing the magic OS X gcc linker flags necessary. +- Various man page corrections and typo fixes. Thanks to Fujitsu for + the patch. +- Updated wrapper compiler man pages to list the various --showme + options that are available. +- Add PMI direct-launch support (e.g., "srun mpi_application" under + SLURM). +- Correctly compute the aligned address when packing the + datatype description. Thanks to Fujitsu for the patch. +- Fix MPI obscure corner case handling in packing MPI datatypes. + Thanks to Fujitsu for providing the patch. +- Workaround an Intel compiler v12.1.0 2011.6.233 vector optimization + bug. +- Output the MPI API in ompi_info output. +- Major VT update to 5.12.1.4. +- Upgrade embedded Hardware Locality (hwloc) v1.3.2, plus some + post-1.3.2-release bug fixes. All processor and memory binding is + now done through hwloc. Woo hoo! Note that this fixes core binding + on AMD Opteron 6200 and 4200 series-based systems (sometimes known + as Interlagos, Valencia, or other Bulldozer-based chips). +- New MCA parameters to control process-wide memory binding policy: + hwloc_base_mem_alloc_policy, hwloc_base_mem_bind_failure_action (see + ompi_info --param hwloc base). +- Removed direct support for libnuma. Libnuma support may now be + picked up through hwloc. +- Added MPI_IN_PLACE support to MPI_EXSCAN. +- Various fixes for building on Windows, including MinGW support. +- Removed support for the OpenFabrics IBCM connection manager. +- Updated Chelsio T4 and Intel NE OpenFabrics default buffer settings. +- Increased the default RDMA CM timeout to 30 seconds. +- Issue a warning if both btl_tcp_if_include and btl_tcp_if_exclude + are specified. +- Many fixes to the Mellanox MXM transport. + + +1.5.4: 18 Aug 2011 +------------------ + +- Add support for the (as yet unreleased) Mellanox MXM transport. +- Add support for dynamic service levels (SLs) in the openib BTL. +- Fixed C++ bindings cosmetic/warnings issue with + MPI::Comm::NULL_COPY_FN and MPI::Comm::NULL_DELETE_FN. Thanks to + Júlio Hoffimann for identifying the issues. +- Also allow the word "slots" in rankfiles (i.e., not just "slot"). + (** also to appear in 1.4.4) +- Add Mellanox ConnectX 3 device IDs to the openib BTL defaults. + (** also to appear in 1.4.4) +- Various FCA updates. +- Fix 32 bit SIGBUS errors on Solaris SPARC platforms. +- Add missing ARM assembly code files. +- Update to allow more than 128 entries in an appfile. + (** also to appear in 1.4.4) +- Various VT updates and bug fixes. +- Update description of btl_openib_cq_size to be more accurate. + (** also to appear in 1.4.4) +- Various assembly "clobber" fixes. +- Fix a hang in carto selection in obscure situations. +- Guard the inclusion of execinfo.h since not all platforms have it. Thanks + to Aleksej Saushev for identifying this issue. + (** also to appear in 1.4.4) +- Support Solaris legacy munmap prototype changes. + (** also to appear in 1.4.4) +- Updated to Automake 1.11.1 per + http://www.open-mpi.org/community/lists/devel/2011/07/9492.php. +- Fix compilation of LSF support. +- Update MPI_Comm_spawn_multiple.3 man page to reflect what it + actually does. +- Fix for possible corruption of the environment. Thanks to Peter + Thompson for the suggestion. (** also to appear in 1.4.4) +- Enable use of PSM on direct-launch SLURM jobs. +- Update paffinity hwloc to v1.2, and to fix minor bugs affinity + assignment bugs on PPC64/Linux platforms. +- Let the openib BTL auto-detect its bandwidth. +- Support new MPI-2.2 datatypes. +- Updates to support more datatypes in MPI one-sided communication. +- Fix recursive locking bug when MPI-IO was used with + MPI_THREAD_MULTIPLE. (** also to appear in 1.4.4) +- Fix mpirun handling of prefix conflicts. +- Ensure mpirun's --xterm options leaves sessions attached. + (** also to appear in 1.4.4) +- Fixed type of sendcounts and displs in the "use mpi" F90 module. + ABI is preserved, but applications may well be broken. See the + README for more details. Thanks to Stanislav Sazykin for + identifying the issue. (** also to appear in 1.4.4) +- Fix indexed datatype leaks. Thanks to Pascal Deveze for supplying + the initial patch. (** also to appear in 1.4.4) +- Fix debugger mapping when mpirun's -npernode option is used. +- Fixed support for configure's --disable-dlopen option when used with + "make distclean". +- Fix segv associated with MPI_Comm_create with MPI_GROUP_EMPTY. + Thanks to Dominik Goeddeke for finding this. + (** also to appear in 1.4.4) +- Improved LoadLeveler ORTE support. +- Add new WinVerbs BTL plugin, supporting native OpenFabrics verbs on + Windows (the "wv" BTL). +- Add new btl_openib_gid_index MCA parameter to allow selecting which + GID to use on an OpenFabrics device's GID table. +- Add support for PCI relaxed ordering in the OpenFabrics BTL (when + available). +- Update rsh logic to allow correct SGE operation. +- Ensure that the mca_paffinity_alone MCA parameter only appears once + in the ompi_info output. Thanks to Gus Correa for identifying the + issue. +- Fixed return codes from MPI_PROBE and MPI_IPROBE. + (** also to appear in 1.4.4) +- Remove --enable-progress-thread configure option; it doesn't work on + the v1.5 branch. Rename --enable-mpi-threads to + --enable-mpi-thread-multiple. Add new --enable-opal-multi-threads + option. +- Updates for Intel Fortran compiler version 12. +- Remove bproc support. Farewell bproc! +- If something goes wrong during MPI_INIT, fix the error + message to say that it's illegal to invoke MPI_INIT before + MPI_INIT. + + +1.5.3: 16 Mar 2011 +------------------ + +- Add missing "affinity" MPI extension (i.e., the OMPI_Affinity_str() + API) that was accidentally left out of the 1.5.2 release. + + +1.5.2: 9 Mar 2011 +----------------- + +- Replaced all custom topology / affinity code with initial support + for hwloc v1.1.1 (PLPA has been removed -- long live hwloc!). Note + that hwloc is bundled with Open MPI, but an external hwloc can be + used, if desired. See README for more details. +- Many CMake updates for Windows builds. +- Updated opal_cr_thread_sleep_wait MCA param default value to make it + less aggressive. +- Updated debugger support to allow Totalview attaching from jobs + launched directly via srun (not mpirun). Thanks to Nikolay Piskun + for the patch. +- Added more FTB/CIFTS support. +- Fixed compile error with the PGI compiler. +- Portability fixes to allow the openib BTL to run on the Solaris + verbs stack. +- Fixed multi-token command-line issues when using the mpirun + --debug switch. For example: + mpirun --debug -np 2 a.out "foo bar" + Thanks to Gabriele Fatigati for reporting the issue. +- Added ARM support. +- Added the MPI_ROOT environment variable in the Open MPI Linux SRPM + for customers who use the BPS and LSF batch managers. +- Updated ROMIO from MPICH v1.3.1 (plus one additional patch). +- Fixed some deprecated MPI API function notification messages. +- Added new "bfo" PML that provides failover on OpenFabrics networks. +- Fixed some buffer memcheck issues in MPI_*_init. +- Added Solaris-specific chip detection and performance improvements. +- Fix some compile errors on Solaris. +- Updated the "rmcast" framework with bug fixes, new functionality. +- Updated the Voltaire FCA component with bug fixes, new + functionality. Support for FCA version 2.1. +- Fix gcc 4.4.x and 4.5.x over-aggressive warning notifications on + possibly freeing stack variables. Thanks to the Gentoo packagers + for reporting the issue. +- Make the openib component be verbose when it disqualifies itself due + to MPI_THREAD_MULTIPLE. +- Minor man page fixes. +- Various checkpoint / restart fixes. +- Fix race condition in the one-sided unlock code. Thanks to + Guillaume Thouvenin for finding the issue. +- Improve help message aggregation. +- Add OMPI_Affinity_str() optional user-level API function (i.e., the + "affinity" MPI extension). See README for more details. +- Added btl_tcp_if_seq MCA parameter to select a different ethernet + interface for each MPI process on a node. This parameter is only + useful when used with virtual ethernet interfaces on a single + network card (e.g., when using virtual interfaces give dedicated + hardware resources on the NIC to each process). +- Changed behavior of mpirun to terminate if it receives 10 (or more) + SIGPIPEs. +- Fixed oversubscription detection. +- Added new mtl_mx_board and mtl_mx_endpoint MCA parameters. +- Added ummunotify support for OpenFabrics-based transports. See the + README for more details. + + +1.5.1: 15 Dec 2010 +------------------ + +- Fixes for the Oracle Studio 12.2 Fortran compiler. +- Fix SPARC and SPARCv9 atomics. Thanks to Nicola Stange for the + initial patch. +- Fix Libtool issues with the IBM XL compiler in 64-bit mode. +- Restore the reset of the libevent progress counter to avoid + over-sampling the event library. +- Update memory barrier support. +- Use memmove (instead of memcpy) when necessary (e.g., source and + destination overlap). +- Fixed ompi-top crash. +- Fix to handle Autoconf --program-transforms properly and other + m4/configury updates. Thanks to the GASNet project for the + --program transforms fix. +- Allow hostfiles to specify usernames on a per-host basis. +- Update wrapper compiler scripts to search for perl during configure, + per request from the BSD maintainers. +- Minor man page fixes. +- Added --with-libltdl option to allow building Open MPI with an + external installation of libltdl. +- Fixed various issues with -D_FORTIFY_SOURCE=2. +- Various VT fixes and updates. + + +1.5: 10 Oct 2010 +---------------- + +- Added "knem" support: direct process-to-process copying for shared + memory message passing. See http://runtime.bordeaux.inria.fr/knem/ + and the README file for more details. +- Updated shared library versioning scheme and linking style of MPI + applications. The MPI application ABI has been broken from the + v1.3/v1.4 series. MPI applications compiled against any prior + version of Open MPI will need to, at a minimum, re-link. See the + README file for more details. +- Added "fca" collective component, enabling MPI collective offload + support for Voltaire switches. +- Fixed MPI one-sided operations with large target displacements. + Thanks to Brian Price and Jed Brown for reporting the issue. +- Fixed MPI_GET_COUNT when used with large counts. Thanks to Jed + Brown for reporting the issue. +- Made the openib BTL safer if extremely low SRQ settings are used. +- Fixed handling of the array_of_argv parameter in the Fortran + binding of MPI_COMM_SPAWN_MULTIPLE (** also to appear: 1.4.3). +- Fixed malloc(0) warnings in some collectives. +- Fixed a problem with the Fortran binding for + MPI_FILE_CREATE_ERRHANDLER. Thanks to Secretan Yves for identifying + the issue (** also to appear: 1.4.3). +- Updates to the LSF PLM to ensure that the path is correctly passed. + Thanks to Teng Lin for the patch (** also to appear: 1.4.3). +- Fixes for the F90 MPI_COMM_SET_ERRHANDLER and MPI_WIN_SET_ERRHANDLER + bindings. Thanks to Paul Kapinos for pointing out the issue + (** also to appear: 1.4.3). +- Fixed extra_state parameter types in F90 prototypes for + MPI_COMM_CREATE_KEYVAL, MPI_GREQUEST_START, MPI_REGISTER_DATAREP, + MPI_TYPE_CREATE_KEYVAL, and MPI_WIN_CREATE_KEYVAL. +- Fixes for Solaris oversubscription detection. +- If the PML determines it can't reach a peer process, print a + slightly more helpful message. Thanks to Nick Edmonds for the + suggestion. +- Make btl_openib_if_include/exclude function the same way + btl_tcp_if_include/exclude works (i.e., supplying an _include list + overrides supplying an _exclude list). +- Apply more scalable reachability algorithm on platforms with more + than 8 TCP interfaces. +- Various assembly code updates for more modern platforms / compilers. +- Relax restrictions on using certain kinds of MPI datatypes with + one-sided operations. Users beware; not all MPI datatypes are valid + for use with one-sided operations! +- Improve behavior of MPI_COMM_SPAWN with regards to --bynode. +- Various threading fixes in the openib BTL and other core pieces of + Open MPI. +- Various help file and man pages updates. +- Various FreeBSD and NetBSD updates and fixes. Thanks to Kevin + Buckley and Aleksej Saushev for their work. +- Fix case where freeing communicators in MPI_FINALIZE could cause + process failures. +- Print warnings if shared memory state files are opened on what look + like networked filesystems. +- Update libevent to v1.4.13. +- Allow propagating signals to processes that call fork(). +- Fix bug where MPI_GATHER was sometimes incorrectly examining the + datatype on non-root processes. Thanks to Michael Hofmann for + investigating the issue. +- Various Microsoft Windows fixes. +- Various Catamount fixes. +- Various checkpoint / restart fixes. +- Xgrid support has been removed until it can be fixed (patches + would be welcome). +- Added simplistic "libompitrace" contrib package. Using the MPI + profiling interface, it essentially prints out to stderr when select + MPI functions are invoked. +- Update bundled VampirTrace to v5.8.2. +- Add pkg-config(1) configuration files for ompi, ompi-c, ompi-cxx, + ompi-f77, ompi-f90. See the README for more details. +- Removed the libopenmpi_malloc library (added in the v1.3 series) + since it is no longer necessary +- Add several notifier plugins (generally used when Open MPI detects + system/network administrator-worthy problems); each have their own + MCA parameters to govern their usage. See "ompi_info --param + notifier " for more details. + - command to execute arbitrary commands (e.g., run a script). + - file to send output to a file. + - ftb to send output to the Fault Tolerant Backplane (see + http://wiki.mcs.anl.gov/cifts/index.php/CIFTS) + - hnp to send the output to mpirun. + - smtp (requires libesmtp) to send an email. + +1.4.5: 12 Feb 2012 +------------------ + +- Fixed the --disable-memory-manager configure switch. + (** also to appear in 1.5.5) +- Fix typos in code and man pages. Thanks to Fujitsu for these fixes. + (** also to appear in 1.5.5) +- Improve management of the registration cache; when full, try freeing + old entries and attempt to re-register. +- Fixed a data packing pointer alignment issue. Thanks to Fujitsu + for the patch. + (** also to appear in 1.5.5) +- Add ability to turn off warning about having the shared memory backing + store over a networked filesystem. Thanks to Chris Samuel for this + suggestion. + (** also to appear in 1.5.5) +- Removed an unnecessary memmove() and plugged a couple of small memory leaks + in the openib OOB connection setup code. +- Fixed some QLogic bugs. Thanks to Mark Debbage from QLogic for the patches. +- Fixed problem with MPI_IN_PLACE and other sentinel Fortran constants + on OS X. + (** also to appear in 1.5.5) +- Fix SLURM cpus-per-task allocation. + (** also to appear in 1.5.5) +- Fix the datatype engine for when data left over from the previous + pack was larger than the allowed space in the pack buffer. Thanks to + Yuki Matsumoto and Takahiro Kawashima for the bug report and the + patch. +- Fix Fortran value for MPI_MAX_PORT_NAME. Thanks to Enzo Dari for + raising the issue. +- Workaround an Intel compiler v12.1.0 2011.6.233 vector optimization + bug. +- Fix issues on Solaris with the openib BTL. +- Fixes for the Oracle Studio 12.2 Fortran compiler. +- Update iWARP parameters for the Intel NICs. + (** also to appear in 1.5.5) +- Fix obscure cases where MPI_ALLGATHER could crash. Thanks to Andrew + Senin for reporting the problem. + (** also to appear in 1.5.5) + + +1.4.4: 11 Oct 2011 +------------------ + +- Modified a memcpy() call in the openib btl connection setup to use + memmove() instead because of the possibility of an overlapping + copy (as identified by valgrind). +- Changed use of sys_timer_get_cycles() to the more appropriate + wrapper: opal_timer_base_get_cycles(). Thanks to Jani Monoses + for this fix. +- Corrected the reported default value of btl_openib_ib_timeout + in the "IB retries exceeded" error message. Thanks to Kevin Buckley + for this correction. +- Increased rdmacm address resolution timeout from 1s to 30s & + updated Chelsio T4 openib BTL defaults. Thanks to Steve Wise + for these updates. + (** also to appear in 1.5.5) +- Ensure that MPI_Accumulate error return in 1.4 is consistent with + 1.5.x and trunk. +- Allow the word "slots" in rankfiles (i.e., not just "slot"). + (** also appeared in 1.5.4) +- Add Mellanox ConnectX 3 device IDs to the openib BTL defaults. + (** also appeared in 1.5.4) +- Update description of btl_openib_cq_size to be more accurate. +- Ensure mpirun's --xterm options leaves sessions attached. + (** also appeared in 1.5.4) +- Update to allow more than 128 entries in an appfile. + (** also appeared in 1.5.4) +- Update description of btl_openib_cq_size to be more accurate. + (** also appeared in 1.5.4) +- Fix for deadlock when handling recursive attribute keyval deletions + (e.g., when using ROMIO with MPI_THREAD_MULTIPLE). +- Fix indexed datatype leaks. Thanks to Pascal Deveze for supplying + the initial patch. (** also appeared in 1.5.4) +- Fixed the F90 types of the sendcounts and displs parameters to + MPI_SCATTERV. Thanks to Stanislav Sazykin for identifying the issue. + (** also appeared in 1.5.4) +- Exclude opal/libltdl from "make distclean" when --disable-dlopen is + used. Thanks to David Gunter for reporting the issue. +- Fixed a segv in MPI_Comm_create when called with GROUP_EMPTY. + Thanks to Dominik Goeddeke for finding this. + (** also appeared in 1.5.4) +- Fixed return codes from MPI_PROBE and MPI_IPROBE. + (** also appeared in 1.5.4) +- Fixed undefined symbol error when using the vtf90 profiling tool. +- Fix for referencing an uninitialized variable in DPM ORTE. Thanks + to Avinash Malik for reporting the issue. +- Fix for correctly handling multi-token args when using debuggers. +- Eliminated the unneeded u_int*_t datatype definitions. +- Change in ORTE DPM to get around gcc 4.[45].x compiler wanrings + about possibly calling free() on a non-heap variable, even though it + will never happen because the refcount will never go to zero. +- Fixed incorrect text in MPI_File_set_view man page. +- Fix in MPI_Init_thread for checkpoint/restart. +- Fix for libtool issue when using pgcc to compile ompi in conjunction + with the -tp option. +- Fixed a race condition in osc_rdma_sync. Thanks to Guillaume + Thouvenin for finding this issue. +- Clarification of MPI_Init_thread man page. +- Fixed an indexing problem in precondition_transports. +- Fixed a problem in which duplicated libs were being specified for + linking. Thanks to Hicham Mouline for noticing it. +- Various autogen.sh fixes. +- Fix for memchecking buffers during MPI_*INIT. +- Man page cleanups. Thanks to Jeremiah Willcock and Jed Brown. +- Fix for VT rpmbuild on RHEL5. +- Support Solaris legacy munmap prototype changes. + (** also appeared in 1.5.4) +- Expands app_idx to int32_t to allow more than 127 app_contexts. +- Guard the inclusion of execinfo.h since not all platforms have it. Thanks + to Aleksej Saushev for identifying this issue. + (** also appeared in 1.5.4) +- Fix to avoid possible environment corruption. Thanks to Peter Thompson + for identifying the issue and supplying a patch. + (** also appeared in 1.5.4) +- Fixed paffinity base MCA duplicate registrations. Thanks to Gus + Correa for bringing this to our attention. +- Fix recursive locking bug when MPI-IO was used with + MPI_THREAD_MULTIPLE. (** also appeared in 1.5.4) +- F90 MPI API fixes. +- Fixed a misleading MPI_Bcast error message. Thanks to Jeremiah + Willcock for reporting this. +- Added to ptmalloc's hooks.c (it's not always included + by default on some systems). +- Libtool patch to get around a build problem when using the IBM XL + compilers. +- Fix to detect and avoid overlapping memcpy(). Thanks to + Francis Pellegrini for identifying the issue. +- Fix to allow ompi to work on top of RoCE vLANs. +- Restored a missing debugger flag to support TotalView. Thanks to + David Turner and the TV folks for supplying the fix. +- Updated SLURM support to 1.5.1. +- Removed an extraneous #include from the TCP BTL. +- When specifying OOB ports, fix to convert the ports into network + byte order before binding. +- Fixed use of memory barriers in the SM BTL. This fixed segv's when + compiling with Intel 10.0.025 or PGI 9.0-3. +- Fix to prevent the SM BTL from creating its mmap'd file in + directories that are remotely mounted. + + +1.4.3: 6 Sep 2010 +----------------- + +- Fixed handling of the array_of_argv parameter in the Fortran + binding of MPI_COMM_SPAWN_MULTIPLE (** also to appear: 1.5). +- Fixed a problem with the Fortran binding for + MPI_FILE_CREATE_ERRHANDLER. Thanks to Secretan Yves for identifying + the issue (** also to appear: 1.5). +- Updates to the LSF PLM to ensure that the path is correctly passed. + Thanks to Teng Lin for the patch (** also to appear: 1.5). +- Fixes for the F90 MPI_COMM_SET_ERRHANDLER and MPI_WIN_SET_ERRHANDLER + bindings. Thanks to Paul Kapinos for pointing out the issue. + (** also to appear: 1.5). +- Fixed various MPI_THREAD_MULTIPLE race conditions. +- Fixed an issue with an undeclared variable from ptmalloc2 munmap on + BSD systems. +- Fixes for BSD interface detection. +- Various other BSD fixes. Thanks to Kevin Buckley helping to track. + all of this down. +- Fixed issues with the use of the -nper* mpirun command line arguments. +- Fixed an issue with coll tuned dynamic rules. +- Fixed an issue with the use of OPAL_DESTDIR being applied too aggressively. +- Fixed an issue with one-sided xfers when the displacement exceeds 2GBytes. +- Change to ensure TotalView works properly on Darwin. +- Added support for Visual Studio 2010. +- Fix to ensure proper placement of VampirTrace header files. +- Needed to add volatile keyword to a varialbe used in debugging + (MPIR_being_debugged). +- Fixed a bug in inter-allgather. +- Fixed malloc(0) warnings. +- Corrected a typo the MPI_Comm_size man page (intra -> inter). Thanks + to Simon number.cruncher for pointing this out. +- Fixed a SegV in orted when given more than 127 app_contexts. +- Removed xgrid source code from the 1.4 branch since it is no longer + supported in the 1.4 series. +- Removed the --enable-opal-progress-threads config option since + opal progress thread support does not work in 1.4.x. +- Fixed a defect in VampirTrace's vtfilter. +- Fixed wrong Windows path in hnp_contact. +- Removed the requirement for a paffinity component. +- Removed a hardcoded limit of 64 interconnected jobs. +- Fix to allow singletons to use ompi-server for rendezvous. +- Fixed bug in output-filename option. +- Fix to correctly handle failures in mx_init(). +- Fixed a potential Fortran memory leak. +- Fixed an incorrect branch in some ppc32 assembly code. Thanks + to Matthew Clark for this fix. +- Remove use of undocumented AS_VAR_GET macro during configuration. +- Fixed an issue with VampirTrace's wrapper for MPI_init_thread. +- Updated mca-btl-openib-device-params.ini file with various new vendor id's. +- Configuration fixes to ensure CPPFLAGS in handled properly if a non-standard + valgrind location was specified. +- Various man page updates + + +1.4.2: 4 May 2010 +----------------- + +- Fixed problem when running in heterogeneous environments. Thanks to + Timur Magomedov for helping to track down this issue. +- Update LSF support to ensure that the path is passed correctly. + Thanks to Teng Lin for submitting a patch. +- Fixed some miscellaneous oversubscription detection bugs. +- IBM re-licensed its LoadLeveler code to be BSD-compliant. +- Various OpenBSD and NetBSD build and run-time fixes. Many thanks to + the OpenBSD community for their time, expertise, and patience + getting these fixes incorporated into Open MPI's main line. +- Various fixes for multithreading deadlocks, race conditions, and + other nefarious things. +- Fixed ROMIO's handling of "nearly" contiguous issues (e.g., with + non-zero true_lb). Thanks for Pascal Deveze for the patch. +- Bunches of Windows build fixes. Many thanks to several Windows + users for their help in improving our support on Windows. +- Now allow the graceful failover from MTLs to BTLs if no MTLs can + initialize successfully. +- Added "clobber" information to various atomic operations, fixing + erroneous behavior in some newer versions of the GNU compiler suite. +- Update various iWARP and InfiniBand device specifications in the + OpenFabrics .ini support file. +- Fix the use of hostfiles when a username is supplied. +- Various fixes for rankfile support. +- Updated the internal version of VampirTrace to 5.4.12. +- Fixed OS X TCP wireup issues having to do with IPv4/IPv6 confusion + (see https://svn.open-mpi.org/trac/ompi/changeset/22788 for more + details). +- Fixed some problems in processor affinity support, including when + there are "holes" in the processor namespace (e.g., offline + processors). +- Ensure that Open MPI's "session directory" (usually located in /tmp) + is cleaned up after process termination. +- Fixed some problems with the collective "hierarch" implementation + that could occur in some obscure conditions. +- Various MPI_REQUEST_NULL, API parameter checking, and attribute + error handling fixes. Thanks to Lisandro Dalcín for reporting the + issues. +- Fix case where MPI_GATHER erroneously used datatypes on non-root + nodes. Thanks to Michael Hofmann for investigating the issue. +- Patched ROMIO support for PVFS2 > v2.7 (patch taken from MPICH2 + version of ROMIO). +- Fixed "mpirun --report-bindings" behavior when used with + mpi_paffinity_alone=1. Also fixed mpi_paffinity_alone=1 behavior + with non-MPI applications. Thanks to Brice Goglin for noticing the + problem. +- Ensure that all OpenFabrics devices have compatible receive_queues + specifications before allowing them to communicate. See the lengthy + comment in https://svn.open-mpi.org/trac/ompi/changeset/22592 for + more details. +- Fix some issues with checkpoint/restart. +- Improve the pre-MPI_INIT/post-MPI_FINALIZE error messages. +- Ensure that loopback addresses are never advertised to peer + processes for RDMA/OpenFabrics support. +- Fixed a CSUM PML false positive. +- Various fixes for Catamount support. +- Minor update to wrapper compilers in how user-specific argv is + ordered on the final command line. Thanks to Jed Brown for the + suggestions. +- Removed flex.exe binary from Open MPI tarballs; now generate flex + code from a newer (Windows-friendly) flex when we make official + tarballs. + + +1.4.1: 15 Jan 2010 +------------------ + +- Update to PLPA v1.3.2, addressing a licensing issue identified by + the Fedora project. See + https://svn.open-mpi.org/trac/plpa/changeset/262 for details. +- Add check for malformed checkpoint metadata files (Ticket #2141). +- Fix error path in ompi-checkpoint when not able to checkpoint + (Ticket #2138). +- Cleanup component release logic when selecting checkpoint/restart + enabled components (Ticket #2135). +- Fixed VT node name detection for Cray XT platforms, and fixed some + broken VT documentation files. +- Fix a possible race condition in tearing down RDMA CM-based + connections. +- Relax error checking on MPI_GRAPH_CREATE. Thanks to David Singleton + for pointing out the issue. +- Fix a shared memory "hang" problem that occurred on x86/x86_64 + platforms when used with the GNU >=4.4.x compiler series. +- Add fix for Libtool 2.2.6b's problems with the PGI 10.x compiler + suite. Inspired directly from the upstream Libtool patches that fix + the issue (but we need something working before the next Libtool + release). + + +1.4: 8 Dec 2009 +--------------- + +The *only* change in the Open MPI v1.4 release (as compared to v1.3.4) +was to update the embedded version of Libtool's libltdl to address a +potential security vulnerability. Specifically: Open MPI v1.3.4 was +created with GNU Libtool 2.2.6a; Open MPI v1.4 was created with GNU +Libtool 2.2.6b. There are no other changes between Open MPI v1.3.4 +and v1.4. + + +1.3.4: 13 Feb 2010 +------------------ + +- Fix some issues in OMPI's SRPM with regard to shell_scripts_basename + and its use with mpi-selector. Thanks to Bill Johnstone for + pointing out the problem. +- Added many new MPI job process affinity options to mpirun. See the + newly-updated mpirun(1) man page for details. +- Several updates to mpirun's XML output. +- Update to fix a few Valgrind warnings with regards to the ptmalloc2 + allocator and Open MPI's use of PLPA. +- Many updates and fixes to the (non-default) "sm" collective + component (i.e., native shared memory MPI collective operations). +- Updates and fixes to some MPI_COMM_SPAWN_MULTIPLE corner cases. +- Fix some internal copying functions in Open MPI's use of PLPA. +- Correct some SLURM nodelist parsing logic that may have interfered + with large jobs. Additionally, per advice from the SLURM team, + change the environment variable that we use for obtaining the job's + allocation. +- Revert to an older, safer (but slower) communicator ID allocation + algorithm. +- Fixed minimum distance finding for OpenFabrics devices in the openib + BTL. +- Relax the parameter checking MPI_CART_CREATE a bit. +- Fix MPI_COMM_SPAWN[_MULTIPLE] to only error-check the info arguments + on the root process. Thanks to Federico Golfre Andreasi for + reporting the problem. +- Fixed some BLCR configure issues. +- Fixed a potential deadlock when the openib BTL was used with + MPI_THREAD_MULTIPLE. +- Fixed dynamic rules selection for the "tuned" coll component. +- Added a launch progress meter to mpirun (useful for large jobs; set + the orte_report_launch_progress MCA parameter to 1 to see it). +- Reduced the number of file descriptors consumed by each MPI process. +- Add new device IDs for Chelsio T3 RNICs to the openib BTL config file. +- Fix some CRS self component issues. +- Added some MCA parameters to the PSM MTL to tune its run-time + behavior. +- Fix some VT issues with MPI_BOTTOM/MPI_IN_PLACE. +- Man page updates from the Debain Open MPI package maintainers. +- Add cycle counter support for the Alpha and Sparc platforms. +- Pass visibility flags to libltdl's configure script, resulting in + those symbols being hidden. This appears to mainly solve the + problem of applications attempting to use different versions of + libltdl from that used to build Open MPI. + + +1.3.3: 14 Jul 2009 +------------------ + +- Fix a number of issues with the openib BTL (OpenFabrics) RDMA CM, + including a memory corruption bug, a shutdown deadlock, and a route + timeout. Thanks to David McMillen and Hal Rosenstock for help in + tracking down the issues. +- Change the behavior of the EXTRA_STATE parameter that is passed to + Fortran attribute callback functions: this value is now stored + internally in MPI -- it no longer references the original value + passed by MPI_*_CREATE_KEYVAL. +- Allow the overriding RFC1918 and RFC3330 for the specification of + "private" networks, thereby influencing Open MPI's TCP + "reachability" computations. +- Improve flow control issues in the sm btl, by both tweaking the + shared memory progression rules and by enabling the "sync" collective + to barrier every 1,000th collective. +- Various fixes for the IBM XL C/C++ v10.1 compiler. +- Allow explicit disabling of ptmalloc2 hooks at runtime (e.g., enable + support for Debian's builtroot system). Thanks to Manuel Prinz and + the rest of the Debian crew for helping identify and fix this issue. +- Various minor fixes for the I/O forwarding subsystem. +- Big endian iWARP fixes in the Open Fabrics RDMA CM support. +- Update support for various OpenFabrics devices in the openib BTL's + .ini file. +- Fixed undefined symbol issue with Open MPI's parallel debugger + message queue support so it can be compiled by Sun Studio compilers. +- Update MPI_SUBVERSION to 1 in the Fortran bindings. +- Fix MPI_GRAPH_CREATE Fortran 90 binding. +- Fix MPI_GROUP_COMPARE behavior with regards to MPI_IDENT. Thanks to + Geoffrey Irving for identifying the problem and supplying the fix. +- Silence gcc 4.1 compiler warnings about type punning. Thanks to + Number Cruncher for the fix. +- Added more Valgrind and other memory-cleanup fixes. Thanks to + various Open MPI users for help with these issues. +- Miscellaneous VampirTrace fixes. +- More fixes for openib credits in heavy-congestion scenarios. +- Slightly decrease the latency in the openib BTL in some conditions + (add "send immediate" support to the openib BTL). +- Ensure to allow MPI_REQUEST_GET_STATUS to accept an + MPI_STATUS_IGNORE parameter. Thanks to Shaun Jackman for the bug + report. +- Added Microsoft Windows support. See README.WINDOWS file for + details. + + +1.3.2: 22 Apr 2009 +------------------ + +- Fixed a potential infinite loop in the openib BTL that could occur + in senders in some frequent-communication scenarios. Thanks to Don + Wood for reporting the problem. +- Add a new checksum PML variation on ob1 (main MPI point-to-point + communication engine) to detect memory corruption in node-to-node + messages +- Add a new configuration option to add padding to the openib + header so the data is aligned +- Add a new configuration option to use an alternative checksum algo + when using the checksum PML +- Fixed a problem reported by multiple users on the mailing list that + the LSF support would fail to find the appropriate libraries at + run-time. +- Allow empty shell designations from getpwuid(). Thanks to Sergey + Koposov for the bug report. +- Ensure that mpirun exits with non-zero status when applications die + due to user signal. Thanks to Geoffroy Pignot for suggesting the + fix. +- Ensure that MPI_VERSION / MPI_SUBVERSION match what is returned by + MPI_GET_VERSION. Thanks to Rob Egan for reporting the error. +- Updated MPI_*KEYVAL_CREATE functions to properly handle Fortran + extra state. +- A variety of ob1 (main MPI point-to-point communication engine) bug + fixes that could have caused hangs or seg faults. +- Do not install Open MPI's signal handlers in MPI_INIT if there are + already signal handlers installed. Thanks to Kees Verstoep for + bringing the issue to our attention. +- Fix GM support to not seg fault in MPI_INIT. +- Various VampirTrace fixes. +- Various PLPA fixes. +- No longer create BTLs for invalid (TCP) devices. +- Various man page style and lint cleanups. +- Fix critical OpenFabrics-related bug noted here: + http://www.open-mpi.org/community/lists/announce/2009/03/0029.php. + Open MPI now uses a much more robust memory intercept scheme that is + quite similar to what is used by MX. The use of "-lopenmpi-malloc" + is no longer necessary, is deprecated, and is expected to disappear + in a future release. -lopenmpi-malloc will continue to work for the + duration of the Open MPI v1.3 and v1.4 series. +- Fix some OpenFabrics shutdown errors, both regarding iWARP and SRQ. +- Allow the udapl BTL to work on Solaris platforms that support + relaxed PCI ordering. +- Fix problem where the mpirun would sometimes use rsh/ssh to launch on + the localhost (instead of simply forking). +- Minor SLURM stdin fixes. +- Fix to run properly under SGE jobs. +- Scalability and latency improvements for shared memory jobs: convert + to using one message queue instead of N queues. +- Automatically size the shared-memory area (mmap file) to match + better what is needed; specifically, so that large-np jobs will start. +- Use fixed-length MPI predefined handles in order to provide ABI + compatibility between Open MPI releases. +- Fix building of the posix paffinity component to properly get the + number of processors in loosely tested environments (e.g., + FreeBSD). Thanks to Steve Kargl for reporting the issue. +- Fix --with-libnuma handling in configure. Thanks to Gus Correa for + reporting the problem. + + +1.3.1: 19 Mar 2009 +------------------ + +- Added "sync" coll component to allow users to synchronize every N + collective operations on a given communicator. +- Increased the default values of the IB and RNR timeout MCA parameters. +- Fix a compiler error noted by Mostyn Lewis with the PGI 8.0 compiler. +- Fix an error that prevented stdin from being forwarded if the + rsh launcher was in use. Thanks to Branden Moore for pointing out + the problem. +- Correct a case where the added datatype is considered as contiguous but + has gaps in the beginning. +- Fix an error that limited the number of comm_spawns that could + simultaneously be running in some environments +- Correct a corner case in OB1's GET protocol for long messages; the + error could sometimes cause MPI jobs using the openib BTL to hang. +- Fix a bunch of bugs in the IO forwarding (IOF) subsystem and add some + new options to output to files and redirect output to xterm. Thanks to + Jody Weissmann for helping test out many of the new fixes and + features. +- Fix SLURM race condition. +- Fix MPI_File_c2f(MPI_FILE_NULL) to return 0, not -1. Thanks to + Lisandro Dalcin for the bug report. +- Fix the DSO build of tm PLM. +- Various fixes for size disparity between C int's and Fortran + INTEGER's. Thanks to Christoph van Wullen for the bug report. +- Ensure that mpirun exits with a non-zero exit status when daemons or + processes abort or fail to launch. +- Various fixes to work around Intel (NetEffect) RNIC behavior. +- Various fixes for mpirun's --preload-files and --preload-binary + options. +- Fix the string name in MPI::ERRORS_THROW_EXCEPTIONS. +- Add ability to forward SIFTSTP and SIGCONT to MPI processes if you + set the MCA parameter orte_forward_job_control to 1. +- Allow the sm BTL to allocate larger amounts of shared memory if + desired (helpful for very large multi-core boxen). +- Fix a few places where we used PATH_MAX instead of OPAL_PATH_MAX, + leading to compile problems on some platforms. Thanks to Andrea Iob + for the bug report. +- Fix mca_btl_openib_warn_no_device_params_found MCA parameter; it + was accidentally being ignored. +- Fix some run-time issues with the sctp BTL. +- Ensure that RTLD_NEXT exists before trying to use it (e.g., it + doesn't exist on Cygwin). Thanks to Gustavo Seabra for reporting + the issue. +- Various fixes to VampirTrace, including fixing compile errors on + some platforms. +- Fixed missing MPI_Comm_accept.3 man page; fixed minor issue in + orterun.1 man page. Thanks to Dirk Eddelbuettel for identifying the + problem and submitting a patch. +- Implement the XML formatted output of stdout/stderr/stddiag. +- Fixed mpirun's -wdir switch to ensure that working directories for + multiple app contexts are properly handled. Thanks to Geoffroy + Pignot for reporting the problem. +- Improvements to the MPI C++ integer constants: + - Allow MPI::SEEK_* constants to be used as constants + - Allow other MPI C++ constants to be used as array sizes +- Fix minor problem with orte-restart's command line options. See + ticket #1761 for details. Thanks to Gregor Dschung for reporting + the problem. + + +1.3: 19 Jan 2009 +---------------- + +- Extended the OS X 10.5.x (Leopard) workaround for a problem when + assembly code is compiled with -g[0-9]. Thanks to Barry Smith for + reporting the problem. See ticket #1701. +- Disabled MPI_REAL16 and MPI_COMPLEX32 support on platforms where the + bit representation of REAL*16 is different than that of the C type + of the same size (usually long double). Thanks to Julien Devriendt + for reporting the issue. See ticket #1603. +- Increased the size of MPI_MAX_PORT_NAME to 1024 from 36. See ticket #1533. +- Added "notify debugger on abort" feature. See tickets #1509 and #1510. + Thanks to Seppo Sahrakropi for the bug report. +- Upgraded Open MPI tarballs to use Autoconf 2.63, Automake 1.10.1, + Libtool 2.2.6a. +- Added missing MPI::Comm::Call_errhandler() function. Thanks to Dave + Goodell for bringing this to our attention. +- Increased MPI_SUBVERSION value in mpi.h to 1 (i.e., MPI 2.1). +- Changed behavior of MPI_GRAPH_CREATE, MPI_TOPO_CREATE, and several + other topology functions per MPI-2.1. +- Fix the type of the C++ constant MPI::IN_PLACE. +- Various enhancements to the openib BTL: + - Added btl_openib_if_[in|ex]clude MCA parameters for + including/excluding comma-delimited lists of HCAs and ports. + - Added RDMA CM support, includng btl_openib_cpc_[in|ex]clude MCA + parameters + - Added NUMA support to only use "near" network adapters + - Added "Bucket SRQ" (BSRQ) support to better utilize registered + memory, including btl_openib_receive_queues MCA parameter + - Added ConnectX XRC support (and integrated with BSRQ) + - Added btl_openib_ib_max_inline_data MCA parameter + - Added iWARP support + - Revamped flow control mechansisms to be more efficient + - "mpi_leave_pinned=1" is now the default when possible, + automatically improving performance for large messages when + application buffers are re-used +- Elimiated duplicated error messages when multiple MPI processes fail + with the same error. +- Added NUMA support to the shared memory BTL. +- Add Valgrind-based memory checking for MPI-semantic checks. +- Add support for some optional Fortran datatypes (MPI_LOGICAL1, + MPI_LOGICAL2, MPI_LOGICAL4 and MPI_LOGICAL8). +- Remove the use of the STL from the C++ bindings. +- Added support for Platform/LSF job launchers. Must be Platform LSF + v7.0.2 or later. +- Updated ROMIO with the version from MPICH2 1.0.7. +- Added RDMA capable one-sided component (called rdma), which + can be used with BTL components that expose a full one-sided + interface. +- Added the optional datatype MPI_REAL2. As this is added to the "end of" + predefined datatypes in the fortran header files, there will not be + any compatibility issues. +- Added Portable Linux Processor Affinity (PLPA) for Linux. +- Addition of a finer symbols export control via the visibiliy feature + offered by some compilers. +- Added checkpoint/restart process fault tolerance support. Initially + support a LAM/MPI-like protocol. +- Removed "mvapi" BTL; all InfiniBand support now uses the OpenFabrics + driver stacks ("openib" BTL). +- Added more stringent MPI API parameter checking to help user-level + debugging. +- The ptmalloc2 memory manager component is now by default built as + a standalone library named libopenmpi-malloc. Users wanting to + use leave_pinned with ptmalloc2 will now need to link the library + into their application explicitly. All other users will use the + libc-provided allocator instead of Open MPI's ptmalloc2. This change + may be overriden with the configure option enable-ptmalloc2-internal +- The leave_pinned options will now default to using mallopt on + Linux in the cases where ptmalloc2 was not linked in. mallopt + will also only be available if munmap can be intercepted (the + default whenever Open MPI is not compiled with --without-memory- + manager. +- Open MPI will now complain and refuse to use leave_pinned if + no memory intercept / mallopt option is available. +- Add option of using Perl-based wrapper compilers instead of the + C-based wrapper compilers. The Perl-based version does not + have the features of the C-based version, but does work better + in cross-compile environments. + + +1.2.9: 14 Feb 2009 +------------------ + +- Fix a segfault when using one-sided communications on some forms of derived + datatypes. Thanks to Dorian Krause for reporting the bug. See #1715. +- Fix an alignment problem affecting one-sided communications on + some architectures (e.g., SPARC64). See #1738. +- Fix compilation on Solaris when thread support is enabled in Open MPI + (e.g., when using --with-threads). See #1736. +- Correctly take into account the MTU that an OpenFabrics device port + is using. See #1722 and + https://bugs.openfabrics.org/show_bug.cgi?id=1369. +- Fix two datatype engine bugs. See #1677. + Thanks to Peter Kjellstrom for the bugreport. +- Fix the bml r2 help filename so the help message can be found. See #1623. +- Fix a compilation problem on RHEL4U3 with the PGI 32 bit compiler + caused by . See ticket #1613. +- Fix the --enable-cxx-exceptions configure option. See ticket #1607. +- Properly handle when the MX BTL cannot open an endpoint. See ticket #1621. +- Fix a double free of events on the tcp_events list. See ticket #1631. +- Fix a buffer overun in opal_free_list_grow (called by MPI_Init). + Thanks to Patrick Farrell for the bugreport and Stephan Kramer for + the bugfix. See ticket #1583. +- Fix a problem setting OPAL_PREFIX for remote sh-based shells. + See ticket #1580. + + +1.2.8: 14 Oct 2008 +------------------ + +- Tweaked one memory barrier in the openib component to be more conservative. + May fix a problem observed on PPC machines. See ticket #1532. +- Fix OpenFabrics IB partition support. See ticket #1557. +- Restore v1.1 feature that sourced .profile on remote nodes if the default + shell will not do so (e.g. /bin/sh and /bin/ksh). See ticket #1560. +- Fix segfault in MPI_Init_thread() if ompi_mpi_init() fails. See ticket #1562. +- Adjust SLURM support to first look for $SLURM_JOB_CPUS_PER_NODE instead of + the deprecated $SLURM_TASKS_PER_NODE environment variable. This change + may be *required* when using SLURM v1.2 and above. See ticket #1536. +- Fix the MPIR_Proctable to be in process rank order. See ticket #1529. +- Fix a regression introduced in 1.2.6 for the IBM eHCA. See ticket #1526. + + +1.2.7: 28 Aug 2008 +------------------ + +- Add some Sun HCA vendor IDs. See ticket #1461. +- Fixed a memory leak in MPI_Alltoallw when called from Fortran. + Thanks to Dave Grote for the bugreport. See ticket #1457. +- Only link in libutil when it is needed/desired. Thanks to + Brian Barret for diagnosing and fixing the problem. See ticket #1455. +- Update some QLogic HCA vendor IDs. See ticket #1453. +- Fix F90 binding for MPI_CART_GET. Thanks to Scott Beardsley for + bringing it to our attention. See ticket #1429. +- Remove a spurious warning message generated in/by ROMIO. See ticket #1421. +- Fix a bug where command-line MCA parameters were not overriding + MCA parameters set from environment variables. See ticket #1380. +- Fix a bug in the AMD64 atomics assembly. Thanks to Gabriele Fatigati + for the bug report and bugfix. See ticket #1351. +- Fix a gather and scatter bug on intercommunicators when the datatype + being moved is 0 bytes. See ticket #1331. +- Some more man page fixes from the Debian maintainers. + See tickets #1324 and #1329. +- Have openib BTL (OpenFabrics support) check for the presence of + /sys/class/infiniband before allowing itself to be used. This check + prevents spurious "OMPI did not find RDMA hardware!" notices on + systems that have the software drivers installed, but no + corresponding hardware. See tickets #1321 and #1305. +- Added vendor IDs for some ConnectX openib HCAs. See ticket #1311. +- Fix some RPM specfile inconsistencies. See ticket #1308. + Thanks to Jim Kusznir for noticing the problem. +- Removed an unused function prototype that caused warnings on + some systems (e.g., OS X). See ticket #1274. +- Fix a deadlock in inter-communicator scatter/gather operations. + Thanks to Martin Audet for the bug report. See ticket #1268. + + +1.2.6: 7 Apr 2008 +----------------- + +- Fix a bug in the inter-allgather for asymmetric inter-communicators. + Thanks to Martin Audet for the bug report. See ticket #1247. +- Fix a bug in the openib BTL when setting the CQ depth. Thanks + to Jon Mason for the bug report and fix. See ticket #1245. +- On Mac OS X Leopard, the execinfo component will be used for + backtraces, making for a more durable solution. See ticket #1246. +- Added vendor IDs for some QLogic DDR openib HCAs. See ticket #1227. +- Updated the URL to get the latest config.guess and config.sub files. + Thanks to Ralf Wildenhues for the bug report. See ticket #1226. +- Added shared contexts support to PSM MTL. See ticket #1225. +- Added pml_ob1_use_early_completion MCA parameter to allow users + to turn off the OB1 early completion semantic and avoid "stall" + problems seen on InfiniBand in some cases. See ticket #1224. +- Sanitized some #define macros used in mpi.h to avoid compiler warnings + caused by MPI programs built with different autoconf versions. + Thanks to Ben Allan for reporting the problem, and thanks to + Brian Barrett for the fix. See ticket #1220. +- Some man page fixes from the Debian maintainers. See ticket #1219. +- Made the openib BTL a bit more resilient in the face of driver + errors. See ticket #1217. +- Fixed F90 interface for MPI_CART_CREATE. See ticket #1208. + Thanks to Michal Charemza for reporting the problem. +- Fixed some C++ compiler warnings. See ticket #1203. +- Fixed formatting of the orterun man page. See ticket #1202. + Thanks to Peter Breitenlohner for the patch. + + +1.2.5: 8 Jan 2008 +----------------- + +- Fixed compile issue with open() on Fedora 8 (and newer) platforms. + Thanks to Sebastian Schmitzdorff for noticing the problem. +- Added run-time warnings during MPI_INIT when MPI_THREAD_MULTIPLE + and/or progression threads are used (the OMPI v1.2 series does not + support these well at all). +- Better handling of ECONNABORTED from connect on Linux. Thanks to + Bob Soliday for noticing the problem; thanks to Brian Barrett for + submitting a patch. +- Reduce extraneous output from OOB when TCP connections must + be retried. Thanks to Brian Barrett for submitting a patch. +- Fix for ConnectX devices and OFED 1.3. See ticket #1190. +- Fixed a configure problem for Fortran 90 on Cray systems. Ticket #1189. +- Fix an uninitialized variable in the error case in opal_init.c. + Thanks to Ake Sandgren for pointing out the mistake. +- Fixed a hang in configure if $USER was not defined. Thanks to + Darrell Kresge for noticing the problem. See ticket #900. +- Added support for parallel debuggers even when we have an optimized build. + See ticket #1178. +- Worked around a bus error in the Mac OS X 10.5.X (Leopard) linker when + compiling Open MPI with -g. See ticket #1179. +- Removed some warnings about 'rm' from Mac OS X 10.5 (Leopard) builds. +- Fix the handling of mx_finalize(). See ticket #1177. + Thanks to Ake Sandgren for bringing this issue to our attention. +- Fixed minor file descriptor leak in the Altix timer code. Thanks to + Paul Hargrove for noticing the problem and supplying the fix. +- Fix a problem when using a different compiler for C and Objective C. + See ticket #1153. +- Fix segfault in MPI_COMM_SPAWN when the user specified a working + directory. Thanks to Murat Knecht for reporting this and suggesting + a fix. +- A few manpage fixes from the Debian Open MPI maintainers. Thanks to + Tilman Koschnick, Sylvestre Ledru, and Dirk Eddelbuettel. +- Fixed issue with pthread detection when compilers are not all + from the same vendor. Thanks to Ake Sandgren for the bug + report. See ticket #1150. +- Fixed vector collectives in the self module. See ticket #1166. +- Fixed some data-type engine bugs: an indexing bug, and an alignment bug. + See ticket #1165. +- Only set the MPI_APPNUM attribute if it is defined. See ticket + #1164. + + +1.2.4: 26 Sep 2007 +------------------ + +- Really added support for TotalView/DDT parallel debugger message queue + debugging (it was mistakenly listed as "added" in the 1.2 release). +- Fixed a build issue with GNU/kFreeBSD. Thanks to Petr Salinger for + the patch. +- Added missing MPI_FILE_NULL constant in Fortran. Thanks to + Bernd Schubert for bringing this to our attention. +- Change such that the UDAPL BTL is now only built in Linux when + explicitly specified via the --with-udapl configure command line + switch. +- Fixed an issue with umask not being propagated when using the TM + launcher. +- Fixed behavior if number of slots is not the same on all bproc nodes. +- Fixed a hang on systems without GPR support (ex. Cray XT3/4). +- Prevent users of 32-bit MPI apps from requesting >= 2GB of shared + memory. +- Added a Portals MTL. +- Fix 0 sized MPI_ALLOC_MEM requests. Thanks to Lisandro Dalcin for + pointing out the problem. +- Fixed a segfault crash on large SMPs when doing collectives. +- A variety of fixes for Cray XT3/4 class of machines. +- Fixed which error handler is used when MPI_COMM_SELF is passed + to MPI_COMM_FREE. Thanks to Lisandro Dalcini for the bug report. +- Fixed compilation on platforms that don't have hton/ntoh. +- Fixed a logic problem in the fortran binding for MPI_TYPE_MATCH_SIZE. + Thanks to Jeff Dusenberry for pointing out the problem and supplying + the fix. +- Fixed a problem with MPI_BOTTOM in various places of the f77-interface. + Thanks to Daniel Spangberg for bringing this up. +- Fixed problem where MPI-optional Fortran datatypes were not + correctly initialized. +- Fixed several problems with stdin/stdout forwarding. +- Fixed overflow problems with the sm mpool MCA parameters on large SMPs. +- Added support for the DDT parallel debugger via orterun's --debug + command line option. +- Added some sanity/error checks to the openib MCA parameter parsing + code. +- Updated the udapl BTL to use RDMA capabilities. +- Allow use of the BProc head node if it was allocated to the user. + Thanks to Sean Kelly for reporting the problem and helping debug it. +- Fixed a ROMIO problem where non-blocking I/O errors were not properly + reported to the user. +- Made remote process launch check the $SHELL environment variable if + a valid shell was not otherwise found for the user. + Thanks to Alf Wachsmann for the bugreport and suggested fix. +- Added/updated some vendor IDs for a few openib HCAs. +- Fixed a couple of failures that could occur when specifying devices + for use by the OOB. +- Removed dependency on sysfsutils from the openib BTL for + libibverbs >=v1.1 (i.e., OFED 1.2 and beyond). + + +1.2.3: 20 Jun 2007 +------------------ + +- Fix a regression in comm_spawn functionality that inadvertently + caused the mapping of child processes to always start at the same + place. Thanks to Prakash Velayutham for helping discover the + problem. +- Fix segfault when a user's home directory is unavailable on a remote + node. Thanks to Guillaume Thomas-Collignon for bringing the issue + to our attention. +- Fix MPI_IPROBE to properly handle MPI_STATUS_IGNORE on mx and psm + MTLs. Thanks to Sophia Corwell for finding this and supplying a + reproducer. +- Fix some error messages in the tcp BTL. +- Use _NSGetEnviron instead of environ on Mac OS X so that there + are no undefined symbols in the shared libraries. +- On OS X, when MACOSX_DEPLOYMENT_TARGET is 10.3 or higher, support + building the Fortran 90 bindings as a shared library. Thanks to + Jack Howarth for his advice on making this work. +- No longer require extra include flag for the C++ bindings. +- Fix detection of weak symbols support with Intel compilers. +- Fix issue found by Josh England: ompi_info would not show framework + MCA parameters set in the environment properly. +- Rename the oob_tcp_include/exclude MCA params to oob_tcp_if_include/exclude + so that they match the naming convention of the btl_tcp_if_include/exclude + params. The old names are depreciated, but will still work. +- Add -wd as a synonym for the -wdir orterun/mpirun option. +- Fix the mvapi BTL to compile properly with compilers that do not support + anonymous unions. Thanks to Luis Kornblueh for reporting the bug. + + +1.2.2: 16 May 2007 +------------------ + +- Fix regression in 1.2.1 regarding the handling of $CC with both + absolute and relative path names. +- Fix F90 array of status dimensions. Thanks to Randy Bramley for + noticing the problem. +- Add btl_openib_ib_pkey_value MCA parameter for controlling IB port selection. +- Fixed a variety of threading/locking bugs. +- Fixed some compiler warnings associated with ROMIO, OS X, and gridengine. +- If pbs-config can be found, use it to look for TM support. Thanks + to Bas van der Vlies for the inspiration and preliminary work. +- Fixed a deadlock in orterun when the rsh PLS encounters some errors. + + +1.2.1: 25 Apr 2007 +------------------ + +- Fixed a number of connection establishment errors in the TCP out- + of-band messaging system. +- Fixed a memory leak when using mpi_comm calls. + Thanks to Bas van der Vlies for reporting the problem. +- Fixed various memory leaks in OPAL and ORTE. +- Improved launch times when using TM (PBS Pro, Torque, Open PBS). +- Fixed mpi_leave_pinned to work for all datatypes. +- Fix functionality allowing users to disable sbrk() (the + mpool_base_disable_sbrk MCA parameter) on platforms that support it. +- Fixed a pair of problems with the TCP "listen_thread" mode for the + oob_tcp_listen_mode MCA parameter that would cause failures when + attempting to launch applications. +- Fixed a segfault if there was a failure opening a BTL MX endpoint. +- Fixed a problem with mpirun's --nolocal option introduced in 1.2. +- Re-enabled MPI_COMM_SPAWN_MULTIPLE from singletons. +- LoadLeveler and TM configure fixes, Thanks to Martin Audet for the + bug report. +- Various C++ MPI attributes fixes. +- Fixed issues with backtrace code on 64 bit Intel & PPC OS X builds. +- Fixed issues with multi-word CC variables and libtool. + Thanks to Bert Wesarg for the bug reports. +- Fix issue with non-uniform node naming schemes in SLURM. +- Fix file descriptor leak in the Grid Engine/N1GE support. +- Fix compile error on OS X 10.3.x introduced with Open MPI 1.1.5. +- Implement MPI_TYPE_CREATE_DARRAY function (was in 1.1.5 but not 1.2). +- Recognize zsh shell when using rsh/ssh for launching MPI jobs. +- Ability to set the OPAL_DESTDIR or OPAL_PREFIX environment + variables to "re-root" an existing Open MPI installation. +- Always include -I for Fortran compiles, even if the prefix is + /usr/local. +- Support for "fork()" in MPI applications that use the + OpenFabrics stack (OFED v1.2 or later). +- Support for setting specific limits on registered memory. + + +1.2: 15 Mar 2007 +---------------- + +- Fixed race condition in the shared memory fifo's, which led to + orphaned messages. +- Corrected the size of the shared memory file - subtracted out the + space the header was occupying. +- Add support for MPI_2COMPLEX and MPI_2DOUBLE_COMPLEX. +- Always ensure to create $(includedir)/openmpi, even if the C++ + bindings are disabled so that the wrapper compilers don't point to + a directory that doesn't exist. Thanks to Martin Audet for + identifying the problem. +- Fixes for endian handling in MPI process startup. +- Openib BTL initialization fixes for cases where MPI processes in the + same job has different numbers of active ports on the same physical + fabric. +- Print more descriptive information when displaying backtraces on + OS's that support this functionality, such as the hostname and PID + of the process in question. +- Fixes to properly handle MPI exceptions in C++ on communicators, + windows, and files. +- Much more reliable runtime support, particularly with regards to MPI + job startup scalability, BProc support, and cleanup in failure + scenarios (e.g., MPI_ABORT, MPI processes abnormally terminating, + etc.). +- Significant performance improvements for MPI collectives, + particularly on high-speed networks. +- Various fixes in the MX BTL component. +- Fix C++ typecast problems with MPI_ERRCODES_IGNORE. Thanks to + Satish Balay for bringing this to our attention. +- Allow run-time specification of the maximum amount of registered + memory for OpenFabrics and GM. +- Users who utilize the wrapper compilers (e.g., mpicc and mpif77) + will not notice, but the underlying library names for ORTE and OPAL + have changed to libopen-rte and libopen-pal, respectively (listed + here because there are undoubtedly some users who are not using the + wrapper compilers). +- Many bug fixes to MPI-2 one-sided support. +- Added support for TotalView message queue debugging. +- Fixes for MPI_STATUS_SET_ELEMENTS. +- Print better error messages when mpirun's "-nolocal" is used when + there is only one node available. +- Added man pages for several Open MPI executables and the MPI API + functions. +- A number of fixes for Alpha platforms. +- A variety of Fortran API fixes. +- Build the Fortran MPI API as a separate library to allow these + functions to be profiled properly. +- Add new --enable-mpirun-prefix-by-default configure option to always + imply the --prefix option to mpirun, preventing many rsh/ssh-based + users from needing to modify their shell startup files. +- Add a number of missing constants in the C++ bindings. +- Added tight integration with Sun N1 Grid Engine (N1GE) 6 and the + open source Grid Engine. +- Allow building the F90 MPI bindings as shared libraries for most + compilers / platforms. Explicitly disallow building the F90 + bindings as shared libraries on OS X because of complicated + situations with Fortran common blocks and lack of support for + unresolved common symbols in shared libraries. +- Added stacktrace support for Solaris and Mac OS X. +- Update event library to libevent-1.1b. +- Fixed standards conformance issues with MPI_ERR_TRUNCATED and + setting MPI_ERROR during MPI_TEST/MPI_WAIT. +- Addition of "cm" PML to better support library-level matching + interconnects, with support for Myrinet/MX, and QLogic PSM-based + networks. +- Addition of "udapl" BTL for transport across uDAPL interconnects. +- Really check that the $CXX given to configure is a C++ compiler + (not a C compiler that "sorta works" as a C++ compiler). +- Properly check for local host only addresses properly, looking + for 127.0.0.0/8, rather than just 127.0.0.1. + + +1.1.5: 19 Mar 2007 +------------------ + +- Implement MPI_TYPE_CREATE_DARRAY function. +- Fix race condition in shared memory BTL startup that could cause MPI + applications to hang in MPI_INIT. +- Fix syntax error in a corner case of the event library. Thanks to + Bert Wesarg for pointing this out. +- Add new MCA parameter (mpi_preconnect_oob) for pre-connecting the + "out of band" channels between all MPI processes. Most helpful for + MPI applications over InfiniBand where process A sends an initial + message to process B, but process B does not enter the MPI library + for a long time. +- Fix for a race condition in shared memory locking semantics. +- Add major, minor, and release version number of Open MPI to mpi.h. + Thanks to Martin Audet for the suggestion. +- Fix the "restrict" compiler check in configure. +- Fix a problem with argument checking in MPI_TYPE_CREATE_SUBARRAY. +- Fix a problem with compiling the XGrid components with non-gcc + compilers. + + +1.1.4: 30 Jan 2007 +------------------ + +- Fixed 64-bit alignment issues with TCP interface detection on + intel-based OS X machines. +- Adjusted TCP interface selection to automatically ignore Linux + channel-bonded slave interfaces. +- Fixed the type of the first parameter to the MPI F90 binding for + MPI_INITIALIZED. Thanks to Tim Campbell for pointing out the + problem. +- Fix a bunch of places in the Fortran MPI bindings where (MPI_Fint*) + was mistakenly being used instead of (MPI_Aint*). +- Fixes for fortran MPI_STARTALL, which could sometimes return + incorrect request values. Thanks to Tim Campbell for pointing out + the problem. +- Include both pre- and post-MPI-2 errata bindings for + MPI::Win::Get_attr. +- Fix math error on Intel OS X platforms that would greatly increase + shared memory latency. +- Fix type casting issue with MPI_ERRCODES_IGNORE that would cause + errors when using a C++ compiler. Thanks to Barry Smith for + bringing this to our attention. +- Fix possible segmentation fault during shutdown when using the + MX BTL. + + +1.1.3: 26 Jan 2007 +------------------ + +- Remove the "hierarch" coll component; it was not intended to be + included in stable releases yet. +- Fix a race condition with stdout/stderr not appearing properly from + all processes upon termination of an MPI job. +- Fix internal accounting errors with the self BTL. +- Fix typos in the code path for when sizeof(int) != sizeof(INTEGER) + in the MPI F77 bindings functions. Thanks to Pierre-Matthieu + Anglade for bringing this problem to our attention. +- Fix for a memory leak in the derived datatype function + ompi_ddt_duplicate(). Thanks to Andreas Schafer for reporting, + diagnosing, and patching the leak. +- Used better performing basic algorithm for MPI_ALLGATHERV. +- Added a workaround for a bug in the Intel 9.1 C++ compiler (all + versions up to and including 20060925) in the MPI C++ bindings that + caused run-time failures. Thanks to Scott Weitzenkamp for reporting + this problem. +- Fix MPI_SIZEOF implementation in the F90 bindings for COMPLEX + variable types. +- Fixes for persistent requests involving MPI_PROC_NULL. Thanks to + Lisandro Dalcin for reporting the problem. +- Fixes to MPI_TEST* and MPI_WAIT* for proper MPI exception reporting. + Thanks to Lisandro Dalcin for finding the issue. +- Various fixes for MPI generalized request handling; addition of + missing MPI::Grequest functionality to the C++ bindings. +- Add "mpi_preconnect_all" MCA parameter to force wireup of all MPI + connections during MPI_INIT (vs. making connections lazily whenever + the first MPI communication occurs between a pair of peers). +- Fix a problem for when $FC and/or $F77 were specified as multiple + tokens. Thanks to Orion Poplawski for identifying the problem and + to Ralf Wildenhues for suggesting the fix. +- Fix several MPI_*ERRHANDLER* functions and MPI_GROUP_TRANSLATE_RANKS + with respect to what arguments they allowed and the behavior that + they effected. Thanks to Lisandro Dalcin for reporting the + problems. + + +1.1.2: 18 Oct 2006 +------------------ + +- Really fix Fortran status handling in MPI_WAITSOME and MPI_TESTSOME. +- Various datatype fixes, reported by several users as causing + failures in the BLACS testing suite. Thanks to Harald Forbert, Ake + Sandgren and, Michael Kluskens for reporting the problem. +- Correctness and performance fixes for heterogeneous environments. +- Fixed a error in command line parsing on some platforms (causing + mpirun to crash without doing anything). +- Fix for initialization hangs on 64 bit Mac OS X PowerPC systems. +- Fixed some memory allocation problems in mpirun that could cause + random problems if "-np" was not specified on the command line. +- Add Kerberos authentication support for XGrid. +- Added LoadLeveler support for jobs larger than 128 tasks. +- Fix for large-sized Fortran LOGICAL datatypes. +- Fix various error checking in MPI_INFO_GET_NTHKEY and + MPI_GROUP_TRANSLATE_RANKS, and some collective operations + (particularly with regards to MPI_IN_PLACE). Thanks to Lisandro + Dalcin for reporting the problems. +- Fix receiving messages to buffers allocated by MPI_ALLOC_MEM. +- Fix a number of race conditions with the MPI-2 Onesided + interface. +- Fix the "tuned" collective componenete where some cases where + MPI_BCAST could hang. +- Update TCP support to support non-uniform TCP environments. +- Allow the "poe" RAS component to be built on AIX or Linux. +- Only install mpif.h if the rest of the Fortran bindings are + installed. +- Fixes for BProc node selection. +- Add some missing Fortran MPI-2 IO constants. + + +1.1.1: 28 Aug 2006 +------------------ + +- Fix for Fortran string handling in various MPI API functions. +- Fix for Fortran status handling in MPI_WAITSOME and MPI_TESTSOME. +- Various fixes for the XL compilers. +- Automatically disable using mallot() on AIX. +- Memory fixes for 64 bit platforms with registering MCA parameters in + the self and MX BTL components. +- Fixes for BProc to support oversubscription and changes to the + mapping algorithm so that mapping processes "by slot" works as + expected. +- Fixes for various abort cases to not hang and clean up nicely. +- If using the Intel 9.0 v20051201 compiler on an IA64 platform, the + ptmalloc2 memory manager component will automatically disable + itself. Other versions of the Intel compiler on this platform seem + to work fine (e.g., 9.1). +- Added "host" MPI_Info key to MPI_COMM_SPAWN and + MPI_COMM_SPAWN_MULTIPLE. +- Add missing C++ methods: MPI::Datatype::Create_indexed_block, + MPI::Datatype::Create_resized, MPI::Datatype::Get_true_extent. +- Fix OSX linker issue with Fortran bindings. +- Fixed MPI_COMM_SPAWN to start spawning new processes in slots that + (according to Open MPI) are not already in use. +- Added capability to "mpirun a.out" (without specifying -np) that + will run on all currently-allocated resources (e.g., within a batch + job such as SLURM, Torque, etc.). +- Fix a bug with one particular case of MPI_BCAST. Thanks to Doug + Gregor for identifying the problem. +- Ensure that the shared memory mapped file is only created when there + is more than one process on a node. +- Fixed problems with BProc stdin forwarding. +- Fixed problem with MPI_TYPE_INDEXED datatypes. Thanks to Yven + Fournier for identifying this problem. +- Fix some thread safety issues in MPI attributes and the openib BTL. +- Fix the BProc allocator to not potentially use the same resources + across multiple ORTE universes. +- Fix gm resource leak. +- More latency reduction throughout the code base. +- Make the TM PLS (PBS Pro, Torque, Open PBS) more scalable, and fix + some latent bugs that crept in v1.1. Thanks to the Thunderbird crew + at Sandia National Laboratories and Martin Schaffoner for access to + testing facilities to make this happen. +- Added new command line options to mpirun: + --nolocal: Do not run any MPI processes on the same node as mpirun + (compatibility with the OSC mpiexec launcher) + --nooversubscribe: Abort if the number of processes requested would + cause oversubscription + --quiet / -q: do not show spurious status messages + --version / -V: show the version of Open MPI +- Fix bus error in XGrid process starter. Thanks to Frank from the + Open MPI user's list for identifying the problem. +- Fix data size mismatches that caused memory errors on PPC64 + platforms during the startup of the openib BTL. +- Allow propagation of SIGUSR1 and SIGUSR2 signals from mpirun to + back-end MPI processes. +- Add missing MPI::Is_finalized() function. + + +1.1: 23 Jun 2006 +---------------- + +- Various MPI datatype fixes, optimizations. +- Fixed various problems on the SPARC architecture (e.g., not + correctly aligning addresses within structs). +- Improvements in various run-time error messages to be more clear + about what they mean and where the errors are occurring. +- Various fixes to mpirun's handling of --prefix. +- Updates and fixes for Cray/Red Storm support. +- Major improvements to the Fortran 90 MPI bindings: + - General improvements in compile/linking time and portability + between different F90 compilers. + - Addition of "trivial", "small" (the default), and "medium" + Fortran 90 MPI module sizes (v1.0.x's F90 module was + equivalent to "medium"). See the README file for more + explanation. + - Fix various MPI F90 interface functions and constant types to + match. Thanks to Michael Kluskens for pointing out the problems + to us. +- Allow short messagees to use RDMA (vs. send/receive semantics) to a + limited number peers in both the mvapi and openib BTL components. + This reduces communication latency over IB channels. +- Numerous performance improvements throughout the entire code base. +- Many minor threading fixes. +- Add a define OMPI_SKIP_CXX to allow the user to skip the mpicxx.h from + being included in mpi.h. It allows the user to compile C code with a CXX + compiler without including the CXX bindings. +- PERUSE support has been added. In order to activate it add + --enable-peruse to the configure options. All events described in + the PERUSE 2.0 draft are supported, plus one Open MPI + extension. PERUSE_COMM_REQ_XFER_CONTINUE allow to see how the data + is segmented internally, using multiple interfaces or the pipeline + engine. However, this version only support one event of each type + simultaneously attached to a communicator. +- Add support for running jobs in heterogeneous environments. + Currently supports environments with different endianness and + different representations of C++ bool and Fortran LOGICAL. + Mismatched sizes for other datatypes is not supported. +- Open MPI now includes an implementation of the MPI-2 One-Sided + Communications specification. +- Open MPI is now configurable in cross-compilation environments. + Several Fortran 77 and Fortran 90 tests need to be pre-seeded with + results from a config.cache-like file. +- Add --debug option to mpirun to generically invoke a parallel debugger. + + +1.0.3: Not released (all fixes included in 1.1) +----------------------------------------------- + +- Fix a problem noted by Chris Hennes where MPI_INFO_SET incorrectly + disallowed long values. +- Fix a problem in the launch system that could cause inconsistent + launch behavior, particularly when launching large jobs. +- Require that the openib BTL find . Thanks to Josh + Aune for the suggestion. +- Include updates to support the upcoming Autoconf 2.60 and Libtool + 2.0. Thanks to Ralf Wildenhues for all the work! +- Fix bug with infinite loop in the "round robin" process mapper. + Thanks to Paul Donohue for reporting the problem. +- Enusre that memory hooks are removed properly during MPI_FINALIZE. + Thanks to Neil Ludban for reporting the problem. +- Various fixes to the included support for ROMIO. +- Fix to ensure that MPI_LONG_LONG and MPI_LONG_LONG_INT are actually + synonyms, as defined by the MPI standard. Thanks to Martin Audet + for reporting this. +- Fix Fortran 90 configure tests to properly utilize LDFLAGS and LIBS. + Thanks to Terry Reeves for reporting the problem. +- Fix shared memory progression in asynchronous progress scenarios. + Thanks to Mykael Bouquey for reporting the problem. +- Fixed back-end operations for predefined MPI_PROD for some + datatypes. Thanks to Bert Wesarg for reporting this. +- Adapted configure to be able to handle Torque 2.1.0p0's (and above) + new library name. Thanks to Brock Palen for pointing this out and + providing access to a Torque 2.1.0p0 cluster to test with. +- Fixed situation where mpirun could set a shell pipeline's stdout + to non-blocking, causing the shell pipeline to prematurely fail. + Thanks to Darrell Kresge for figuring out what was happening. +- Fixed problems with leave_pinned that could cause Badness with the + mvapi BTL. +- Fixed problems with MPI_FILE_OPEN and non-blocking MPI-2 IO access. +- Fixed various InfiniBand port matching issues during startup. + Thanks to Scott Weitzenkamp for identifying these problems. +- Fixed various configure, build and run-time issues with ROMIO. + Thanks to Dries Kimpe for bringing them to our attention. +- Fixed error in MPI_COMM_SPLIT when dealing with intercommunicators. + Thanks to Bert Wesarg for identifying the problem. +- Fixed backwards handling of "high" parameter in MPI_INTERCOMM_MERGE. + Thanks to Michael Kluskens for pointing this out to us. +- Fixed improper handling of string arguments in Fortran bindings + for MPI-IO functionality +- Fixed segmentation fault with 64 bit applications on Solaris when + using the shared memory transports. +- Fixed MPI_COMM_SELF attributes to free properly at the beginning of + MPI_FINALIZE. Thanks to Martin Audet for bringing this to our + attention. +- Fixed alignment tests for cross-compiling to not cause errors with + recent versions of GCC. + + +1.0.2: 7 Apr 2006 +----------------- + +- Fixed assembly race condition on AMD64 platforms. +- Fixed residual .TRUE. issue with copying MPI attributes set from + Fortran. +- Remove unnecessary logic from Solaris pty I/O forwarding. Thanks to + Francoise Roch for bringing this to our attention. +- Fixed error when count = 0 was given for multiple completion MPI + functions (MPI_TESTSOME, MPI_TESTANY, MPI_TESTALL, MPI_WAITSOME, + MPI_WAITANY, MPI_WAITALL). +- Better handling in MPI_ABORT for when peer processes have already + died, especially under some resource managers. +- Random updates to README file, to include notes about the Portland + compilers. +- Random, small threading fixes to prevent deadlock. +- Fixed a problem with handling long mpirun app files. Thanks to Ravi + Manumachu for identifying the problem. +- Fix handling of strings in several of the Fortran 77 bindings. +- Fix LinuxPPC assembly issues. Thanks to Julian Seward for reporting + the problem. +- Enable pty support for standard I/O forwarding on platforms that + have ptys but do not have openpty(). Thanks to Pierre Valiron for + bringing this to our attention. +- Disable inline assembly for PGI compilers to avoid compiler errors. + Thanks to Troy Telford for bringing this to our attention. +- Added MPI_UNSIGNED_CHAR and MPI_SIGNED_CHAR to the allowed reduction + types. +- Fix a segv in variable-length message displays on Opterons running + Solaris. Thanks to Pierre Valiron for reporting the issue. +- Added MPI_BOOL to the intrinsic reduction operations MPI_LAND, + MPI_LOR, MPI_LXOR. Thanks to Andy Selle for pointing this out to us. +- Fixed TCP BTL network matching logic during MPI_INIT; in some cases + on multi-NIC nodes, a NIC could get paired with a NIC on another + network (typically resulting in deadlock). Thanks to Ken Mighell + for pointing this out to us. +- Change the behavior of orterun (mpirun, mpirexec) to search for + argv[0] and the cwd on the target node (i.e., the node where the + executable will be running in all systems except BProc, where the + searches are run on the node where orterun is invoked). +- Fix race condition in shared memory transport that could cause + crashes on machines with weak memory consistency models (including + POWER/PowerPC machines). +- Fix warnings about setting read-only MCA parameters on bproc systems. +- Change the exit status set by mpirun when an application process is + killed by a signal. The exit status is now set to signo + 128, which + conforms with the behavior of (almost) all shells. +- Correct a datatype problem with the convertor when partially + unpacking data. Now we can position the convertor to any position + not only on the predefined types boundaries. Thanks to Yvan Fournier + for reporting this to us. +- Fix a number of standard I/O forwarding issues, including the + ability to background mpirun and a loss of data issue when + redirecting mpirun's standard input from a file. +- Fixed bug in ompi_info where rcache and bml MCA parameters would not + be displayed. +- Fixed umask issues in the session directory. Thanks to Glenn Morris + for reporting this to us. +- Fixed tcsh-based LD_LIBRARY_PATH issues with --prefix. Thanks to + Glen Morris for identifying the problem and suggesting the fix. +- Removed extraneous \n's when setting PATH and LD_LIBRARY_PATH in the + rsh startup. Thanks to Glen Morris for finding these typos. +- Fixed missing constants in MPI C++ bindings. +- Fixed some errors caused by threading issues. +- Fixed openib BTL flow control logic to not overrun the number of + send wqes available. +- Update to match newest OpenIB user-level library API. Thanks to + Roland Dreier for submitting this patch. +- Report errors properly when failing to register memory in the openib + BTL. +- Reduce memory footprint of openib BTL. +- Fix parsing problem with mpirun's "-tv" switch. Thanks to Chris + Gottbrath for supplying the fix. +- Fix Darwin net/if.h configure warning. +- The GNU assembler unbelievably defaults to making stacks executable. + So when using gas, add flags to explicitly tell it to not make + stacks executable (lame but necessary). +- Add missing MPI::Request::Get_status() methods. Thanks to Bill + Saphir for pointing this out to us. +- Improved error messages on memory registration errors (e.g., when + using high-speed networks). +- Open IB support now checks firmware for how many outstanding RDMA + requests are supported. Thanks to Mellanox for pointing this out to + us. +- Enable printing of stack traces in MPI processes upon SIGBUS, + SIGSEGV, and SIGFPE if the platform supports it. +- Fixed F90 compilation support for the Lahey compiler. +- Fixed issues with ROMIO shared library support. +- Fixed internal accounting problems with rsh support. +- Update to GNU Libtool 1.5.22. +- Fix error in configure script when setting CCAS to ias (the Intel + assembler). +- Added missing MPI::Intercomm collectives. +- Fixed MPI_IN_PLACE handling for Fortran collectives. +- Fixed some more C++ const_cast<> issues. Thanks for Martin Audet + (again) for bringing this to our attention. +- Updated ROMIO with the version from MPICH 1.2.7p1, marked as version + 2005-06-09. +- Fixes for some cases where the use of MPI_BOTTOM could cause + problems. +- Properly handle the case where an mVAPI does not have shared receive + queue support (such as the one shipped by SilverStorm / Infinicon + for OS X). + + +1.0.1: 12 Dec 2005 +------------------ + +- Fixed assembly on Solaris AMD platforms. Thanks to Pierre Valiron + for bringing this to our attention. +- Fixed long messages in the send-to-self case. +- Ensure that when the "leave_pinned" option is used, the memory hooks + are also enabled. Thanks to Gleb Natapov for pointing this out. +- Fixed compile errors for IRIX. +- Allow hostfiles to have integer host names (for BProc clusters). +- Fixed a problem with message matching of out-of-order fragments in + multiple network device scenarios. +- Converted all the C++ MPI bindings to use proper const_cast<>'s + instead of old C-style casts to get rid of const-ness. Thanks to + Martin Audet for raising the issue with us. +- Converted MPI_Offset to be a typedef instead of a #define because it + causes problems for some C++ parsers. Thanks to Martin Audet for + bringing this to our attention. +- Improved latency of TCP BTL. +- Fixed index value in MPI_TESTANY to be MPI_UNDEFINED if some + requests were not MPI_REQUEST_NULL, but no requests finished. +- Fixed several Fortran MPI API implementations that incorrectly used + integers instead of logicals or address-sized integers. +- Fix so that Open MPI correctly handles the Fortran value for .TRUE., + regardless of what the Fortran compiler's value for .TRUE. is. +- Improved scalability of MX startup. +- Fix datatype offset handling in the coll basic component's + MPI_SCATTERV implementation. +- Fix EOF handling on stdin. +- Fix missing MPI_F_STATUS_IGNORE and MPI_F_STATUSES_IGNORE + instanatiations. Thanks to Anthony Chan for pointing this out. +- Add a missing value for MPI_WIN_NULL in mpif.h. +- Bring over some fixes for the sm btl that somehow didn't make it + over from the trunk before v1.0. Thanks to Beth Tibbitts and Bill + Chung for helping identify this issue. +- Bring over some fixes for the iof that somehow didn't make it over + from the trunk before v1.0. +- Fix for --with-wrapper-ldflags handling. Thanks to Dries Kimpe for + pointing this out to us. + + +1.0: 17 Nov 2005 +---------------- + +Initial public release. diff --git a/README b/README new file mode 100644 index 00000000..5f60e558 --- /dev/null +++ b/README @@ -0,0 +1,2155 @@ +Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana + University Research and Technology + Corporation. All rights reserved. +Copyright (c) 2004-2007 The University of Tennessee and The University + of Tennessee Research Foundation. All rights + reserved. +Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, + University of Stuttgart. All rights reserved. +Copyright (c) 2004-2007 The Regents of the University of California. + All rights reserved. +Copyright (c) 2006-2017 Cisco Systems, Inc. All rights reserved. +Copyright (c) 2006-2011 Mellanox Technologies. All rights reserved. +Copyright (c) 2006-2012 Oracle and/or its affiliates. All rights reserved. +Copyright (c) 2007 Myricom, Inc. All rights reserved. +Copyright (c) 2008-2017 IBM Corporation. All rights reserved. +Copyright (c) 2010 Oak Ridge National Labs. All rights reserved. +Copyright (c) 2011 University of Houston. All rights reserved. +Copyright (c) 2013-2015 Intel, Inc. All rights reserved +Copyright (c) 2015 NVIDIA Corporation. All rights reserved. +Copyright (c) 2017 Los Alamos National Security, LLC. All rights + reserved. +Copyright (c) 2017 Research Organization for Information Science + and Technology (RIST). All rights reserved. + +$COPYRIGHT$ + +Additional copyrights may follow + +$HEADER$ + +=========================================================================== + +When submitting questions and problems, be sure to include as much +extra information as possible. This web page details all the +information that we request in order to provide assistance: + + http://www.open-mpi.org/community/help/ + +The best way to report bugs, send comments, or ask questions is to +sign up on the user's and/or developer's mailing list (for user-level +and developer-level questions; when in doubt, send to the user's +list): + + users@lists.open-mpi.org + devel@lists.open-mpi.org + +Because of spam, only subscribers are allowed to post to these lists +(ensure that you subscribe with and post from exactly the same e-mail +address -- joe@example.com is considered different than +joe@mycomputer.example.com!). Visit these pages to subscribe to the +lists: + + http://lists.open-mpi.org/mailman/listinfo/users + http://lists.open-mpi.org/mailman/listinfo/devel + +Thanks for your time. + +=========================================================================== + +Much, much more information is also available in the Open MPI FAQ: + + https://www.open-mpi.org/faq/ + +=========================================================================== + +The following abbreviated list of release notes applies to this code +base as of this writing (March 2017): + +General notes +------------- + +- Open MPI now includes two public software layers: MPI and OpenSHMEM. + Throughout this document, references to Open MPI implicitly include + both of these layers. When distinction between these two layers is + necessary, we will reference them as the "MPI" and "OpenSHMEM" + layers respectively. + +- OpenSHMEM is a collaborative effort between academia, industry, and + the U.S. Government to create a specification for a standardized API + for parallel programming in the Partitioned Global Address Space + (PGAS). For more information about the OpenSHMEM project, including + access to the current OpenSHMEM specification, please visit: + + http://openshmem.org/ + + This OpenSHMEM implementation will only work in Linux environments + with a restricted set of supported networks. + +- Open MPI includes support for a wide variety of supplemental + hardware and software package. When configuring Open MPI, you may + need to supply additional flags to the "configure" script in order + to tell Open MPI where the header files, libraries, and any other + required files are located. As such, running "configure" by itself + may not include support for all the devices (etc.) that you expect, + especially if their support headers / libraries are installed in + non-standard locations. Network interconnects are an easy example + to discuss -- Libfabric and OpenFabrics networks, for example, both + have supplemental headers and libraries that must be found before + Open MPI can build support for them. You must specify where these + files are with the appropriate options to configure. See the + listing of configure command-line switches, below, for more details. + +- The majority of Open MPI's documentation is here in this file, the + included man pages, and on the web site FAQ + (https://www.open-mpi.org/). + +- Note that Open MPI documentation uses the word "component" + frequently; the word "plugin" is probably more familiar to most + users. As such, end users can probably completely substitute the + word "plugin" wherever you see "component" in our documentation. + For what it's worth, we use the word "component" for historical + reasons, mainly because it is part of our acronyms and internal API + function calls. + +- The run-time systems that are currently supported are: + - rsh / ssh + - PBS Pro, Torque + - Platform LSF (v7.0.2 and later) + - SLURM + - Cray XE, XC, and XK + - Oracle Grid Engine (OGE) 6.1, 6.2 and open source Grid Engine + +- Systems that have been tested are: + - Linux (various flavors/distros), 64 bit (x86), with gcc, Absoft, + Intel, and Portland (*) + - macOS (10.12), 64 bit (x85_64) with XCode compilers + + (*) Be sure to read the Compiler Notes, below. + +- Other systems have been lightly (but not fully tested): + - Linux (various flavors/distros), 32 bit, with gcc + - Cygwin 32 & 64 bit with gcc + - ARMv4, ARMv5, ARMv6, ARMv7, ARMv8 + - Other 64 bit platforms (e.g., Linux on PPC64) + - Oracle Solaris 10 and 11, 32 and 64 bit (SPARC, i386, x86_64), + with Oracle Solaris Studio 12.5 + - OpenBSD. Requires configure options --enable-mca-no-build=patcher + and --disable-slopen with this release. + - Problems have been reported when building Open MPI on FreeBSD 11.1 + using the clang-4.0 system compiler. A workaround is to build + Open MPI using the GNU compiler. + +Platform Notes +-------------- + +- Users on Intel Xeon Phi with XPPSL 1.5.1 will see a warning on job + launch from the internal hwloc. To avoid the warning message, users + can build hwloc 1.11.6 externally and tell Open MPI's configure to + use the external hwloc with the --with-hwloc=external (if in default + search path) or --with-hwloc=. +- ARM and POWER users may experience intermittent hangs when Open MPI + is compiled with low optimization settings, due to an issue with our + atomic list implementation. We recommend compiling with -O3 + optimization, both for performance reasons and to avoid this hang. + +Compiler Notes +-------------- + +- Open MPI requires a C99-capable compiler to build. + +- Mixing compilers from different vendors when building Open MPI + (e.g., using the C/C++ compiler from one vendor and the Fortran + compiler from a different vendor) has been successfully employed by + some Open MPI users (discussed on the Open MPI user's mailing list), + but such configurations are not tested and not documented. For + example, such configurations may require additional compiler / + linker flags to make Open MPI build properly. + +- In general, the latest versions of compilers of a given vendor's + series have the least bugs. We have seen cases where Vendor XYZ's + compiler version A.B fails to compile Open MPI, but version A.C + (where C>B) works just fine. If you run into a compile failure, you + might want to double check that you have the latest bug fixes and + patches for your compiler. + +- Users have reported issues with older versions of the Fortran PGI + compiler suite when using Open MPI's (non-default) --enable-debug + configure option. Per the above advice of using the most recent + version of a compiler series, the Open MPI team recommends using the + latest version of the PGI suite, and/or not using the --enable-debug + configure option. If it helps, here's what we have found with some + (not comprehensive) testing of various versions of the PGI compiler + suite: + + pgi-8 : NO known good version with --enable-debug + pgi-9 : 9.0-4 known GOOD + pgi-10: 10.0-0 known GOOD + pgi-11: NO known good version with --enable-debug + pgi-12: 12.10 known BAD with -m32, but known GOOD without -m32 + (and 12.8 and 12.9 both known BAD with --enable-debug) + pgi-13: 13.9 known BAD with -m32, 13.10 known GOOD without -m32 + pgi-15: 15.10 known BAD with -m32 + +- Similarly, there is a known Fortran PGI compiler issue with long + source directory path names that was resolved in 9.0-4 (9.0-3 is + known to be broken in this regard). + +- OpenSHMEM Fortran bindings do not support the `no underscore` Fortran + symbol convention. IBM's xlf compilers build in that mode by default. + As such, IBM's xlf compilers cannot build/link the OpenSHMEM Fortran + bindings by default. A workaround is to pass FC="xlf -qextname" at + configure time to force a trailing underscore. See the issue below + for more details: + https://github.com/open-mpi/ompi/issues/3612 + +- MPI applications that use the mpi_f08 module on PowerPC platforms + (tested ppc64le) will likely experience runtime failures if: + - they are using a GNU linker (ld) version after v2.25.1 and before v2.28, + -and- + - they compiled with PGI (tested 17.5) or XL (tested v15.1.5) compilers. + This was noticed on Ubuntu 16.04 which uses the 2.26.1 version of ld by + default. However, this issue impacts any OS using a version of ld noted + above. This GNU linker regression will be fixed in version 2.28. + Below is a link to the GNU bug on this issue: + https://sourceware.org/bugzilla/show_bug.cgi?id=21306 + The XL compiler will include a fix for this issue in a future release. + +- On NetBSD-6 (at least AMD64 and i386), and possibly on OpenBSD, + libtool misidentifies properties of f95/g95, leading to obscure + compile-time failures if used to build Open MPI. You can work + around this issue by ensuring that libtool will not use f95/g95 + (e.g., by specifying FC=, or otherwise ensuring + a different Fortran compiler will be found earlier in the path than + f95/g95), or by disabling the Fortran MPI bindings with + --disable-mpi-fortran. + +- On OpenBSD/i386, if you configure with + --enable-mca-no-build=patcher, you will also need to add + --disable-dlopen. Otherwise, odd crashes can occur + nondeterministically. + +- Absoft 11.5.2 plus a service pack from September 2012 (which Absoft + says is available upon request), or a version later than 11.5.2 + (e.g., 11.5.3), is required to compile the Fortran mpi_f08 + module. + +- Open MPI does not support the Sparc v8 CPU target. However, + as of Solaris Studio 12.1, and later compilers, one should not + specify -xarch=v8plus or -xarch=v9. The use of the options + -m32 and -m64 for producing 32 and 64 bit targets, respectively, + are now preferred by the Solaris Studio compilers. GCC may + require either "-m32" or "-mcpu=v9 -m32", depending on GCC version. + +- It has been noticed that if one uses CXX=sunCC, in which sunCC + is a link in the Solaris Studio compiler release, that the OMPI + build system has issue with sunCC and does not build libmpi_cxx.so. + Therefore the make install fails. So we suggest that one should + use CXX=CC, which works, instead of CXX=sunCC. + +- If one tries to build OMPI on Ubuntu with Solaris Studio using the C++ + compiler and the -m32 option, you might see a warning: + + CC: Warning: failed to detect system linker version, falling back to + custom linker usage + + And the build will fail. One can overcome this error by either + setting LD_LIBRARY_PATH to the location of the 32 bit libraries (most + likely /lib32), or giving LDFLAGS="-L/lib32 -R/lib32" to the configure + command. Officially, Solaris Studio is not supported on Ubuntu Linux + distributions, so additional problems might be incurred. + +- Open MPI does not support the gccfss compiler (GCC For SPARC + Systems; a now-defunct compiler project from Sun). + +- At least some versions of the Intel 8.1 compiler seg fault while + compiling certain Open MPI source code files. As such, it is not + supported. + +- The Intel 9.0 v20051201 compiler on IA64 platforms seems to have a + problem with optimizing the ptmalloc2 memory manager component (the + generated code will segv). As such, the ptmalloc2 component will + automatically disable itself if it detects that it is on this + platform/compiler combination. The only effect that this should + have is that the MCA parameter mpi_leave_pinned will be inoperative. + +- It has been reported that the Intel 9.1 and 10.0 compilers fail to + compile Open MPI on IA64 platforms. As of 12 Sep 2012, there is + very little (if any) testing performed on IA64 platforms (with any + compiler). Support is "best effort" for these platforms, but it is + doubtful that any effort will be expended to fix the Intel 9.1 / + 10.0 compiler issuers on this platform. + +- Early versions of the Intel 12.1 Linux compiler suite on x86_64 seem + to have a bug that prevents Open MPI from working. Symptoms + including immediate segv of the wrapper compilers (e.g., mpicc) and + MPI applications. As of 1 Feb 2012, if you upgrade to the latest + version of the Intel 12.1 Linux compiler suite, the problem will go + away. + +- It has been reported that Pathscale 5.0.5 and 6.0.527 compilers + give an internal compiler error when trying to Open MPI. + +- Early versions of the Portland Group 6.0 compiler have problems + creating the C++ MPI bindings as a shared library (e.g., v6.0-1). + Tests with later versions show that this has been fixed (e.g., + v6.0-5). + +- The Portland Group compilers prior to version 7.0 require the + "-Msignextend" compiler flag to extend the sign bit when converting + from a shorter to longer integer. This is is different than other + compilers (such as GNU). When compiling Open MPI with the Portland + compiler suite, the following flags should be passed to Open MPI's + configure script: + + shell$ ./configure CFLAGS=-Msignextend CXXFLAGS=-Msignextend \ + --with-wrapper-cflags=-Msignextend \ + --with-wrapper-cxxflags=-Msignextend ... + + This will both compile Open MPI with the proper compile flags and + also automatically add "-Msignextend" when the C and C++ MPI wrapper + compilers are used to compile user MPI applications. + +- Using the MPI C++ bindings with older versions of the Pathscale + compiler on some platforms is an old issue that seems to be a + problem when Pathscale uses a back-end GCC 3.x compiler. Here's a + proposed solution from the Pathscale support team (from July 2010): + + The proposed work-around is to install gcc-4.x on the system and + use the pathCC -gnu4 option. Newer versions of the compiler (4.x + and beyond) should have this fixed, but we'll have to test to + confirm it's actually fixed and working correctly. + + We don't anticipate that this will be much of a problem for Open MPI + users these days (our informal testing shows that not many users are + still using GCC 3.x). Contact Pathscale support if you continue to + have problems with Open MPI's C++ bindings. + + Note the MPI C++ bindings have been deprecated by the MPI Forum and + may not be supported in future releases. + +- Using the Absoft compiler to build the MPI Fortran bindings on Suse + 9.3 is known to fail due to a Libtool compatibility issue. + +- MPI Fortran API support has been completely overhauled since the + Open MPI v1.5/v1.6 series. + + ******************************************************************** + ******************************************************************** + *** There is now only a single Fortran MPI wrapper compiler and a + *** single Fortran OpenSHMEM wrapper compiler: mpifort and oshfort, + *** respectively. mpif77 and mpif90 still exist, but they are + *** symbolic links to mpifort. + ******************************************************************** + *** Similarly, Open MPI's configure script only recognizes the FC + *** and FCFLAGS environment variables (to specify the Fortran + *** compiler and compiler flags, respectively). The F77 and FFLAGS + *** environment variables are IGNORED. + ******************************************************************** + ******************************************************************** + + As a direct result, it is STRONGLY recommended that you specify a + Fortran compiler that uses file suffixes to determine Fortran code + layout (e.g., free form vs. fixed). For example, with some versions + of the IBM XLF compiler, it is preferable to use FC=xlf instead of + FC=xlf90, because xlf will automatically determine the difference + between free form and fixed Fortran source code. + + However, many Fortran compilers allow specifying additional + command-line arguments to indicate which Fortran dialect to use. + For example, if FC=xlf90, you may need to use "mpifort --qfixed ..." + to compile fixed format Fortran source files. + + You can use either ompi_info or oshmem_info to see with which Fortran + compiler Open MPI was configured and compiled. + + There are up to three sets of Fortran MPI bindings that may be + provided depending on your Fortran compiler): + + - mpif.h: This is the first MPI Fortran interface that was defined + in MPI-1. It is a file that is included in Fortran source code. + Open MPI's mpif.h does not declare any MPI subroutines; they are + all implicit. + + - mpi module: The mpi module file was added in MPI-2. It provides + strong compile-time parameter type checking for MPI subroutines. + + - mpi_f08 module: The mpi_f08 module was added in MPI-3. It + provides many advantages over the mpif.h file and mpi module. For + example, MPI handles have distinct types (vs. all being integers). + See the MPI-3 document for more details. + + *** The mpi_f08 module is STRONGLY is recommended for all new MPI + Fortran subroutines and applications. Note that the mpi_f08 + module can be used in conjunction with the other two Fortran + MPI bindings in the same application (only one binding can be + used per subroutine/function, however). Full interoperability + between mpif.h/mpi module and mpi_f08 module MPI handle types + is provided, allowing mpi_f08 to be used in new subroutines in + legacy MPI applications. + + Per the OpenSHMEM specification, there is only one Fortran OpenSHMEM + binding provided: + + - shmem.fh: All Fortran OpenSHMEM programs **should** include + 'shmem.fh', and Fortran OpenSHMEM programs that use constants + defined by OpenSHMEM **MUST** include 'shmem.fh'. + + The following notes apply to the above-listed Fortran bindings: + + - All Fortran compilers support the mpif.h/shmem.fh-based bindings, + with one exception: the MPI_SIZEOF interfaces will only be present + when Open MPI is built with a Fortran compiler that support the + INTERFACE keyword and ISO_FORTRAN_ENV. Most notably, this + excludes the GNU Fortran compiler suite before version 4.9. + + - The level of support provided by the mpi module is based on your + Fortran compiler. + + If Open MPI is built with a non-GNU Fortran compiler, or if Open + MPI is built with the GNU Fortran compiler >= v4.9, all MPI + subroutines will be prototyped in the mpi module. All calls to + MPI subroutines will therefore have their parameter types checked + at compile time. + + If Open MPI is built with an old gfortran (i.e., < v4.9), a + limited "mpi" module will be built. Due to the limitations of + these compilers, and per guidance from the MPI-3 specification, + all MPI subroutines with "choice" buffers are specifically *not* + included in the "mpi" module, and their parameters will not be + checked at compile time. Specifically, all MPI subroutines with + no "choice" buffers are prototyped and will receive strong + parameter type checking at run-time (e.g., MPI_INIT, + MPI_COMM_RANK, etc.). + + Similar to the mpif.h interface, MPI_SIZEOF is only supported on + Fortran compilers that support INTERFACE and ISO_FORTRAN_ENV. + + - The mpi_f08 module has been tested with the Intel Fortran compiler + and gfortran >= 4.9. Other modern Fortran compilers likely also + work. + + Many older Fortran compilers do not provide enough modern Fortran + features to support the mpi_f08 module. For example, gfortran < + v4.9 does provide enough support for the mpi_f08 module. + + You can examine the output of the following command to see all + the Fortran features that are/are not enabled in your Open MPI + installation: + + shell$ ompi_info | grep -i fort + + +General Run-Time Support Notes +------------------------------ + +- The Open MPI installation must be in your PATH on all nodes (and + potentially LD_LIBRARY_PATH (or DYLD_LIBRARY_PATH), if libmpi/libshmem + is a shared library), unless using the --prefix or + --enable-mpirun-prefix-by-default functionality (see below). + +- Open MPI's run-time behavior can be customized via MPI Component + Architecture (MCA) parameters (see below for more information on how + to get/set MCA parameter values). Some MCA parameters can be set in + a way that renders Open MPI inoperable (see notes about MCA + parameters later in this file). In particular, some parameters have + required options that must be included. + + - If specified, the "btl" parameter must include the "self" + component, or Open MPI will not be able to deliver messages to the + same rank as the sender. For example: "mpirun --mca btl tcp,self + ..." + - If specified, the "btl_tcp_if_exclude" parameter must include the + loopback device ("lo" on many Linux platforms), or Open MPI will + not be able to route MPI messages using the TCP BTL. For example: + "mpirun --mca btl_tcp_if_exclude lo,eth1 ..." + +- Running on nodes with different endian and/or different datatype + sizes within a single parallel job is supported in this release. + However, Open MPI does not resize data when datatypes differ in size + (for example, sending a 4 byte MPI_DOUBLE and receiving an 8 byte + MPI_DOUBLE will fail). + + +MPI Functionality and Features +------------------------------ + +- All MPI-3 functionality is supported. + +- Rank reordering support is available using the TreeMatch library. It + is activated for the graph and dist_graph topologies. + +- When using MPI deprecated functions, some compilers will emit + warnings. For example: + + shell$ cat deprecated_example.c + #include + void foo(void) { + MPI_Datatype type; + MPI_Type_struct(1, NULL, NULL, NULL, &type); + } + shell$ mpicc -c deprecated_example.c + deprecated_example.c: In function 'foo': + deprecated_example.c:4: warning: 'MPI_Type_struct' is deprecated (declared at /opt/openmpi/include/mpi.h:1522) + shell$ + +- MPI_THREAD_MULTIPLE is supported with some exceptions. Note that + Open MPI must be configured with --enable-mpi-thread-multiple to get + this level of thread safety support. + + The following PMLs support MPI_THREAD_MULTIPLE: + - cm (see list (1) of supported MTLs, below) + - ob1 (see list (2) of supported BTLs, below) + - ucx + - yalla + + (1) The cm PML and the following MTLs support MPI_THREAD_MULTIPLE: + - MXM + - ofi (Libfabric) + - portals4 + + (2) The ob1 PML and the following BTLs support MPI_THREAD_MULTIPLE: + - openib (see exception below) + - self + - sm + - smcuda + - tcp + - ugni + - usnic + - vader (shared memory) + + The openib BTL's RDMACM based connection setup mechanism is also not + thread safe. The default UDCM method should be used for + applications requiring MPI_THREAD_MULTIPLE support. + + Currently, MPI File operations are not thread safe even if MPI is + initialized for MPI_THREAD_MULTIPLE support. + +- MPI_REAL16 and MPI_COMPLEX32 are only supported on platforms where a + portable C datatype can be found that matches the Fortran type + REAL*16, both in size and bit representation. + +- The "libompitrace" library is bundled in Open MPI and is installed + by default (it can be disabled via the --disable-libompitrace + flag). This library provides a simplistic tracing of select MPI + function calls via the MPI profiling interface. Linking it in to + your application via (e.g., via -lompitrace) will automatically + output to stderr when some MPI functions are invoked: + + shell$ cd examples/ + shell$ mpicc hello_c.c -o hello_c -lompitrace + shell$ mpirun -np 1 hello_c + MPI_INIT: argc 1 + Hello, world, I am 0 of 1 + MPI_BARRIER[0]: comm MPI_COMM_WORLD + MPI_FINALIZE[0] + shell$ + + Keep in mind that the output from the trace library is going to + stderr, so it may output in a slightly different order than the + stdout from your application. + + This library is being offered as a "proof of concept" / convenience + from Open MPI. If there is interest, it is trivially easy to extend + it to printf for other MPI functions. Pull requests on github.com + would be greatly appreciated. + +OpenSHMEM Functionality and Features +------------------------------------ + +- All OpenSHMEM-1.3 functionality is supported. + + +MPI Collectives +--------------- + +- The "fca" coll component: the Mellanox Fabric Collective Accelerator + (FCA) is a solution for offloading collective operations from the + MPI process onto Mellanox QDR InfiniBand switch CPUs and HCAs. + +- The "cuda" coll component provides CUDA-aware support for the + reduction type collectives with GPU buffers. This component is only + compiled into the library when the library has been configured with + CUDA-aware support. It intercepts calls to the reduction + collectives, copies the data to staging buffers if GPU buffers, then + calls underlying collectives to do the work. + +OpenSHMEM Collectives +--------------------- + +- The "fca" scoll component: the Mellanox Fabric Collective + Accelerator (FCA) is a solution for offloading collective operations + from the MPI process onto Mellanox QDR InfiniBand switch CPUs and + HCAs. + +- The "basic" scoll component: Reference implementation of all + OpenSHMEM collective operations. + + +Network Support +--------------- + +- There are four main MPI network models available: "ob1", "cm", + "yalla", and "ucx". "ob1" uses BTL ("Byte Transfer Layer") + components for each supported network. "cm" uses MTL ("Matching + Tranport Layer") components for each supported network. "yalla" + uses the Mellanox MXM transport. "ucx" uses the OpenUCX transport. + + - "ob1" supports a variety of networks that can be used in + combination with each other: + + - OpenFabrics: InfiniBand, iWARP, and RoCE + - Loopback (send-to-self) + - Shared memory + - TCP + - Intel Phi SCIF + - SMCUDA + - Cisco usNIC + - uGNI (Cray Gemini, Aries) + - vader (XPMEM, Linux CMA, Linux KNEM, and copy-in/copy-out shared + memory) + + - "cm" supports a smaller number of networks (and they cannot be + used together), but may provide better overall MPI performance: + + - Intel Omni-Path PSM2 + - Intel True Scale PSM (QLogic InfiniPath) + - OpenFabrics Interfaces ("libfabric" tag matching) + - Portals 4 + + Open MPI will, by default, choose to use "cm" when one of the + above transports can be used, unless OpenUCX or MXM support is + detected, in which case the "ucx" or "yalla" PML will be used + by default. Otherwise, "ob1" will be used and the corresponding + BTLs will be selected. Users can force the use of ob1 or cm if + desired by setting the "pml" MCA parameter at run-time: + + shell$ mpirun --mca pml ob1 ... + or + shell$ mpirun --mca pml cm ... + +- Similarly, there are two OpenSHMEM network models available: "ucx", + and "ikrit": + - "ucx" interfaces directly with UCX; + - "ikrit" interfaces directly with Mellanox MXM. + +- UCX is the Unified Communication X (UCX) communication library + (http://www.openucx.org/). + This is an open-source project developed in collaboration between + industry, laboratories, and academia to create an open-source + production grade communication framework for data centric and + high-performance applications. + UCX currently supports: + - OFA Verbs; + - Cray's uGNI; + - NVIDIA CUDA drivers. + +- MXM is the Mellanox Messaging Accelerator library utilizing a full + range of IB transports to provide the following messaging services + to the upper level MPI/OpenSHMEM libraries: + + - Usage of all available IB transports + - Native RDMA support + - Progress thread + - Shared memory communication + - Hardware-assisted reliability + +- The usnic BTL is support for Cisco's usNIC device ("userspace NIC") + on Cisco UCS servers with the Virtualized Interface Card (VIC). + Although the usNIC is accessed via the OpenFabrics Libfabric API + stack, this BTL is specific to Cisco usNIC devices. + +- uGNI is a Cray library for communicating over the Gemini and Aries + interconnects. + +- The OpenFabrics Enterprise Distribution (OFED) software package v1.0 + will not work properly with Open MPI v1.2 (and later) due to how its + Mellanox InfiniBand plugin driver is created. The problem is fixed + OFED v1.1 (and later). + +- Better memory management support is available for OFED-based + transports using the "ummunotify" Linux kernel module. OFED memory + managers are necessary for better bandwidth when re-using the same + buffers for large messages (e.g., benchmarks and some applications). + + Unfortunately, the ummunotify module was not accepted by the Linux + kernel community (and is still not distributed by OFED). But it + still remains the best memory management solution for MPI + applications that used the OFED network transports. If Open MPI is + able to find the header file, it will build + support for ummunotify and include it by default. If MPI processes + then find the ummunotify kernel module loaded and active, then their + memory managers (which have been shown to be problematic in some + cases) will be disabled and ummunotify will be used. Otherwise, the + same memory managers from prior versions of Open MPI will be used. + The ummunotify Linux kernel module can be downloaded from: + + http://lwn.net/Articles/343351/ + +- The use of fork() with OpenFabrics-based networks (i.e., the openib + BTL) is only partially supported, and only on Linux kernels >= + v2.6.15 with libibverbs v1.1 or later (first released as part of + OFED v1.2), per restrictions imposed by the OFED network stack. + +- Linux "knem" support is used when the "vader" or "sm" (shared + memory) BTLs are compiled with knem support (see the --with-knem + configure option) and the knem Linux module is loaded in the running + kernel. If the knem Linux kernel module is not loaded, the knem + support is (by default) silently deactivated during Open MPI jobs. + + See http://runtime.bordeaux.inria.fr/knem/ for details on Knem. + +- Linux Cross-Memory Attach (CMA) or XPMEM is used by the vader + shared-memory BTL when the CMA/XPMEM libraries are installedm, + respectively. Linux CMA and XPMEM are similar (but different) + mechanisms for Open MPI to utilize single-copy semantics for shared + memory. + +Open MPI Extensions +------------------- + +- An MPI "extensions" framework is included in Open MPI, but is not + enabled by default. See the "Open MPI API Extensions" section below + for more information on compiling and using MPI extensions. + +- The following extensions are included in this version of Open MPI: + + - affinity: Provides the OMPI_Affinity_str() routine on retrieving + a string that contains what resources a process is bound to. See + its man page for more details. + - cr: Provides routines to access to checkpoint restart routines. + See ompi/mpiext/cr/mpiext_cr_c.h for a listing of available + functions. + - cuda: When the library is compiled with CUDA-aware support, it + provides two things. First, a macro + MPIX_CUDA_AWARE_SUPPORT. Secondly, the function + MPIX_Query_cuda_support that can be used to query for support. + - example: A non-functional extension; its only purpose is to + provide an example for how to create other extensions. + +=========================================================================== + +Building Open MPI +----------------- + +Open MPI uses a traditional configure script paired with "make" to +build. Typical installs can be of the pattern: + +shell$ ./configure [...options...] +shell$ make [-j N] all install + (use an integer value of N for parallel builds) + +There are many available configure options (see "./configure --help" +for a full list); a summary of the more commonly used ones is included +below. + +Note that for many of Open MPI's --with- options, Open MPI will, +by default, search for header files and/or libraries for . If +the relevant files are found, Open MPI will built support for ; +if they are not found, Open MPI will skip building support for . +However, if you specify --with- on the configure command line and +Open MPI is unable to find relevant support for , configure will +assume that it was unable to provide a feature that was specifically +requested and will abort so that a human can resolve out the issue. + +INSTALLATION OPTIONS + +--prefix= + Install Open MPI into the base directory named . Hence, + Open MPI will place its executables in /bin, its header + files in /include, its libraries in /lib, etc. + +--disable-shared + By default, Open MPI and OpenSHMEM build shared libraries, and all + components are built as dynamic shared objects (DSOs). This switch + disables this default; it is really only useful when used with + --enable-static. Specifically, this option does *not* imply + --enable-static; enabling static libraries and disabling shared + libraries are two independent options. + +--enable-static + Build MPI and OpenSHMEM as static libraries, and statically link in + all components. Note that this option does *not* imply + --disable-shared; enabling static libraries and disabling shared + libraries are two independent options. + + Be sure to read the description of --without-memory-manager, below; + it may have some effect on --enable-static. + +--disable-wrapper-rpath + By default, the wrapper compilers (e.g., mpicc) will enable "rpath" + support in generated executables on systems that support it. That + is, they will include a file reference to the location of Open MPI's + libraries in the application executable itself. This means that + the user does not have to set LD_LIBRARY_PATH to find Open MPI's + libraries (e.g., if they are installed in a location that the + run-time linker does not search by default). + + On systems that utilize the GNU ld linker, recent enough versions + will actually utilize "runpath" functionality, not "rpath". There + is an important difference between the two: + + "rpath": the location of the Open MPI libraries is hard-coded into + the MPI/OpenSHMEM application and cannot be overridden at + run-time. + "runpath": the location of the Open MPI libraries is hard-coded into + the MPI/OpenSHMEM application, but can be overridden at run-time + by setting the LD_LIBRARY_PATH environment variable. + + For example, consider that you install Open MPI vA.B.0 and + compile/link your MPI/OpenSHMEM application against it. Later, you + install Open MPI vA.B.1 to a different installation prefix (e.g., + /opt/openmpi/A.B.1 vs. /opt/openmpi/A.B.0), and you leave the old + installation intact. + + In the rpath case, your MPI application will always use the + libraries from your A.B.0 installation. In the runpath case, you + can set the LD_LIBRARY_PATH environment variable to point to the + A.B.1 installation, and then your MPI application will use those + libraries. + + Note that in both cases, however, if you remove the original A.B.0 + installation and set LD_LIBRARY_PATH to point to the A.B.1 + installation, your application will use the A.B.1 libraries. + + This rpath/runpath behavior can be disabled via + --disable-wrapper-rpath. + +--enable-dlopen + Build all of Open MPI's components as standalone Dynamic Shared + Objects (DSO's) that are loaded at run-time (this is the default). + The opposite of this option, --disable-dlopen, causes two things: + + 1. All of Open MPI's components will be built as part of Open MPI's + normal libraries (e.g., libmpi). + 2. Open MPI will not attempt to open any DSO's at run-time. + + Note that this option does *not* imply that OMPI's libraries will be + built as static objects (e.g., libmpi.a). It only specifies the + location of OMPI's components: standalone DSOs or folded into the + Open MPI libraries. You can control whether Open MPI's libraries + are build as static or dynamic via --enable|disable-static and + --enable|disable-shared. + +--disable-show-load-errors-by-default + Set the default value of the mca_base_component_show_load_errors MCA + variable: the --enable form of this option sets the MCA variable to + true, the --disable form sets the MCA variable to false. The MCA + mca_base_component_show_load_errors variable can still be overridden + at run time via the usual MCA-variable-setting mechanisms; this + configure option simply sets the default value. + + The --disable form of this option is intended for Open MPI packagers + who tend to enable support for many different types of networks and + systems in their packages. For example, consider a packager who + includes support for both the FOO and BAR networks in their Open MPI + package, both of which require support libraries (libFOO.so and + libBAR.so). If an end user only has BAR hardware, they likely only + have libBAR.so available on their systems -- not libFOO.so. + Disabling load errors by default will prevent the user from seeing + potentially confusing warnings about the FOO components failing to + load because libFOO.so is not available on their systems. + + Conversely, system administrators tend to build an Open MPI that is + targeted at their specific environment, and contains few (if any) + components that are not needed. In such cases, they might want + their users to be warned that the FOO network components failed to + load (e.g., if libFOO.so was mistakenly unavailable), because Open + MPI may otherwise silently failover to a slower network path for MPI + traffic. + +--with-platform=FILE + Load configure options for the build from FILE. Options on the + command line that are not in FILE are also used. Options on the + command line and in FILE are replaced by what is in FILE. + +--with-libmpi-name=STRING + Replace libmpi.* and libmpi_FOO.* (where FOO is one of the fortran + supporting libraries installed in lib) with libSTRING.* and + libSTRING_FOO.*. This is provided as a convenience mechanism for + third-party packagers of Open MPI that might want to rename these + libraries for their own purposes. This option is *not* intended for + typical users of Open MPI. + +--enable-mca-no-build=LIST + Comma-separated list of - pairs that will not be + built. For example, "--enable-mca-no-build=btl-portals,oob-ud" will + disable building the portals BTL and the ud OOB component. + +NETWORKING SUPPORT / OPTIONS + +--with-fca= + Specify the directory where the Mellanox FCA library and + header files are located. + + FCA is the support library for Mellanox switches and HCAs. + +--with-hcoll= + Specify the directory where the Mellanox hcoll library and header + files are located. This option is generally only necessary if the + hcoll headers and libraries are not in default compiler/linker + search paths. + + hcoll is the support library for MPI collective operation offload on + Mellanox ConnectX-3 HCAs (and later). + +--with-knem= + Specify the directory where the knem libraries and header files are + located. This option is generally only necessary if the knem headers + and libraries are not in default compiler/linker search paths. + + knem is a Linux kernel module that allows direct process-to-process + memory copies (optionally using hardware offload), potentially + increasing bandwidth for large messages sent between messages on the + same server. See http://runtime.bordeaux.inria.fr/knem/ for + details. + +--with-libfabric= + Specify the directory where the OpenFabrics Interfaces libfabric + library and header files are located. This option is generally only + necessary if the libfabric headers and libraries are not in default + compiler/linker search paths. + + Libfabric is the support library for OpenFabrics Interfaces-based + network adapters, such as Cisco usNIC, Intel True Scale PSM, Cray + uGNI, etc. + +--with-libfabric-libdir= + Look in directory for the libfabric libraries. By default, Open MPI + will look in /lib and /lib64, which covers most cases. This option is only + needed for special configurations. + +--with-mxm= + Specify the directory where the Mellanox MXM library and header + files are located. This option is generally only necessary if the + MXM headers and libraries are not in default compiler/linker search + paths. + + MXM is the support library for Mellanox Network adapters. + +--with-mxm-libdir= + Look in directory for the MXM libraries. By default, Open MPI will + look in /lib and /lib64, which covers + most cases. This option is only needed for special configurations. + +--with-portals4= + Specify the directory where the Portals4 libraries and header files + are located. This option is generally only necessary if the Portals4 + headers and libraries are not in default compiler/linker search + paths. + + Portals is a low-level network API for high-performance networking + on high-performance computing systems developed by Sandia National + Laboratories, Intel Corporation, and the University of New Mexico. + The Portals 4 Reference Implementation is a complete implementation + of Portals 4, with transport over InfiniBand verbs and UDP. + +--with-portals4-libdir= + Location of libraries to link with for Portals4 support. + +--with-portals4-max-md-size=SIZE +--with-portals4-max-va-size=SIZE + Set configuration values for Portals 4 + +--with-psm= + Specify the directory where the QLogic InfiniPath / Intel True Scale + PSM library and header files are located. This option is generally + only necessary if the PSM headers and libraries are not in default + compiler/linker search paths. + + PSM is the support library for QLogic InfiniPath and Intel TrueScale + network adapters. + +--with-psm-libdir= + Look in directory for the PSM libraries. By default, Open MPI will + look in /lib and /lib64, which covers + most cases. This option is only needed for special configurations. + +--with-psm2= + Specify the directory where the Intel Omni-Path PSM2 library and + header files are located. This option is generally only necessary + if the PSM2 headers and libraries are not in default compiler/linker + search paths. + + PSM is the support library for Intel Omni-Path network adapters. + +--with-psm2-libdir= + Look in directory for the PSM2 libraries. By default, Open MPI will + look in /lib and /lib64, which + covers most cases. This option is only needed for special + configurations. + +--with-scif= + Look in directory for Intel SCIF support libraries + +--with-verbs= + Specify the directory where the verbs (also known as OpenFabrics + verbs, or Linux verbs, and previously known as OpenIB) libraries and + header files are located. This option is generally only necessary + if the verbs headers and libraries are not in default + compiler/linker search paths. + + The Verbs library usually implies operating system bypass networks, + such as InfiniBand, usNIC, iWARP, and RoCE (aka "IBoIP"). + +--with-verbs-libdir= + Look in directory for the verbs libraries. By default, Open MPI + will look in /lib and /lib64, + which covers most cases. This option is only needed for special + configurations. + +--with-verbs-usnic + This option will activate support in Open MPI for disabling a + dire-sounding warning message from libibverbs that Cisco usNIC + devices are not supported (because Cisco usNIC devices are supported + through libfabric, not libibverbs). This libibverbs warning can + also be suppressed by installing the "no op" libusnic_verbs plugin + for libibverbs (see https://github.com/cisco/libusnic_verbs, or + download binaries from cisco.com). This option is disabled by + default because it causes libopen-pal.so to depend on libibverbs.so, + which is undesirable to many downstream packagers. + +--with-usnic + Abort configure if Cisco usNIC support cannot be built. + +RUN-TIME SYSTEM SUPPORT + +--enable-mpirun-prefix-by-default + This option forces the "mpirun" command to always behave as if + "--prefix $prefix" was present on the command line (where $prefix is + the value given to the --prefix option to configure). This prevents + most rsh/ssh-based users from needing to modify their shell startup + files to set the PATH and/or LD_LIBRARY_PATH for Open MPI on remote + nodes. Note, however, that such users may still desire to set PATH + -- perhaps even in their shell startup files -- so that executables + such as mpicc and mpirun can be found without needing to type long + path names. --enable-orterun-prefix-by-default is a synonym for + this option. + +--enable-orte-static-ports + Enable orte static ports for tcp oob (default: enabled). + +--with-alps + Force the building of for the Cray Alps run-time environment. If + Alps support cannot be found, configure will abort. + +--with-loadleveler + Force the building of LoadLeveler scheduler support. If LoadLeveler + support cannot be found, configure will abort. + +--with-lsf= + Specify the directory where the LSF libraries and header files are + located. This option is generally only necessary if the LSF headers + and libraries are not in default compiler/linker search paths. + + LSF is a resource manager system, frequently used as a batch + scheduler in HPC systems. + + NOTE: If you are using LSF version 7.0.5, you will need to add + "LIBS=-ldl" to the configure command line. For example: + + ./configure LIBS=-ldl --with-lsf ... + + This workaround should *only* be needed for LSF 7.0.5. + +--with-lsf-libdir= + Look in directory for the LSF libraries. By default, Open MPI will + look in /lib and /lib64, which covers + most cases. This option is only needed for special configurations. + +--with-pmi + Build PMI support (by default on non-Cray XE/XC systems, it is not + built). On Cray XE/XC systems, the location of pmi is detected + automatically as part of the configure process. For non-Cray + systems, if the pmi2.h header is found in addition to pmi.h, then + support for PMI2 will be built. + +--with-slurm + Force the building of SLURM scheduler support. + +--with-sge + Specify to build support for the Oracle Grid Engine (OGE) resource + manager and/or the Open Grid Engine. OGE support is disabled by + default; this option must be specified to build OMPI's OGE support. + + The Oracle Grid Engine (OGE) and open Grid Engine packages are + resource manager systems, frequently used as a batch scheduler in + HPC systems. + +--with-tm= + Specify the directory where the TM libraries and header files are + located. This option is generally only necessary if the TM headers + and libraries are not in default compiler/linker search paths. + + TM is the support library for the Torque and PBS Pro resource + manager systems, both of which are frequently used as a batch + scheduler in HPC systems. + +MISCELLANEOUS SUPPORT LIBRARIES + +--with-blcr= + Specify the directory where the Berkeley Labs Checkpoint / Restart + (BLCR) libraries and header files are located. This option is + generally only necessary if the BLCR headers and libraries are not + in default compiler/linker search paths. + + This option is only meaningful if the --with-ft option is also used + to active Open MPI's fault tolerance behavior. + +--with-blcr-libdir= + Look in directory for the BLCR libraries. By default, Open MPI will + look in /lib and /lib64, which + covers most cases. This option is only needed for special + configurations. + +--with-dmtcp= + Specify the directory where the Distributed MultiThreaded + Checkpointing (DMTCP) libraries and header files are located. This + option is generally only necessary if the DMTCP headers and + libraries are not in default compiler/linker search paths. + + This option is only meaningful if the --with-ft option is also used + to active Open MPI's fault tolerance behavior. + +--with-dmtcp-libdir= + Look in directory for the DMTCP libraries. By default, Open MPI + will look in /lib and /lib64, + which covers most cases. This option is only needed for special + configurations. + +--with-libevent(=value) + This option specifies where to find the libevent support headers and + library. The following VALUEs are permitted: + + internal: Use Open MPI's internal copy of libevent. + external: Use an external libevent installation (rely on default + compiler and linker paths to find it) + : Same as "internal". + : Specify the location of a specific libevent + installation to use + + By default (or if --with-libevent is specified with no VALUE), Open + MPI will build and use the copy of libevent that it has in its + source tree. However, if the VALUE is "external", Open MPI will + look for the relevant libevent header file and library in default + compiler / linker locations. Or, VALUE can be a directory tree + where the libevent header file and library can be found. This + option allows operating systems to include Open MPI and use their + default libevent installation instead of Open MPI's bundled libevent. + + libevent is a support library that provides event-based processing, + timers, and signal handlers. Open MPI requires libevent to build; + passing --without-libevent will cause configure to abort. + +--with-libevent-libdir= + Look in directory for the libevent libraries. This option is only + usable when building Open MPI against an external libevent + installation. Just like other --with-FOO-libdir configure options, + this option is only needed for special configurations. + +--with-hwloc(=value) + Build hwloc support (default: enabled). This option specifies where + to find the hwloc support headers and library. The following values + are permitted: + + internal: Use Open MPI's internal copy of hwloc. + external: Use an external hwloc installation (rely on default + compiler and linker paths to find it) + : Same as "internal". + : Specify the location of a specific hwloc + installation to use + + By default (or if --with-hwloc is specified with no VALUE), Open MPI + will build and use the copy of hwloc that it has in its source tree. + However, if the VALUE is "external", Open MPI will look for the + relevant hwloc header files and library in default compiler / linker + locations. Or, VALUE can be a directory tree where the hwloc header + file and library can be found. This option allows operating systems + to include Open MPI and use their default hwloc installation instead + of Open MPI's bundled hwloc. + + hwloc is a support library that provides processor and memory + affinity information for NUMA platforms. + +--with-hwloc-libdir= + Look in directory for the hwloc libraries. This option is only + usable when building Open MPI against an external hwloc + installation. Just like other --with-FOO-libdir configure options, + this option is only needed for special configurations. + +--disable-hwloc-pci + Disable building hwloc's PCI device-sensing capabilities. On some + platforms (e.g., SusE 10 SP1, x86-64), the libpci support library is + broken. Open MPI's configure script should usually detect when + libpci is not usable due to such brokenness and turn off PCI + support, but there may be cases when configure mistakenly enables + PCI support in the presence of a broken libpci. These cases may + result in "make" failing with warnings about relocation symbols in + libpci. The --disable-hwloc-pci switch can be used to force Open + MPI to not build hwloc's PCI device-sensing capabilities in these + cases. + + Similarly, if Open MPI incorrectly decides that libpci is broken, + you can force Open MPI to build hwloc's PCI device-sensing + capabilities by using --enable-hwloc-pci. + + hwloc can discover PCI devices and locality, which can be useful for + Open MPI in assigning message passing resources to MPI processes. + +--with-libltdl= + Specify the directory where the GNU Libtool libltdl libraries and + header files are located. This option is generally only necessary + if the libltdl headers and libraries are not in default + compiler/linker search paths. + + Note that this option is ignored if --disable-dlopen is specified. + +--disable-libompitrace + Disable building the simple "libompitrace" library (see note above + about libompitrace) + +--with-valgrind(=) + Directory where the valgrind software is installed. If Open MPI + finds Valgrind's header files, it will include additional support + for Valgrind's memory-checking debugger. + + Specifically, it will eliminate a lot of false positives from + running Valgrind on MPI applications. There is a minor performance + penalty for enabling this option. + +MPI FUNCTIONALITY + +--with-mpi-param-check(=value) + Whether or not to check MPI function parameters for errors at + runtime. The following values are permitted: + + always: MPI function parameters are always checked for errors + never: MPI function parameters are never checked for errors + runtime: Whether MPI function parameters are checked depends on + the value of the MCA parameter mpi_param_check (default: + yes). + yes: Synonym for "always" (same as --with-mpi-param-check). + no: Synonym for "none" (same as --without-mpi-param-check). + + If --with-mpi-param is not specified, "runtime" is the default. + +--disable-mpi-thread-multiple + Disable the MPI thread level MPI_THREAD_MULTIPLE (it is enabled by + default). + +--enable-mpi-cxx + Enable building the C++ MPI bindings (default: disabled). + + The MPI C++ bindings were deprecated in MPI-2.2, and removed from + the MPI standard in MPI-3.0. + +--enable-mpi-java + Enable building of an EXPERIMENTAL Java MPI interface (disabled by + default). You may also need to specify --with-jdk-dir, + --with-jdk-bindir, and/or --with-jdk-headers. See README.JAVA.txt + for details. + + Note that this Java interface is INCOMPLETE (meaning: it does not + support all MPI functionality) and LIKELY TO CHANGE. The Open MPI + developers would very much like to hear your feedback about this + interface. See README.JAVA.txt for more details. + +--enable-mpi-fortran(=value) + By default, Open MPI will attempt to build all 3 Fortran bindings: + mpif.h, the "mpi" module, and the "mpi_f08" module. The following + values are permitted: + + all: Synonym for "yes". + yes: Attempt to build all 3 Fortran bindings; skip + any binding that cannot be built (same as + --enable-mpi-fortran). + mpifh: Build mpif.h support. + usempi: Build mpif.h and "mpi" module support. + usempif08: Build mpif.h, "mpi" module, and "mpi_f08" + module support. + none: Synonym for "no". + no: Do not build any MPI Fortran support (same as + --disable-mpi-fortran). This is mutually exclusive + with building the OpenSHMEM Fortran interface. + +--enable-mpi-ext(=) + Enable Open MPI's non-portable API extensions. If no is + specified, all of the extensions are enabled. + + See "Open MPI API Extensions", below, for more details. + +--disable-mpi-io + Disable built-in support for MPI-2 I/O, likely because an + externally-provided MPI I/O package will be used. Default is to use + the internal framework system that uses the ompio component and a + specially modified version of ROMIO that fits inside the romio + component + +--disable-io-romio + Disable the ROMIO MPI-IO component + +--with-io-romio-flags=flags + Pass flags to the ROMIO distribution configuration script. This + option is usually only necessary to pass + parallel-filesystem-specific preprocessor/compiler/linker flags back + to the ROMIO system. + +--disable-io-ompio + Disable the ompio MPI-IO component + +--enable-sparse-groups + Enable the usage of sparse groups. This would save memory + significantly especially if you are creating large + communicators. (Disabled by default) + +OPENSHMEM FUNCTIONALITY + +--disable-oshmem + Disable building the OpenSHMEM implementation (by default, it is + enabled). + +--disable-oshmem-fortran + Disable building only the Fortran OpenSHMEM bindings. Please see + the "Compiler Notes" section herein which contains further + details on known issues with various Fortran compilers. + +MISCELLANEOUS FUNCTIONALITY + +--without-memory-manager + Disable building Open MPI's memory manager. Open MPI's memory + manager is usually built on Linux based platforms, and is generally + only used for optimizations with some OpenFabrics-based networks (it + is not *necessary* for OpenFabrics networks, but some performance + loss may be observed without it). + + However, it may be necessary to disable the memory manager in order + to build Open MPI statically. + +--with-ft=TYPE + Specify the type of fault tolerance to enable. Options: LAM + (LAM/MPI-like), cr (Checkpoint/Restart). Fault tolerance support is + disabled unless this option is specified. + +--enable-peruse + Enable the PERUSE MPI data analysis interface. + +--enable-heterogeneous + Enable support for running on heterogeneous clusters (e.g., machines + with different endian representations). Heterogeneous support is + disabled by default because it imposes a minor performance penalty. + + *** THIS FUNCTIONALITY IS CURRENTLY BROKEN - DO NOT USE *** + +--with-wrapper-cflags= +--with-wrapper-cxxflags= +--with-wrapper-fflags= +--with-wrapper-fcflags= +--with-wrapper-ldflags= +--with-wrapper-libs= + Add the specified flags to the default flags that used are in Open + MPI's "wrapper" compilers (e.g., mpicc -- see below for more + information about Open MPI's wrapper compilers). By default, Open + MPI's wrapper compilers use the same compilers used to build Open + MPI and specify a minimum set of additional flags that are necessary + to compile/link MPI applications. These configure options give + system administrators the ability to embed additional flags in + OMPI's wrapper compilers (which is a local policy decision). The + meanings of the different flags are: + + : Flags passed by the mpicc wrapper to the C compiler + : Flags passed by the mpic++ wrapper to the C++ compiler + : Flags passed by the mpifort wrapper to the Fortran compiler + : Flags passed by all the wrappers to the linker + : Flags passed by all the wrappers to the linker + + There are other ways to configure Open MPI's wrapper compiler + behavior; see the Open MPI FAQ for more information. + +There are many other options available -- see "./configure --help". + +Changing the compilers that Open MPI uses to build itself uses the +standard Autoconf mechanism of setting special environment variables +either before invoking configure or on the configure command line. +The following environment variables are recognized by configure: + +CC - C compiler to use +CFLAGS - Compile flags to pass to the C compiler +CPPFLAGS - Preprocessor flags to pass to the C compiler + +CXX - C++ compiler to use +CXXFLAGS - Compile flags to pass to the C++ compiler +CXXCPPFLAGS - Preprocessor flags to pass to the C++ compiler + +FC - Fortran compiler to use +FCFLAGS - Compile flags to pass to the Fortran compiler + +LDFLAGS - Linker flags to pass to all compilers +LIBS - Libraries to pass to all compilers (it is rarely + necessary for users to need to specify additional LIBS) + +PKG_CONFIG - Path to the pkg-config utility + +For example: + + shell$ ./configure CC=mycc CXX=myc++ FC=myfortran ... + +*** NOTE: We generally suggest using the above command line form for + setting different compilers (vs. setting environment variables and + then invoking "./configure"). The above form will save all + variables and values in the config.log file, which makes + post-mortem analysis easier if problems occur. + +Note that if you intend to compile Open MPI with a "make" other than +the default one in your PATH, then you must either set the $MAKE +environment variable before invoking Open MPI's configure script, or +pass "MAKE=your_make_prog" to configure. For example: + + shell$ ./configure MAKE=/path/to/my/make ... + +This could be the case, for instance, if you have a shell alias for +"make", or you always type "gmake" out of habit. Failure to tell +configure which non-default "make" you will use to compile Open MPI +can result in undefined behavior (meaning: don't do that). + +Note that you may also want to ensure that the value of +LD_LIBRARY_PATH is set appropriately (or not at all) for your build +(or whatever environment variable is relevant for your operating +system). For example, some users have been tripped up by setting to +use a non-default Fortran compiler via FC, but then failing to set +LD_LIBRARY_PATH to include the directory containing that non-default +Fortran compiler's support libraries. This causes Open MPI's +configure script to fail when it tries to compile / link / run simple +Fortran programs. + +It is required that the compilers specified be compile and link +compatible, meaning that object files created by one compiler must be +able to be linked with object files from the other compilers and +produce correctly functioning executables. + +Open MPI supports all the "make" targets that are provided by GNU +Automake, such as: + +all - build the entire Open MPI package +install - install Open MPI +uninstall - remove all traces of Open MPI from the $prefix +clean - clean out the build tree + +Once Open MPI has been built and installed, it is safe to run "make +clean" and/or remove the entire build tree. + +VPATH and parallel builds are fully supported. + +Generally speaking, the only thing that users need to do to use Open +MPI is ensure that /bin is in their PATH and /lib is +in their LD_LIBRARY_PATH. Users may need to ensure to set the PATH +and LD_LIBRARY_PATH in their shell setup files (e.g., .bashrc, .cshrc) +so that non-interactive rsh/ssh-based logins will be able to find the +Open MPI executables. + +=========================================================================== + +Open MPI Version Numbers and Binary Compatibility +------------------------------------------------- + +Open MPI has two sets of version numbers that are likely of interest +to end users / system administrator: + + * Software version number + * Shared library version numbers + +Both are predicated on Open MPI's definition of "backwards +compatibility." + +NOTE: The version numbering conventions were changed with the release + of v1.10.0. Most notably, Open MPI no longer uses an "odd/even" + release schedule to indicate feature development vs. stable + releases. See the README in releases prior to v1.10.0 for more + information (e.g., + https://github.com/open-mpi/ompi-release/blob/v1.8/README#L1392-L1475). + +Backwards Compatibility +----------------------- + +Open MPI version Y is backwards compatible with Open MPI version X +(where Y>X) if users can: + + * Compile an MPI/OpenSHMEM application with version X, mpirun/oshrun + it with version Y, and get the same user-observable behavior. + * Invoke ompi_info with the same CLI options in versions X and Y and + get the same user-observable behavior. + +Note that this definition encompasses several things: + + * Application Binary Interface (ABI) + * MPI / OpenSHMEM run time system + * mpirun / oshrun command line options + * MCA parameter names / values / meanings + +However, this definition only applies when the same version of Open +MPI is used with all instances of the runtime and MPI / OpenSHMEM +processes in a single MPI job. If the versions are not exactly the +same everywhere, Open MPI is not guaranteed to work properly in any +scenario. + +Backwards compatibility tends to work best when user applications are +dynamically linked to one version of the Open MPI / OSHMEM libraries, +and can be updated at run time to link to a new version of the Open +MPI / OSHMEM libraries. + +For example, if an MPI / OSHMEM application links statically against +the libraries from Open MPI vX, then attempting to launch that +application with mpirun / oshrun from Open MPI vY is not guaranteed to +work (because it is mixing vX and vY of Open MPI in a single job). + +Similarly, if using a container technology that internally bundles all +the libraries from Open MPI vX, attempting to launch that container +with mpirun / oshrun from Open MPI vY is not guaranteed to work. + +Software Version Number +----------------------- + +Official Open MPI releases use the common "A.B.C" version identifier +format. Each of the three numbers has a specific meaning: + + * Major: The major number is the first integer in the version string + Changes in the major number typically indicate a significant + change in the code base and/or end-user functionality, and also + indicate a break from backwards compatibility. Specifically: Open + MPI releases with different major version numbers are not + backwards compatibale with each other. + + CAVEAT: This rule does not extend to versions prior to v1.10.0. + Specifically: v1.10.x is not guaranteed to be backwards + compatible with other v1.x releases. + + * Minor: The minor number is the second integer in the version + string. Changes in the minor number indicate a user-observable + change in the code base and/or end-user functionality. Backwards + compatibility will still be preserved with prior releases that + have the same major version number (e.g., v2.5.3 is backwards + compatible with v2.3.1). + + * Release: The release number is the third integer in the version + string. Changes in the release number typically indicate a bug + fix in the code base and/or end-user functionality. For example, + if there is a release that only contains bug fixes and no other + user-observable changes or new features, only the third integer + will be increased (e.g., from v4.3.0 to v4.3.1). + +The "A.B.C" version number may optionally be followed by a Quantifier: + + * Quantifier: Open MPI version numbers sometimes have an arbitrary + string affixed to the end of the version number. Common strings + include: + + o aX: Indicates an alpha release. X is an integer indicating the + number of the alpha release (e.g., v1.10.3a5 indicates the 5th + alpha release of version 1.10.3). + o bX: Indicates a beta release. X is an integer indicating the + number of the beta release (e.g., v1.10.3b3 indicates the 3rd + beta release of version 1.10.3). + o rcX: Indicates a release candidate. X is an integer indicating + the number of the release candidate (e.g., v1.10.3rc4 indicates + the 4th release candidate of version 1.10.3). + +Nightly development snapshot tarballs use a different version number +scheme; they contain three distinct values: + + * The git branch name from which the tarball was created. + * The date/timestamp, in YYYYMMDDHHMM format. + * The hash of the git commit from which the tarball was created. + +For example, a snapshot tarball filename of +"openmpi-v2.x-201703070235-e4798fb.tar.gz" indicates that this tarball +was created from the v2.x branch, on March 7, 2017, at 2:35am GMT, +from git hash e4798fb. + +Shared Library Version Number +----------------------------- + +The GNU Libtool official documentation details how the versioning +scheme works. The quick version is that the shared library versions +are a triple of integers: (current,revision,age), or "c:r:a". This +triple is not related to the Open MPI software version number. There +are six simple rules for updating the values (taken almost verbatim +from the Libtool docs): + + 1. Start with version information of "0:0:0" for each shared library. + + 2. Update the version information only immediately before a public + release of your software. More frequent updates are unnecessary, + and only guarantee that the current interface number gets larger + faster. + + 3. If the library source code has changed at all since the last + update, then increment revision ("c:r:a" becomes "c:r+1:a"). + + 4. If any interfaces have been added, removed, or changed since the + last update, increment current, and set revision to 0. + + 5. If any interfaces have been added since the last public release, + then increment age. + + 6. If any interfaces have been removed since the last public release, + then set age to 0. + +Here's how we apply those rules specifically to Open MPI: + + 1. The above rules do not apply to MCA components (a.k.a. "plugins"); + MCA component .so versions stay unspecified. + + 2. The above rules apply exactly as written to the following + libraries starting with Open MPI version v1.5 (prior to v1.5, + libopen-pal and libopen-rte were still at 0:0:0 for reasons + discussed in bug ticket #2092 + https://svn.open-mpi.org/trac/ompi/ticket/2092): + + * libopen-rte + * libopen-pal + * libmca_common_* + + 3. The following libraries use a slightly modified version of the + above rules: rules 4, 5, and 6 only apply to the official MPI and + OpenSHMEM interfaces (functions, global variables). The rationale + for this decision is that the vast majority of our users only care + about the official/public MPI/OpenSHMEM interfaces; we therefore + want the .so version number to reflect only changes to the + official MPI/OpenSHMEM APIs. Put simply: non-MPI/OpenSHMEM API / + internal changes to the MPI-application-facing libraries are + irrelevant to pure MPI/OpenSHMEM applications. + + * libmpi + * libmpi_mpifh + * libmpi_usempi_tkr + * libmpi_usempi_ignore_tkr + * libmpi_usempif08 + * libmpi_cxx + * libmpi_java + * liboshmem + +=========================================================================== + +Checking Your Open MPI Installation +----------------------------------- + +The "ompi_info" command can be used to check the status of your Open +MPI installation (located in /bin/ompi_info). Running it with +no arguments provides a summary of information about your Open MPI +installation. + +Note that the ompi_info command is extremely helpful in determining +which components are installed as well as listing all the run-time +settable parameters that are available in each component (as well as +their default values). + +The following options may be helpful: + +--all Show a *lot* of information about your Open MPI + installation. +--parsable Display all the information in an easily + grep/cut/awk/sed-able format. +--param + A of "all" and a of "all" will + show all parameters to all components. Otherwise, the + parameters of all the components in a specific framework, + or just the parameters of a specific component can be + displayed by using an appropriate and/or + name. +--level + By default, ompi_info only shows "Level 1" MCA parameters + -- parameters that can affect whether MPI processes can + run successfully or not (e.g., determining which network + interfaces to use). The --level option will display all + MCA parameters from level 1 to (the max + value is 9). Use "ompi_info --param + --level 9" to see *all* MCA parameters for a + given component. See "The Modular Component Architecture + (MCA)" section, below, for a fuller explanation. + +Changing the values of these parameters is explained in the "The +Modular Component Architecture (MCA)" section, below. + +When verifying a new Open MPI installation, we recommend running six +tests: + +1. Use "mpirun" to launch a non-MPI program (e.g., hostname or uptime) + across multiple nodes. + +2. Use "mpirun" to launch a trivial MPI program that does no MPI + communication (e.g., the hello_c program in the examples/ directory + in the Open MPI distribution). + +3. Use "mpirun" to launch a trivial MPI program that sends and + receives a few MPI messages (e.g., the ring_c program in the + examples/ directory in the Open MPI distribution). + +4. Use "oshrun" to launch a non-OpenSHMEM program across multiple + nodes. + +5. Use "oshrun" to launch a trivial MPI program that does no OpenSHMEM + communication (e.g., hello_shmem.c program in the examples/ + directory in the Open MPI distribution.) + +6. Use "oshrun" to launch a trivial OpenSHMEM program that puts and + gets a few messages. (e.g., the ring_shmem.c in the examples/ + directory in the Open MPI distribution.) + +If you can run all six of these tests successfully, that is a good +indication that Open MPI built and installed properly. + +=========================================================================== + +Open MPI API Extensions +----------------------- + +Open MPI contains a framework for extending the MPI API that is +available to applications. Each extension is usually a standalone set +of functionality that is distinct from other extensions (similar to +how Open MPI's plugins are usually unrelated to each other). These +extensions provide new functions and/or constants that are available +to MPI applications. + +WARNING: These extensions are neither standard nor portable to other +MPI implementations! + +Compiling the extensions +------------------------ + +Open MPI extensions are all enabled by default; they can be disabled +via the --disable-mpi-ext command line switch. + +Since extensions are meant to be used by advanced users only, this +file does not document which extensions are available or what they +do. Look in the ompi/mpiext/ directory to see the extensions; each +subdirectory of that directory contains an extension. Each has a +README file that describes what it does. + +Using the extensions +-------------------- + +To reinforce the fact that these extensions are non-standard, you must +include a separate header file after to obtain the function +prototypes, constant declarations, etc. For example: + +----- +#include +#if defined(OPEN_MPI) && OPEN_MPI +#include +#endif + +int main() { + MPI_Init(NULL, NULL); + +#if defined(OPEN_MPI) && OPEN_MPI + { + char ompi_bound[OMPI_AFFINITY_STRING_MAX]; + char current_binding[OMPI_AFFINITY_STRING_MAX]; + char exists[OMPI_AFFINITY_STRING_MAX]; + OMPI_Affinity_str(OMPI_AFFINITY_LAYOUT_FMT, ompi_bound, + current_bindings, exists); + } +#endif + MPI_Finalize(); + return 0; +} +----- + +Notice that the Open MPI-specific code is surrounded by the #if +statement to ensure that it is only ever compiled by Open MPI. + +The Open MPI wrapper compilers (mpicc and friends) should +automatically insert all relevant compiler and linker flags necessary +to use the extensions. No special flags or steps should be necessary +compared to "normal" MPI applications. + +=========================================================================== + +Compiling Open MPI Applications +------------------------------- + +Open MPI provides "wrapper" compilers that should be used for +compiling MPI and OpenSHMEM applications: + +C: mpicc, oshcc +C++: mpiCC, oshCC (or mpic++ if your filesystem is case-insensitive) +Fortran: mpifort, oshfort + +For example: + + shell$ mpicc hello_world_mpi.c -o hello_world_mpi -g + shell$ + +For OpenSHMEM applications: + + shell$ oshcc hello_shmem.c -o hello_shmem -g + shell$ + +All the wrapper compilers do is add a variety of compiler and linker +flags to the command line and then invoke a back-end compiler. To be +specific: the wrapper compilers do not parse source code at all; they +are solely command-line manipulators, and have nothing to do with the +actual compilation or linking of programs. The end result is an MPI +executable that is properly linked to all the relevant libraries. + +Customizing the behavior of the wrapper compilers is possible (e.g., +changing the compiler [not recommended] or specifying additional +compiler/linker flags); see the Open MPI FAQ for more information. + +Alternatively, Open MPI also installs pkg-config(1) configuration +files under $libdir/pkgconfig. If pkg-config is configured to find +these files, then compiling / linking Open MPI programs can be +performed like this: + + shell$ gcc hello_world_mpi.c -o hello_world_mpi -g \ + `pkg-config ompi-c --cflags --libs` + shell$ + +Open MPI supplies multiple pkg-config(1) configuration files; one for +each different wrapper compiler (language): + +------------------------------------------------------------------------ +ompi Synonym for "ompi-c"; Open MPI applications using the C + MPI bindings +ompi-c Open MPI applications using the C MPI bindings +ompi-cxx Open MPI applications using the C or C++ MPI bindings +ompi-fort Open MPI applications using the Fortran MPI bindings +------------------------------------------------------------------------ + +The following pkg-config(1) configuration files *may* be installed, +depending on which command line options were specified to Open MPI's +configure script. They are not necessary for MPI applications, but +may be used by applications that use Open MPI's lower layer support +libraries. + +orte: Open MPI Run-Time Environment applications +opal: Open Portable Access Layer applications + +=========================================================================== + +Running Open MPI Applications +----------------------------- + +Open MPI supports both mpirun and mpiexec (they are exactly +equivalent) to launch MPI applications. For example: + + shell$ mpirun -np 2 hello_world_mpi + or + shell$ mpiexec -np 1 hello_world_mpi : -np 1 hello_world_mpi + +are equivalent. Some of mpiexec's switches (such as -host and -arch) +are not yet functional, although they will not error if you try to use +them. + +The rsh launcher (which defaults to using ssh) accepts a -hostfile +parameter (the option "-machinefile" is equivalent); you can specify a +-hostfile parameter indicating an standard mpirun-style hostfile (one +hostname per line): + + shell$ mpirun -hostfile my_hostfile -np 2 hello_world_mpi + +If you intend to run more than one process on a node, the hostfile can +use the "slots" attribute. If "slots" is not specified, a count of 1 +is assumed. For example, using the following hostfile: + +--------------------------------------------------------------------------- +node1.example.com +node2.example.com +node3.example.com slots=2 +node4.example.com slots=4 +--------------------------------------------------------------------------- + + shell$ mpirun -hostfile my_hostfile -np 8 hello_world_mpi + +will launch MPI_COMM_WORLD rank 0 on node1, rank 1 on node2, ranks 2 +and 3 on node3, and ranks 4 through 7 on node4. + +Other starters, such as the resource manager / batch scheduling +environments, do not require hostfiles (and will ignore the hostfile +if it is supplied). They will also launch as many processes as slots +have been allocated by the scheduler if no "-np" argument has been +provided. For example, running a SLURM job with 8 processors: + + shell$ salloc -n 8 mpirun a.out + +The above command will reserve 8 processors and run 1 copy of mpirun, +which will, in turn, launch 8 copies of a.out in a single +MPI_COMM_WORLD on the processors that were allocated by SLURM. + +Note that the values of component parameters can be changed on the +mpirun / mpiexec command line. This is explained in the section +below, "The Modular Component Architecture (MCA)". + +Open MPI supports oshrun to launch OpenSHMEM applications. For +example: + + shell$ oshrun -np 2 hello_world_oshmem + +OpenSHMEM applications may also be launched directly by resource +managers such as SLURM. For example, when OMPI is configured +--with-pmi and --with-slurm, one may launch OpenSHMEM applications via +srun: + + shell$ srun -N 2 hello_world_oshmem + +=========================================================================== + +The Modular Component Architecture (MCA) + +The MCA is the backbone of Open MPI -- most services and functionality +are implemented through MCA components. Here is a list of all the +component frameworks in Open MPI: + +--------------------------------------------------------------------------- + +MPI component frameworks: +------------------------- + +bml - BTL management layer +coll - MPI collective algorithms +fbtl - file byte transfer layer: abstraction for individual + read/write operations for OMPIO +fcoll - collective read and write operations for MPI I/O +fs - file system functions for MPI I/O +io - MPI I/O +mtl - Matching transport layer, used for MPI point-to-point + messages on some types of networks +op - Back end computations for intrinsic MPI_Op operators +osc - MPI one-sided communications +pml - MPI point-to-point management layer +rte - Run-time environment operations +sharedfp - shared file pointer operations for MPI I/O +topo - MPI topology routines +vprotocol - Protocols for the "v" PML + +OpenSHMEM component frameworks: +------------------------- + +atomic - OpenSHMEM atomic operations +memheap - OpenSHMEM memory allocators that support the + PGAS memory model +scoll - OpenSHMEM collective operations +spml - OpenSHMEM "pml-like" layer: supports one-sided, + point-to-point operations +sshmem - OpenSHMEM shared memory backing facility + + +Back-end run-time environment (RTE) component frameworks: +--------------------------------------------------------- + +dfs - Distributed file system +errmgr - RTE error manager +ess - RTE environment-specific services +filem - Remote file management +grpcomm - RTE group communications +iof - I/O forwarding +notifier - System-level notification support +odls - OpenRTE daemon local launch subsystem +oob - Out of band messaging +plm - Process lifecycle management +ras - Resource allocation system +rmaps - Resource mapping system +rml - RTE message layer +routed - Routing table for the RML +rtc - Run-time control framework +schizo - OpenRTE personality framework +state - RTE state machine + +Miscellaneous frameworks: +------------------------- + +allocator - Memory allocator +backtrace - Debugging call stack backtrace support +btl - Point-to-point Byte Transfer Layer +dl - Dynamic loading library interface +event - Event library (libevent) versioning support +hwloc - Hardware locality (hwloc) versioning support +if - OS IP interface support +installdirs - Installation directory relocation services +memchecker - Run-time memory checking +memcpy - Memory copy support +memory - Memory management hooks +mpool - Memory pooling +patcher - Symbol patcher hooks +pmix - Process management interface (exascale) +pstat - Process status +rcache - Memory registration cache +sec - Security framework +shmem - Shared memory support (NOT related to OpenSHMEM) +timer - High-resolution timers + +--------------------------------------------------------------------------- + +Each framework typically has one or more components that are used at +run-time. For example, the btl framework is used by the MPI layer to +send bytes across different types underlying networks. The tcp btl, +for example, sends messages across TCP-based networks; the openib btl +sends messages across OpenFabrics-based networks. + +Each component typically has some tunable parameters that can be +changed at run-time. Use the ompi_info command to check a component +to see what its tunable parameters are. For example: + + shell$ ompi_info --param btl tcp + +shows some of the parameters (and default values) for the tcp btl +component (use --level to show *all* the parameters; see below). + +Note that ompi_info only shows a small number a component's MCA +parameters by default. Each MCA parameter has a "level" value from 1 +to 9, corresponding to the MPI-3 MPI_T tool interface levels. In Open +MPI, we have interpreted these nine levels as three groups of three: + + 1. End user / basic + 2. End user / detailed + 3. End user / all + + 4. Application tuner / basic + 5. Application tuner / detailed + 6. Application tuner / all + + 7. MPI/OpenSHMEM developer / basic + 8. MPI/OpenSHMEM developer / detailed + 9. MPI/OpenSHMEM developer / all + +Here's how the three sub-groups are defined: + + 1. End user: Generally, these are parameters that are required for + correctness, meaning that someone may need to set these just to + get their MPI/OpenSHMEM application to run correctly. + 2. Application tuner: Generally, these are parameters that can be + used to tweak MPI application performance. + 3. MPI/OpenSHMEM developer: Parameters that either don't fit in the + other two, or are specifically intended for debugging / + development of Open MPI itself. + +Each sub-group is broken down into three classifications: + + 1. Basic: For parameters that everyone in this category will want to + see. + 2. Detailed: Parameters that are useful, but you probably won't need + to change them often. + 3. All: All other parameters -- probably including some fairly + esoteric parameters. + +To see *all* available parameters for a given component, specify that +ompi_info should use level 9: + + shell$ ompi_info --param btl tcp --level 9 + +These values can be overridden at run-time in several ways. At +run-time, the following locations are examined (in order) for new +values of parameters: + +1. /etc/openmpi-mca-params.conf + + This file is intended to set any system-wide default MCA parameter + values -- it will apply, by default, to all users who use this Open + MPI installation. The default file that is installed contains many + comments explaining its format. + +2. $HOME/.openmpi/mca-params.conf + + If this file exists, it should be in the same format as + /etc/openmpi-mca-params.conf. It is intended to provide + per-user default parameter values. + +3. environment variables of the form OMPI_MCA_ set equal to a + + + Where is the name of the parameter. For example, set the + variable named OMPI_MCA_btl_tcp_frag_size to the value 65536 + (Bourne-style shells): + + shell$ OMPI_MCA_btl_tcp_frag_size=65536 + shell$ export OMPI_MCA_btl_tcp_frag_size + +4. the mpirun/oshrun command line: --mca + + Where is the name of the parameter. For example: + + shell$ mpirun --mca btl_tcp_frag_size 65536 -np 2 hello_world_mpi + +These locations are checked in order. For example, a parameter value +passed on the mpirun command line will override an environment +variable; an environment variable will override the system-wide +defaults. + +Each component typically activates itself when relevant. For example, +the usNIC component will detect that usNIC devices are present and +will automatically be used for MPI communications. The SLURM +component will automatically detect when running inside a SLURM job +and activate itself. And so on. + +Components can be manually activated or deactivated if necessary, of +course. The most common components that are manually activated, +deactivated, or tuned are the "BTL" components -- components that are +used for MPI point-to-point communications on many types common +networks. + +For example, to *only* activate the TCP and "self" (process loopback) +components are used for MPI communications, specify them in a +comma-delimited list to the "btl" MCA parameter: + + shell$ mpirun --mca btl tcp,self hello_world_mpi + +To add shared memory support, add "vader" into the command-delimited +list (list order does not matter): + + shell$ mpirun --mca btl tcp,vader,self hello_world_mpi + +(there is an "sm" shared memory BTL, too, but "vader" is a newer +generation of shared memory support; by default, "vader" will be used +instead of "sm") + +To specifically deactivate a specific component, the comma-delimited +list can be prepended with a "^" to negate it: + + shell$ mpirun --mca btl ^tcp hello_mpi_world + +The above command will use any other BTL component other than the tcp +component. + +=========================================================================== + +Common Questions +---------------- + +Many common questions about building and using Open MPI are answered +on the FAQ: + + https://www.open-mpi.org/faq/ + +=========================================================================== + +Got more questions? +------------------- + +Found a bug? Got a question? Want to make a suggestion? Want to +contribute to Open MPI? Please let us know! + +When submitting questions and problems, be sure to include as much +extra information as possible. This web page details all the +information that we request in order to provide assistance: + + https://www.open-mpi.org/community/help/ + +User-level questions and comments should generally be sent to the +user's mailing list (users@lists.open-mpi.org). Because of spam, only +subscribers are allowed to post to this list (ensure that you +subscribe with and post from *exactly* the same e-mail address -- +joe@example.com is considered different than +joe@mycomputer.example.com!). Visit this page to subscribe to the +user's list: + + http://lists.open-mpi.org/mailman/listinfo/users + +Developer-level bug reports, questions, and comments should generally +be sent to the developer's mailing list (devel@lists.open-mpi.org). +Please do not post the same question to both lists. As with the +user's list, only subscribers are allowed to post to the developer's +list. Visit the following web page to subscribe: + + http://lists.open-mpi.org/mailman/listinfo/devel + +Make today an Open MPI day! diff --git a/README.JAVA.txt b/README.JAVA.txt new file mode 100644 index 00000000..ca0c70ab --- /dev/null +++ b/README.JAVA.txt @@ -0,0 +1,275 @@ +*************************************************************************** +IMPORTANT NOTE + +JAVA BINDINGS ARE PROVIDED ON A "PROVISIONAL" BASIS - I.E., THEY ARE +NOT PART OF THE CURRENT OR PROPOSED MPI STANDARDS. THUS, INCLUSION OF +JAVA SUPPORT IS NOT REQUIRED BY THE STANDARD. CONTINUED INCLUSION OF +THE JAVA BINDINGS IS CONTINGENT UPON ACTIVE USER INTEREST AND +CONTINUED DEVELOPER SUPPORT. + +*************************************************************************** + +This version of Open MPI provides support for Java-based +MPI applications. + +The rest of this document provides step-by-step instructions on +building OMPI with Java bindings, and compiling and running +Java-based MPI applications. Also, part of the functionality is +explained with examples. Further details about the design, +implementation and usage of Java bindings in Open MPI can be found +in [1]. The bindings follow a JNI approach, that is, we do not +provide a pure Java implementation of MPI primitives, but a thin +layer on top of the C implementation. This is the same approach +as in mpiJava [2]; in fact, mpiJava was taken as a starting point +for Open MPI Java bindings, but they were later totally rewritten. + + [1] O. Vega-Gisbert, J. E. Roman, and J. M. Squyres. "Design and + implementation of Java bindings in Open MPI". Parallel Comput. + 59: 1-20 (2016). + + [2] M. Baker et al. "mpiJava: An object-oriented Java interface to + MPI". In Parallel and Distributed Processing, LNCS vol. 1586, + pp. 748-762, Springer (1999). + +============================================================================ + +Building Java Bindings + +If this software was obtained as a developer-level +checkout as opposed to a tarball, you will need to start your build by +running ./autogen.pl. This will also require that you have a fairly +recent version of autotools on your system - see the HACKING file for +details. + +Java support requires that Open MPI be built at least with shared libraries +(i.e., --enable-shared) - any additional options are fine and will not +conflict. Note that this is the default for Open MPI, so you don't +have to explicitly add the option. The Java bindings will build only +if --enable-mpi-java is specified, and a JDK is found in a typical +system default location. + +If the JDK is not in a place where we automatically find it, you can +specify the location. For example, this is required on the Mac +platform as the JDK headers are located in a non-typical location. Two +options are available for this purpose: + +--with-jdk-bindir= - the location of javac and javah +--with-jdk-headers= - the directory containing jni.h + +For simplicity, typical configurations are provided in platform files +under contrib/platform/hadoop. These will meet the needs of most +users, or at least provide a starting point for your own custom +configuration. + +In summary, therefore, you can configure the system using the +following Java-related options: + +$ ./configure --with-platform=contrib/platform/hadoop/ +... + +or + +$ ./configure --enable-mpi-java --with-jdk-bindir= + --with-jdk-headers= ... + +or simply + +$ ./configure --enable-mpi-java ... + +if JDK is in a "standard" place that we automatically find. + +---------------------------------------------------------------------------- + +Running Java Applications + +For convenience, the "mpijavac" wrapper compiler has been provided for +compiling Java-based MPI applications. It ensures that all required MPI +libraries and class paths are defined. You can see the actual command +line using the --showme option, if you are interested. + +Once your application has been compiled, you can run it with the +standard "mpirun" command line: + +$ mpirun java + +For convenience, mpirun has been updated to detect the "java" command +and ensure that the required MPI libraries and class paths are defined +to support execution. You therefore do NOT need to specify the Java +library path to the MPI installation, nor the MPI classpath. Any class +path definitions required for your application should be specified +either on the command line or via the CLASSPATH environmental +variable. Note that the local directory will be added to the class +path if nothing is specified. + +As always, the "java" executable, all required libraries, and your +application classes must be available on all nodes. + +---------------------------------------------------------------------------- + +Basic usage of Java bindings + +There is an MPI package that contains all classes of the MPI Java +bindings: Comm, Datatype, Request, etc. These classes have a direct +correspondence with classes defined by the MPI standard. MPI primitives +are just methods included in these classes. The convention used for +naming Java methods and classes is the usual camel-case convention, +e.g., the equivalent of MPI_File_set_info(fh,info) is fh.setInfo(info), +where fh is an object of the class File. + +Apart from classes, the MPI package contains predefined public attributes +under a convenience class MPI. Examples are the predefined communicator +MPI.COMM_WORLD or predefined datatypes such as MPI.DOUBLE. Also, MPI +initialization and finalization are methods of the MPI class and must +be invoked by all MPI Java applications. The following example illustrates +these concepts: + +import mpi.*; + +class ComputePi { + + public static void main(String args[]) throws MPIException { + + MPI.Init(args); + + int rank = MPI.COMM_WORLD.getRank(), + size = MPI.COMM_WORLD.getSize(), + nint = 100; // Intervals. + double h = 1.0/(double)nint, sum = 0.0; + + for(int i=rank+1; i<=nint; i+=size) { + double x = h * ((double)i - 0.5); + sum += (4.0 / (1.0 + x * x)); + } + + double sBuf[] = { h * sum }, + rBuf[] = new double[1]; + + MPI.COMM_WORLD.reduce(sBuf, rBuf, 1, MPI.DOUBLE, MPI.SUM, 0); + + if(rank == 0) System.out.println("PI: " + rBuf[0]); + MPI.Finalize(); + } +} + +---------------------------------------------------------------------------- + +Exception handling + +Java bindings in Open MPI support exception handling. By default, errors +are fatal, but this behavior can be changed. The Java API will throw +exceptions if the MPI.ERRORS_RETURN error handler is set: + + MPI.COMM_WORLD.setErrhandler(MPI.ERRORS_RETURN); + +If you add this statement to your program, it will show the line +where it breaks, instead of just crashing in case of an error. +Error-handling code can be separated from main application code by +means of try-catch blocks, for instance: + + try + { + File file = new File(MPI.COMM_SELF, "filename", MPI.MODE_RDONLY); + } + catch(MPIException ex) + { + System.err.println("Error Message: "+ ex.getMessage()); + System.err.println(" Error Class: "+ ex.getErrorClass()); + ex.printStackTrace(); + System.exit(-1); + } + + +---------------------------------------------------------------------------- + +How to specify buffers + +In MPI primitives that require a buffer (either send or receive) the +Java API admits a Java array. Since Java arrays can be relocated by +the Java runtime environment, the MPI Java bindings need to make a +copy of the contents of the array to a temporary buffer, then pass the +pointer to this buffer to the underlying C implementation. From the +practical point of view, this implies an overhead associated to all +buffers that are represented by Java arrays. The overhead is small +for small buffers but increases for large arrays. + +There is a pool of temporary buffers with a default capacity of 64K. +If a temporary buffer of 64K or less is needed, then the buffer will +be obtained from the pool. But if the buffer is larger, then it will +be necessary to allocate the buffer and free it later. + +The default capacity of pool buffers can be modified with an 'mca' +parameter: + + mpirun --mca mpi_java_eager size ... + +Where 'size' is the number of bytes, or kilobytes if it ends with 'k', +or megabytes if it ends with 'm'. + +An alternative is to use "direct buffers" provided by standard +classes available in the Java SDK such as ByteBuffer. For convenience +we provide a few static methods "new[Type]Buffer" in the MPI class +to create direct buffers for a number of basic datatypes. Elements +of the direct buffer can be accessed with methods put() and get(), +and the number of elements in the buffer can be obtained with the +method capacity(). This example illustrates its use: + + int myself = MPI.COMM_WORLD.getRank(); + int tasks = MPI.COMM_WORLD.getSize(); + + IntBuffer in = MPI.newIntBuffer(MAXLEN * tasks), + out = MPI.newIntBuffer(MAXLEN); + + for(int i = 0; i < MAXLEN; i++) + out.put(i, myself); // fill the buffer with the rank + + Request request = MPI.COMM_WORLD.iAllGather( + out, MAXLEN, MPI.INT, in, MAXLEN, MPI.INT); + request.waitFor(); + request.free(); + + for(int i = 0; i < tasks; i++) + { + for(int k = 0; k < MAXLEN; k++) + { + if(in.get(k + i * MAXLEN) != i) + throw new AssertionError("Unexpected value"); + } + } + +Direct buffers are available for: BYTE, CHAR, SHORT, INT, LONG, +FLOAT, and DOUBLE. There is no direct buffer for booleans. + +Direct buffers are not a replacement for arrays, because they have +higher allocation and deallocation costs than arrays. In some +cases arrays will be a better choice. You can easily convert a +buffer into an array and vice versa. + +All non-blocking methods must use direct buffers and only +blocking methods can choose between arrays and direct buffers. + +The above example also illustrates that it is necessary to call +the free() method on objects whose class implements the Freeable +interface. Otherwise a memory leak is produced. + +---------------------------------------------------------------------------- + +Specifying offsets in buffers + +In a C program, it is common to specify an offset in a array with +"&array[i]" or "array+i", for instance to send data starting from +a given positon in the array. The equivalent form in the Java bindings +is to "slice()" the buffer to start at an offset. Making a "slice()" +on a buffer is only necessary, when the offset is not zero. Slices +work for both arrays and direct buffers. + + import static mpi.MPI.slice; + ... + int numbers[] = new int[SIZE]; + ... + MPI.COMM_WORLD.send(slice(numbers, offset), count, MPI.INT, 1, 0); + +---------------------------------------------------------------------------- + +If you have any problems, or find any bugs, please feel free to report +them to Open MPI user's mailing list (see +http://www.open-mpi.org/community/lists/ompi.php). diff --git a/VERSION b/VERSION new file mode 100644 index 00000000..5dc563fe --- /dev/null +++ b/VERSION @@ -0,0 +1,113 @@ +# Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved. +# Copyright (c) 2008-2011 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2011 NVIDIA Corporation. All rights reserved. +# Copyright (c) 2013 Mellanox Technologies, Inc. +# All rights reserved. +# Copyright (c) 2016 IBM Corporation. All rights reserved. + +# This is the VERSION file for Open MPI, describing the precise +# version of Open MPI in this distribution. The various components of +# the version number below are combined to form a single version +# number string. + +# major, minor, and release are generally combined in the form +# ... + +major=3 +minor=0 +release=1 + +# greek is generally used for alpha or beta release tags. If it is +# non-empty, it will be appended to the version number. It does not +# have to be numeric. Common examples include: a1 (alpha release 1), +# b1 (beta release 1), rc2 (release candidate 2). The only +# requirement is that it must be entirely printable ASCII characters +# and have no white space. + +greek=rc5 + +# If repo_rev is empty, then the repository version number will be +# obtained during "make dist" via the "git describe --tags --always" +# command, or with the date (if "git describe" fails) in the form of +# "date". + +repo_rev= + +# If tarball_version is not empty, it is used as the version string in +# the tarball filename, regardless of all other versions listed in +# this file. For example, if tarball_version is empty, the tarball +# filename will be of the form +# openmpi-...tar.*. However, if +# tarball_version is not empty, the tarball filename will be of the +# form openmpi-.tar.*. + +tarball_version=gitclone + +# The date when this release was created + +date="Unreleased developer copy" + +# The shared library version of each of Open MPI's public libraries. +# These versions are maintained in accordance with the "Library +# Interface Versions" chapter from the GNU Libtool documentation. The +# first Open MPI release to programatically specify these versions was +# v1.3.4 (note that Libtool defaulted all prior releases to 0:0:0). +# All changes in these version numbers are dictated by the Open MPI +# release managers (not individual developers). Notes: + +# 1. Since these version numbers are associated with *releases*, the +# version numbers maintained on the Open MPI SVN trunk (and developer +# branches) is always 0:0:0 for all libraries. + +# 2. The version number of libmpi refers to the public MPI interfaces. +# It does not refer to any internal interfaces. + +# 3. Similar to libmpi, the version numbers of the Fortran libraries +# refer to the public MPI interfaces. For example, that there have +# been typo fixes in the parameter types to mpif.h Fortran library +# functions over time; these technically did not change the interface +# because Fortran 77 does not link by parameter type. + +# 4. Similar to libmpi, libmpi_cxx's version number refers to the +# public MPI interfaces. Note that this version number may or may not +# be affected by changes to inlined functions in OMPI's +# header-file-based C++ bindings implementation. + +# 5. The ORTE and OPAL libraries will change versions when their +# public interfaces change (as relative to the layer(s) above them). +# None of the ORTE and OPAL interfaces are public to MPI applications, +# but they are "public" within the OMPI code base and select 3rd party +# software packages. + +# Version numbers are described in the Libtool current:revision:age +# format. + +libmpi_so_version=40:1:0 +libmpi_cxx_so_version=40:0:0 +libmpi_mpifh_so_version=40:0:0 +libmpi_usempi_tkr_so_version=40:0:0 +libmpi_usempi_ignore_tkr_so_version=40:0:0 +libmpi_usempif08_so_version=40:0:0 +libopen_rte_so_version=40:1:0 +libopen_pal_so_version=41:0:1 +libmpi_java_so_version=40:0:0 +liboshmem_so_version=41:0:1 +libompitrace_so_version=40:0:0 + +# "Common" components install standalone libraries that are run-time +# linked by one or more components. So they need to be versioned as +# well. Yuck; this somewhat breaks the +# components-don't-affect-the-build-system abstraction. + +# OMPI layer +libmca_ompi_common_ompio_so_version=41:0:0 + +# ORTE layer +libmca_orte_common_alps_so_version=40:0:0 + +# OPAL layer +libmca_opal_common_cuda_so_version=40:0:0 +libmca_opal_common_libfabric_so_version=40:0:0 +libmca_opal_common_sm_so_version=40:0:0 +libmca_opal_common_ugni_so_version=40:0:0 +libmca_opal_common_verbs_so_version=40:0:0 diff --git a/autogen.pl b/autogen.pl new file mode 100755 index 00000000..eec456c8 --- /dev/null +++ b/autogen.pl @@ -0,0 +1,1418 @@ +#!/usr/bin/env perl +# +# Copyright (c) 2009-2017 Cisco Systems, Inc. All rights reserved +# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2013 Mellanox Technologies, Inc. +# All rights reserved. +# Copyright (c) 2013-2014 Intel, Inc. All rights reserved. +# Copyright (c) 2015-2016 Research Organization for Information Science +# and Technology (RIST). All rights reserved. +# Copyright (c) 2015 IBM Corporation. All rights reserved. +# +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +use strict; + +use Cwd; +use File::Basename; +use File::Find; +use Data::Dumper; +use Getopt::Long; + +# +# Global variables +# + +# Sentinel file to remove if we fail +my $sentinel; + +# The m4 file we'll write at the end +my $m4_output_file = "config/autogen_found_items.m4"; +my $m4; +# Sanity check file +my $topdir_file = "opal/include/opal_config_bottom.h"; +my $dnl_line = "dnl ---------------------------------------------------------------------------"; + +# Data structures to fill up with all the stuff we find +my $mca_found; +my $mpiext_found; +my $mpicontrib_found; +my @subdirs; + +# Command line parameters +my $no_ompi_arg = 0; +my $no_orte_arg = 0; +my $no_oshmem_arg = 0; +my $quiet_arg = 0; +my $debug_arg = 0; +my $help_arg = 0; +my $platform_arg = 0; +my $include_arg = 0; +my $exclude_arg = 0; +my $force_arg = 0; + +# Include/exclude lists +my $include_list; +my $exclude_list; + +# Minimum versions +my $ompi_automake_version = "1.12.2"; +my $ompi_autoconf_version = "2.69"; +my $ompi_libtool_version = "2.4.2"; + +# Search paths +my $ompi_autoconf_search = "autoconf"; +my $ompi_automake_search = "automake"; +my $ompi_libtoolize_search = "libtoolize;glibtoolize"; + +# One-time setup +my $username; +my $hostname; +my $full_hostname; + +# Patch program +my $patch_prog = "patch"; +# Solaris "patch" doesn't understand unified diffs, and will cause +# autogen.pl to hang with a "File to patch:" prompt. Default to Linux +# "patch", but use "gpatch" on Solaris. +if ($^O eq "solaris") { + $patch_prog = "gpatch"; +} + +$username = getpwuid($>); +$full_hostname = `hostname`; +chomp($full_hostname); +$hostname = $full_hostname; +$hostname =~ s/^([\w\-]+)\..+/\1/; + +############################################################################## + +sub my_die { + unlink($sentinel) + if ($sentinel); + die @_; +} + +sub my_exit { + my ($ret) = @_; + unlink($sentinel) + if ($sentinel && $ret != 0); + exit($ret); +} + +############################################################################## + +sub verbose { + print @_ + if (!$quiet_arg); +} + +sub debug { + print @_ + if ($debug_arg); +} + +sub debug_dump { + my $d = new Data::Dumper([@_]); + $d->Purity(1)->Indent(1); + debug $d->Dump; +} + +############################################################################## + +sub read_config_params { + my ($filename, $dir_prefix) = @_; + + my $dir = dirname($filename); + open(FILE, $filename) || + my_die "Can't open $filename"; + my $file; + $file .= $_ + while(); + close(FILE); + + # Save all lines of the form "foo = bar" in a hash + my $ret; + while ($file =~ s/^\s*(\w+)\s*=\s*(.+)\s*$//m) { + my $key = $1; + my $val = $2; + + # Strip off any leading and trailing "'s + $val = $1 + if ($val =~ m/^\"(.+)\"$/); + + $ret->{$key} = $val; + } + + # Split PARAM_CONFIG_FILES into an array + if (exists($ret->{PARAM_CONFIG_FILES})) { + my @out; + foreach my $f (split(/\s+/, $ret->{PARAM_CONFIG_FILES})) { + push(@out, "$dir_prefix/$f"); + } + $ret->{PARAM_CONFIG_FILES} = \@out; + } + + debug_dump($ret); + return $ret; +} + +############################################################################## + +# Process a "subdir", meaning that the directory isn't a component or +# an extension; it probably just needs an autoreconf, autogen, etc. +sub process_subdir { + my ($dir) = @_; + + # Chdir to the subdir + print "\n=== Processing subdir: $dir\n"; + my $start = Cwd::cwd(); + chdir($dir); + + # Run an action depending on what we find in that subdir + if (-x "autogen.pl") { + print "--- Found autogen.pl; running...\n"; + safe_system("./autogen.pl"); + } elsif (-x "autogen.sh") { + print "--- Found autogen.sh; running...\n"; + safe_system("./autogen.sh"); + } elsif (-f "configure.in" || -f "configure.ac") { + print "--- Found configure.in|ac; running autoreconf...\n"; + safe_system("autoreconf -ivf"); + print "--- Patching autotools output... :-(\n"; + } else { + my_die "Found subdir, but no autogen.sh or configure.in|ac to do anything"; + } + + # Ensure that we got a good configure executable. + my_die "Did not generate a \"configure\" executable in $dir.\n" + if (! -x "configure"); + + # Fix known issues in Autotools output + patch_autotools_output($start); + + # Chdir back to where we came from + chdir($start); +} + +############################################################################## + +sub process_autogen_subdirs { + my ($dir) = @_; + + my $file = "$dir/autogen.subdirs"; + if (-f $file) { + open(FILE, $file) || my_die "Can't open $file"; + while () { + chomp; + $_ =~ s/#.*$//; + $_ =~ s/^\s*//; + $_ =~ s/\s*$//; + if ($_ ne "") { + print " Found subdir: $_ (will process later)\n"; + + # Note: there's no real technical reason to defer + # processing the subdirs. It's more of an aesthetic + # reason -- don't interrupt the current flow of + # finding mca / ext / contribs (which is a nice, fast + # process). Then process the subdirs (which is a slow + # process) all at once. + push(@subdirs, "$dir/$_"); + } + } + close(FILE); + } +} + +############################################################################## + +sub mca_process_component { + my ($topdir, $project, $framework, $component) = @_; + + my $pname = $project->{name}; + my $pdir = $project->{dir}; + my $cdir = "$topdir/$pdir/mca/$framework/$component"; + + return + if (! -d $cdir); + + # Process this directory (pretty much the same treatment as for + # mpiext, so it's in a sub). + my $found_component; + + # Does this directory have a configure.m4 file? + if (-f "$cdir/configure.m4") { + $found_component->{"configure.m4"} = 1; + verbose " Found configure.m4 file\n"; + } + + $found_component->{"name"} = $component; + + # Push the results onto the $mca_found hash array + push(@{$mca_found->{$pname}->{$framework}->{"components"}}, + $found_component); + + # Is there an autogen.subdirs in here? + process_autogen_subdirs($cdir); +} + +############################################################################## + +sub ignored { + my ($dir) = @_; + + # If this directory does not have .opal_ignore, or if it has a + # .opal_unignore that has my username in it, then add it to the + # list of components. + my $ignored = 0; + + if (-f "$dir/.opal_ignore") { + $ignored = 1; + } + if (-f "$dir/.opal_unignore") { + open(UNIGNORE, "$dir/.opal_unignore") || + my_die "Can't open $dir/.opal_unignore file"; + my $unignore; + $unignore .= $_ + while (); + close(UNIGNORE); + + $ignored = 0 + if ($unignore =~ /^$username$/m || + $unignore =~ /^$username\@$hostname$/m || + $unignore =~ /^$username\@$full_hostname$/m); + } + + return $ignored; +} + +############################################################################## + +sub mca_process_framework { + my ($topdir, $project, $framework) = @_; + + my $pname = $project->{name}; + my $pdir = $project->{dir}; + + # Does this framework have a configure.m4 file? + my $dir = "$topdir/$pdir/mca/$framework"; + if (-f "$dir/configure.m4") { + $mca_found->{$pname}->{$framework}->{"configure.m4"} = 1; + verbose " Found framework configure.m4 file\n"; + } + + # Did we exclude all components for this framework? + if (exists($exclude_list->{$framework}) && + $exclude_list->{$framework}[0] eq "AGEN_EXCLUDE_ALL") { + verbose " => Excluded\n"; + } else { + # Look for component directories in this framework + if (-d $dir) { + $mca_found->{$pname}->{$framework}->{found} = 1; + opendir(DIR, $dir) || + my_die "Can't open $dir directory"; + foreach my $d (sort(readdir(DIR))) { + # Skip any non-directory, "base", or any dir that + # begins with "." + next + if (! -d "$dir/$d" || $d eq "base" || + substr($d, 0, 1) eq "."); + + # Skip any component that doesn't have a configure.m4 + # or Makefile.am as we couldn't build it anyway + if (! -f "$dir/$d/configure.m4" && + ! -f "$dir/$d/Makefile.am" && + ! -f "$dir/$d/configure.ac" && + ! -f "$dir/$d/configure.in") { + verbose " => No sentinel file found in $dir/$d -> Excluded\n"; + next; + } + + verbose "--- Found $pname / $framework / $d component\n"; + + # Skip if specifically excluded + if (exists($exclude_list->{$framework}) && + $exclude_list->{$framework}[0] eq $d) { + verbose " => Excluded\n"; + next; + } + + # Skip if the framework is on the include list, but + # doesn't contain this component + if (exists($include_list->{$framework})) { + my $tst = 0; + foreach my $ck (@{$include_list->{$framework}}) { + if ($ck ne $d) { + verbose " => Not included\n"; + $tst = 1; + last; + } + } + if ($tst) { + next; + } + } + + # Check ignore status + if (ignored("$dir/$d")) { + verbose " => Ignored (found .opal_ignore file)\n"; + } else { + mca_process_component($topdir, $project, $framework, $d); + } + } + } + closedir(DIR); + } +} + +############################################################################## + +sub mca_generate_framework_header(\$\@) { + my ($project, @frameworks) = @_; + my $framework_array_output=""; + my $framework_decl_output=""; + + foreach my $framework (@frameworks) { + # There is no common framework object + if ($framework ne "common") { + my $framework_name = "${project}_${framework}_base_framework"; + $framework_array_output .= " &$framework_name,\n"; + $framework_decl_output .= "extern mca_base_framework_t $framework_name;\n"; + } + } + + my $ifdef_string = uc "${project}_FRAMEWORKS_H"; + open(FRAMEWORKS_OUT, ">$project/include/$project/frameworks.h"); + printf FRAMEWORKS_OUT "%s", "/* + * This file is autogenerated by autogen.pl. Do not edit this file by hand. + */ +#ifndef $ifdef_string +#define $ifdef_string + +#include + +$framework_decl_output +static mca_base_framework_t *${project}_frameworks[] = { +$framework_array_output NULL +}; + +#endif /* $ifdef_string */\n\n"; + close(FRAMEWORKS_OUT); +} + +############################################################################## + +sub mca_process_project { + my ($topdir, $project) = @_; + + my $pname = $project->{name}; + my $pdir = $project->{dir}; + + # Does this project have a configure.m4 file? + if (-f "$topdir/$pdir/configure.m4") { + $mca_found->{$pname}->{"configure.m4"} = 1; + verbose " Found $topdir/$pdir/configure.m4 file\n"; + } + + # Look for framework directories in this project + my $dir = "$topdir/$pdir/mca"; + if (-d $dir) { + opendir(DIR, $dir) || + my_die "Can't open $dir directory"; + my @my_dirs = readdir(DIR); + @my_dirs = sort(@my_dirs); + + foreach my $d (@my_dirs) { + # Skip any non-directory, "base", or any dir that begins with "." + next + if (! -d "$dir/$d" || $d eq "base" || substr($d, 0, 1) eq "."); + + my $framework_header = "$dir/$d/$d.h"; + + # If there's a $dir/$d/autogen.options file, read it + my $ao_file = "$dir/$d/autogen.options"; + if (-r $ao_file) { + verbose "\n>>> Found $dir/$d/autogen.options file\n"; + open(IN, $ao_file) || + die "$ao_file present, but cannot open it"; + while () { + if (m/\s*framework_header\s*=\s*(.+?)\s*$/) { + verbose " Framework header entry: $1\n"; + $framework_header = "$dir/$d/$1"; + } + } + close(IN); + } + + # If this directory has a framework header and a base/ + # subdirectory, or its name is "common", then it's a + # framework. + if ("common" eq $d || !$project->{need_base} || + (-f $framework_header && -d "$dir/$d/base")) { + verbose "\n=== Found $pname / $d framework\n"; + mca_process_framework($topdir, $project, $d); + } + } + closedir(DIR); + } +} + +############################################################################## + +sub mca_run_global { + my ($projects) = @_; + + # For each project, go find a list of frameworks, and for each of + # those, go find a list of components. + my $topdir = Cwd::cwd(); + foreach my $p (@$projects) { + if (-d "$topdir/$p->{dir}") { + verbose "\n*** Found $p->{name} project\n"; + mca_process_project($topdir, $p); + } + } + + # Debugging output + debug_dump($mca_found); + + # Save (just) the list of MCA projects in the m4 file + my $str; + foreach my $p (@$projects) { + my $pname = $p->{name}; + # Check if this project is an MCA project (contains MCA framework) + if (exists($mca_found->{$pname})) { + $str .= "$p->{name}, "; + } + } + $str =~ s/, $//; + $m4 .= "\ndnl List of MCA projects found by autogen.pl +m4_define([mca_project_list], [$str])\n"; + + #----------------------------------------------------------------------- + + $m4 .= "\n$dnl_line +$dnl_line +$dnl_line + +dnl MCA information\n"; + + # Array for all the m4_includes that we'll need to pick up the + # configure.m4's. + my @includes; + + # Next, for each project, write the list of frameworks + foreach my $p (@$projects) { + + my $pname = $p->{name}; + my $pdir = $p->{dir}; + + if (exists($mca_found->{$pname})) { + my $frameworks_comma; + + # Does this project have a configure.m4 file? + push(@includes, "$pdir/configure.m4") + if (exists($mca_found->{$p}->{"configure.m4"})); + + # Print out project-level info + my @mykeys = keys(%{$mca_found->{$pname}}); + @mykeys = sort(@mykeys); + + # Ensure that the "common" framework is listed first + # (if it exists) + my @tmp; + push(@tmp, "common") + if (grep(/common/, @mykeys)); + foreach my $f (@mykeys) { + push(@tmp, $f) + if ($f ne "common"); + } + @mykeys = @tmp; + + foreach my $f (@mykeys) { + $frameworks_comma .= ", $f"; + + # Does this framework have a configure.m4 file? + push(@includes, "$pdir/mca/$f/configure.m4") + if (exists($mca_found->{$pname}->{$f}->{"configure.m4"})); + + # This framework does have a Makefile.am (or at least, + # it should!) + my_die "Missing $pdir/mca/$f/Makefile.am" + if (! -f "$pdir/mca/$f/Makefile.am"); + } + $frameworks_comma =~ s/^, //; + + &mca_generate_framework_header($pname, @mykeys); + + $m4 .= "$dnl_line + +dnl Frameworks in the $pname project and their corresponding directories +m4_define([mca_${pname}_framework_list], [$frameworks_comma]) + +"; + + # Print out framework-level info + foreach my $f (@mykeys) { + my $components; + my $m4_config_component_list; + my $no_config_component_list; + + # Troll through each of the found components + foreach my $comp (@{$mca_found->{$pname}->{$f}->{components}}) { + my $c = $comp->{name}; + $components .= "$c "; + + # Does this component have a configure.m4 file? + if (exists($comp->{"configure.m4"})) { + push(@includes, "$pdir/mca/$f/$c/configure.m4"); + $m4_config_component_list .= ", $c"; + } else { + $no_config_component_list .= ", $c"; + } + } + $m4_config_component_list =~ s/^, //; + $no_config_component_list =~ s/^, //; + + $m4 .= "dnl Components in the $pname / $f framework +m4_define([mca_${pname}_${f}_m4_config_component_list], [$m4_config_component_list]) +m4_define([mca_${pname}_${f}_no_config_component_list], [$no_config_component_list]) + +"; + } + } + } + + # List out all the m4_include + $m4 .= "$dnl_line + +dnl List of configure.m4 files to include\n"; + foreach my $i (@includes) { + $m4 .= "m4_include([$i])\n"; + } +} + +############################################################################## + +sub mpiext_process_extension { + my ($topdir, $ext_prefix, $extdir) = @_; + + my $edir = "$topdir/$ext_prefix/$extdir"; + return + if (! -d $edir); + + # Process this directory (pretty much the same treatment as for + # MCA components, so it's in a sub). + my $found_ext; + + $found_ext->{"name"} = $extdir; + + # Push the results onto the hash array + push(@{$mpiext_found}, $found_ext); + + # Is there an autogen.subdirs in here? + process_autogen_subdirs($edir); +} + +############################################################################## + +sub mpiext_run_global { + my ($ext_prefix) = @_; + + my $topdir = Cwd::cwd(); + + my $dir = "$topdir/$ext_prefix"; + opendir(DIR, $dir) || + my_die "Can't open $dir directory"; + foreach my $d (sort(readdir(DIR))) { + # Skip any non-directory, "base", or any dir that begins with "." + next + if (! -d "$dir/$d" || $d eq "base" || substr($d, 0, 1) eq "."); + + # If this directory has a configure.m4, then it's an + # extension. + if (-f "$dir/$d/configure.m4") { + verbose "=== Found $d MPI extension"; + + # Check ignore status + if (ignored("$dir/$d")) { + verbose " (ignored)\n"; + } else { + verbose "\n"; + mpiext_process_extension($topdir, $ext_prefix, $d); + } + } + } + closedir(DIR); + debug_dump($mpiext_found); + + #----------------------------------------------------------------------- + + $m4 .= "\n$dnl_line +$dnl_line +$dnl_line + +dnl Open MPI extensions information +$dnl_line\n\n"; + + # Array for all the m4_includes that we'll need to pick up the + # configure.m4's. + my @includes; + my $m4_config_ext_list; + + # Troll through each of the found exts + foreach my $ext (@{$mpiext_found}) { + my $e = $ext->{name}; + push(@includes, "$ext_prefix/$e/configure.m4"); + $m4_config_ext_list .= ", $e"; + } + + $m4_config_ext_list =~ s/^, //; + + # List the M4 and no configure exts + $m4 .= "dnl List of all MPI extensions +m4_define([ompi_mpiext_list], [$m4_config_ext_list])\n"; + # List out all the m4_include + $m4 .= "\ndnl List of configure.m4 files to include\n"; + foreach my $i (@includes) { + $m4 .= "m4_include([$i])\n"; + } +} + +############################################################################## + +sub mpicontrib_process { + my ($topdir, $contrib_prefix, $contribdir) = @_; + + my $cdir = "$topdir/$contrib_prefix/$contribdir"; + return + if (! -d $cdir); + + # Process this directory (pretty much the same treatment as for + # MCA components, so it's in a sub). + my $found_contrib; + + $found_contrib->{"name"} = $contribdir; + + # Push the results onto the hash array + push(@{$mpicontrib_found}, $found_contrib); + + # Is there an autogen.subdirs in here? + process_autogen_subdirs($cdir); +} + +############################################################################## + +sub mpicontrib_run_global { + my ($contrib_prefix) = @_; + + my $topdir = Cwd::cwd(); + + my $dir = "$topdir/$contrib_prefix"; + opendir(DIR, $dir) || + my_die "Can't open $dir directory"; + foreach my $d (sort(readdir(DIR))) { + # Skip any non-directory, "base", or any dir that begins with "." + next + if (! -d "$dir/$d" || $d eq "base" || substr($d, 0, 1) eq "."); + + # If this directory has a configure.m4, then it's an + # contrib. + if (-f "$dir/$d/configure.m4") { + verbose "=== Found $d MPI contrib"; + + # Check ignore status + if (ignored("$dir/$d")) { + verbose " (ignored)\n"; + } else { + verbose "\n"; + mpicontrib_process($topdir, $contrib_prefix, $d); + } + } + } + closedir(DIR); + debug_dump($mpicontrib_found); + + #----------------------------------------------------------------------- + + $m4 .= "\n$dnl_line +$dnl_line +$dnl_line + +dnl Open MPI contrib information +$dnl_line\n\n"; + + # Array for all the m4_includes that we'll need to pick up the + # configure.m4's. + my @includes; + my $m4_config_contrib_list; + + # Troll through each of the found contribs + foreach my $contrib (@{$mpicontrib_found}) { + my $c = $contrib->{name}; + push(@includes, "$contrib_prefix/$c/configure.m4"); + $m4_config_contrib_list .= ", $c"; + } + + $m4_config_contrib_list =~ s/^, //; + + # List the M4 and no configure contribs + $m4 .= "dnl List of all MPI contribs +m4_define([ompi_mpicontrib_list], [$m4_config_contrib_list])\n"; + # List out all the m4_include + $m4 .= "\ndnl List of configure.m4 files to include\n"; + foreach my $i (@includes) { + $m4 .= "m4_include([$i])\n"; + } +} + +############################################################################## +# Find and remove stale files + +sub find_and_delete { + foreach my $file (@_) { + my $removed = 0; + if (-f $file) { + unlink($file); + $removed = 1; + } + if (-f "config/$file") { + unlink("config/$file"); + $removed = 1; + } + debug " Removed stale copy of $file\n" + if ($removed); + } +} + +############################################################################## +# Find a specific executable and ensure that it is a recent enough +# version. + +sub find_and_check { + my ($app, $app_name, $req_version) = @_; + + my @search_path = split(/;/, $app_name); + my @min_version = split(/\./, $req_version); + my @versions_found = (); + + foreach (@search_path) { + verbose " Searching for $_\n"; + my $version = `$_ --version`; + if (!defined($version)) { + verbose " $_ not found\n"; + next; + } + + # Matches a version string with 1 or more parts possibly prefixed with a letter (ex: + # v2.2) or followed by a letter (ex: 2.2.6b). This regex assumes there is a space + # before the version string and that the version is ok if there is no version. + if (!($version =~ m/\s[vV]?(\d[\d\.]*\w?)/m)) { + verbose " WARNING: $_ does not appear to support --version. Assuming it is ok\n"; + + return; + } + + $version = $1; + + verbose " Found $_ version $version; checking version...\n"; + push(@versions_found, $version); + + my @parts = split(/\./, $version); + my $i = 0; + # Check every component of the version number + while ($i <= $#min_version) { + verbose " Found version component $parts[$i] -- need $min_version[$i]\n"; + + # Check to see if there are any characters (!) in the + # version number (e.g., Libtool's "2.2.6b" -- #%@#$%!!!). + # Do separate comparisons between the number and any + # trailing digits. You can't just "lt" compare the whole + # string because "10 lt 2b" will return true. #@$@#$#@$ + # Libtool!! + $parts[$i] =~ m/(\d+)([a-z]*)/i; + my $pn = $1; + my $pa = $2; + $min_version[$i] =~ m/(\d+)([a-z]*)/i; + my $mn = $1; + my $ma = $2; + + # If the version is higher, we're done. + if ($pn > $mn) { + verbose " ==> ACCEPTED\n"; + return; + } + # If the version is lower, we're done. + elsif ($pn < $mn || + ($pn == $mn && $pa lt $ma)) { + verbose " ==> Too low! Skipping this version\n"; + last; + } + + # If the version was equal, keep checking. + ++$i; + } + + # If we found a good version, return. + if ($i > $#min_version) { + verbose " ==> ACCEPTED\n"; + return; + } + } + + # if no acceptable version found, reject it + print " +================================================================= +I could not find a recent enough copy of $app. +I need at least $req_version, but only found the following versions:\n\n"; + + my $i = 0; + foreach (@search_path) { + print " $_: $versions_found[$i]\n"; + $i++; + } + + print "\nI am gonna abort. :-( + +Please make sure you are using at least the following versions of the +tools: + + GNU Autoconf: $ompi_autoconf_version + GNU Automake: $ompi_automake_version + GNU Libtool: $ompi_libtool_version +=================================================================\n"; + my_exit(1); +} + +############################################################################## + +sub safe_system { + print "Running: " . join(/ /, @_) . "\n"; + my $ret = system(@_); + $ret >>= 8; + if (0 != $ret) { + print "Command failed: @_\n"; + my_exit($ret); + } + $ret; +} + +############################################################################## + +sub patch_autotools_output { + my ($topdir) = @_; + + # Set indentation string for verbose output depending on current directory. + my $indent_str = " "; + if ($topdir eq ".") { + $indent_str = "=== "; + } + + # Patch ltmain.sh error for PGI version numbers. Redirect stderr to + # /dev/null because this patch is only necessary for some versions of + # Libtool (e.g., 2.2.6b); it'll [rightfully] fail if you have a new + # enough Libtool that dosn't need this patch. But don't alarm the + # user and make them think that autogen failed if this patch fails -- + # make the errors be silent. + # Also patch ltmain.sh for NAG compiler + if (-f "config/ltmain.sh") { + verbose "$indent_str"."Patching PGI compiler version numbers in ltmain.sh\n"; + system("$patch_prog -N -p0 < $topdir/config/ltmain_pgi_tp.diff >/dev/null 2>&1"); + unlink("config/ltmain.sh.rej"); + + verbose "$indent_str"."Patching \"-pthread\" option for NAG compiler in ltmain.sh\n"; + system("$patch_prog -N -p0 < $topdir/config/ltmain_nag_pthread.diff >/dev/null 2>&1"); + unlink("config/ltmain.sh.rej"); + } + + # If there's no configure script, there's nothing else to do. + return + if (! -f "configure"); + my @verbose_out; + + # Total ugh. We have to patch the configure script itself. See below + # for explainations why. + open(IN, "configure") || my_die "Can't open configure"; + my $c; + $c .= $_ + while(); + close(IN); + my $c_orig = $c; + + # LT <=2.2.6b need to be patched for the PGI 10.0 fortran compiler + # name (pgfortran). The following comes from the upstream LT patches: + # http://lists.gnu.org/archive/html/libtool-patches/2009-11/msg00012.html + # http://lists.gnu.org/archive/html/bug-libtool/2009-11/msg00045.html + # Note that that patch is part of Libtool (which is not in this OMPI + # source tree); we can't fix it. So all we can do is patch the + # resulting configure script. :-( + push(@verbose_out, $indent_str . "Patching configure for Libtool PGI 10 fortran compiler name\n"); + $c =~ s/gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn/gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn/g; + $c =~ s/pgcc\* \| pgf77\* \| pgf90\* \| pgf95\*\)/pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)/g; + $c =~ s/pgf77\* \| pgf90\* \| pgf95\*\)/pgf77* | pgf90* | pgf95* | pgfortran*)/g; + + # Similar issue as above -- the PGI 10 version number broke <=LT + # 2.2.6b's version number checking regexps. Again, we can't fix the + # Libtool install; all we can do is patch the resulting configure + # script. :-( The following comes from the upstream patch: + # http://lists.gnu.org/archive/html/libtool-patches/2009-11/msg00016.html + push(@verbose_out, $indent_str . "Patching configure for Libtool PGI version number regexps\n"); + $c =~ s/\*pgCC\\ \[1-5\]\* \| \*pgcpp\\ \[1-5\]\*/*pgCC\\ [1-5]\.* | *pgcpp\\ [1-5]\.*/g; + + # Similar issue as above -- fix the case statements that handle the Sun + # Fortran version strings. + # + # Note: we have to use octal escapes to match '*Sun\ F*) and the + # four succeeding lines in the bourne shell switch statement. + # \ = 134 + # ) = 051 + # * = 052 + # + # Below is essentially an upstream patch for Libtool which we want + # made available to Open MPI users running older versions of Libtool + + foreach my $tag (("", "_FC")) { + + # We have to change the search pattern and substitution on each + # iteration to take into account the tag changing + my $search_string = '\052Sun\134 F\052.*\n.*\n\s+' . + "lt_prog_compiler_pic${tag}" . '.*\n.*\n.*\n.*\n'; + my $replace_string = " + *Sun\\ Ceres\\ Fortran* | *Sun*Fortran*\\ [[1-7]].* | *Sun*Fortran*\\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic${tag}='-KPIC' + lt_prog_compiler_static${tag}='-Bstatic' + lt_prog_compiler_wl${tag}='' + ;; + *Sun\\ F* | *Sun*Fortran*) + lt_prog_compiler_pic${tag}='-KPIC' + lt_prog_compiler_static${tag}='-Bstatic' + lt_prog_compiler_wl${tag}='-Qoption ld ' + ;; +"; + + push(@verbose_out, $indent_str . "Patching configure for Sun Studio Fortran version strings ($tag)\n"); + $c =~ s/$search_string/$replace_string/; + } + + foreach my $tag (("", "_FC")) { + + # We have to change the search pattern and substitution on each + # iteration to take into account the tag changing + my $search_string = 'lf95\052.*# Lahey Fortran 8.1\n\s+' . + "whole_archive_flag_spec${tag}=" . '\n\s+' . + "tmp_sharedflag='--shared' ;;" . '\n\s+' . + 'xl'; + my $replace_string = "lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec${tag}= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared';; + xl"; + + push(@verbose_out, $indent_str . "Patching configure for NAG compiler ($tag)\n"); + $c =~ s/$search_string/$replace_string/; + } + + # Oracle has apparently begun (as of 12.5-beta) removing the "Sun" branding. + # So this patch (cumulative over the previous one) is required. + push(@verbose_out, $indent_str . "Patching configure for Oracle Studio Fortran version strings\n"); + $c =~ s/\*Sun\*Fortran\*\)/*Sun*Fortran* | *Studio*Fortran*)/g; + $c =~ s/\*Sun\\ F\*\)(.*\n\s+tmp_sharedflag=)/*Sun\\ F* | *Studio*Fortran*)$1/g; + + # See http://git.savannah.gnu.org/cgit/libtool.git/commit/?id=v2.2.6-201-g519bf91 for details + # Note that this issue was fixed in LT 2.2.8, however most distros are still using 2.2.6b + + push(@verbose_out, $indent_str . "Patching configure for IBM xlf libtool bug\n"); + $c =~ s/(\$LD -shared \$libobjs \$deplibs \$)compiler_flags( -soname \$soname)/$1linker_flags$2/g; + + #Check if we are using a recent enough libtool that supports PowerPC little endian + if(index($c, 'powerpc64le-*linux*)') == -1) { + push(@verbose_out, $indent_str . "Patching configure for PowerPC little endian support\n"); + my $replace_string = "x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*|"; + $c =~ s/x86_64-\*kfreebsd\*-gnu\|x86_64-\*linux\*\|ppc\*-\*linux\*\|powerpc\*-\*linux\*\|/$replace_string/g; + $replace_string = + "powerpc64le-*linux*)\n\t LD=\"\${LD-ld} -m elf32lppclinux\"\n\t ;;\n\t powerpc64-*linux*)"; + $c =~ s/ppc64-\*linux\*\|powerpc64-\*linux\*\)/$replace_string/g; + $replace_string = + "powerpcle-*linux*)\n\t LD=\"\${LD-ld} -m elf64lppc\"\n\t ;;\n\t powerpc-*linux*)"; + $c =~ s/ppc\*-\*linux\*\|powerpc\*-\*linux\*\)/$replace_string/g; + } + + # Fix consequence of broken libtool.m4 + # see http://lists.gnu.org/archive/html/bug-libtool/2015-07/msg00002.html and + # https://github.com/open-mpi/ompi/issues/751 + push(@verbose_out, $indent_str . "Patching configure for libtool.m4 bug\n"); + # patch for libtool < 2.4.3 + $c =~ s/# Some compilers place space between "-\{L,R\}" and the path.\n # Remove the space.\n if test \$p = \"-L\" \|\|/# Some compilers place space between "-\{L,-l,R\}" and the path.\n # Remove the spaces.\n if test \$p = \"-L\" \|\|\n test \$p = \"-l\" \|\|/g; + # patch for libtool >= 2.4.3 + $c =~ s/# Some compilers place space between "-\{L,R\}" and the path.\n # Remove the space.\n if test x-L = \"\$p\" \|\|\n test x-R = \"\$p\"\; then/# Some compilers place space between "-\{L,-l,R\}" and the path.\n # Remove the spaces.\n if test x-L = \"x\$p\" \|\|\n test x-l = \"x\$p\" \|\|\n test x-R = \"x\$p\"\; then/g; + + # Only write out verbose statements and a new configure if the + # configure content actually changed + return + if ($c eq $c_orig); + foreach my $str (@verbose_out) { + verbose($str); + } + + open(OUT, ">configure.patched") || my_die "Can't open configure.patched"; + print OUT $c; + close(OUT); + # Use cp so that we preserve permissions on configure + safe_system("cp configure.patched configure"); + unlink("configure.patched"); +} + +sub in_tarball { + my $tarball = 0; + open(IN, "VERSION") || my_die "Can't open VERSION"; + # If repo_rev is not an empty string, we are in a tarball + while () { + my $line = $_; + my @fields = split(/=/,$line); + if ($fields[0] eq "repo_rev") { + if ($fields[1] ne "\n") { + $tarball = 1; + last; + } + } + } + close(IN); + return $tarball; +} + +############################################################################## +############################################################################## +## main - do the real work... +############################################################################## +############################################################################## + +# Command line parameters + +my $ok = Getopt::Long::GetOptions("no-ompi" => \$no_ompi_arg, + "no-orte" => \$no_orte_arg, + "no-oshmem" => \$no_oshmem_arg, + "quiet|q" => \$quiet_arg, + "debug|d" => \$debug_arg, + "help|h" => \$help_arg, + "platform=s" => \$platform_arg, + "include=s" => \$include_arg, + "exclude=s" => \$exclude_arg, + "force|f" => \$force_arg, + ); + +if (!$ok || $help_arg) { + print "Invalid command line argument.\n\n" + if (!$ok); + print "Options: + --no-ompi | -no-ompi Do not build the Open MPI layer + --no-orte | -no-orte Do not build the ORTE layer + --no-oshmem | -no-oshmem Do not build the OSHMEM layer + --quiet | -q Do not display normal verbose output + --debug | -d Output lots of debug information + --help | -h This help list + --platform | -p Specify a platform file to be parsed for no_build + and only_build directives + --include | -i Comma-separated list of framework-component pairs + to be exclusively built - i.e., all other components + will be ignored and only those specified will be marked + to build + --exclude | -e Comma-separated list of framework or framework-component + to be excluded from the build + --force | -f Run even if invoked from the source tree of an expanded + distribution tarball\n"; + my_exit($ok ? 0 : 1); +} + +#--------------------------------------------------------------------------- + +# Check for project existence +my $project_name_long = "Open MPI"; +my $project_name_short = "openmpi"; + +if (! -e "ompi") { + $no_ompi_arg = 1; + debug "No ompi subdirectory found - will not build MPI layer\n"; +} +if (! -e "orte") { + $no_orte_arg = 1; + debug "No orte subdirectory found - will not build ORTE\n"; +} +if (! -e "oshmem") { + $no_oshmem_arg = 1; + debug "No oshmem subdirectory found - will not build OSHMEM\n"; +} + +if (-e "orcm") { + # bozo check - ORCM requires ORTE + if ($no_orte_arg == 1) { + print "Cannot build ORCM without ORTE\n"; + my_exit(1); + } + $project_name_long = "Open Resilient Cluster Manager"; + $project_name_short = "open-rcm"; +} elsif ($no_ompi_arg == 1) { + if ($no_orte_arg == 0) { + $project_name_long = "Open MPI Run Time Environment"; + $project_name_short = "open-rte"; + } else { + $project_name_long = "Open Portability Access Layer"; + $project_name_short = "open-pal"; + } +} + +#--------------------------------------------------------------------------- + +$full_hostname = `hostname`; +chomp($full_hostname); + +$m4 = "dnl +dnl \$HEADER\$ +dnl +$dnl_line +dnl This file is automatically created by autogen.pl; it should not +dnl be edited by hand!! +dnl +dnl Generated by $username at " . localtime(time) . " +dnl on $full_hostname. +$dnl_line\n\n"; + +#--------------------------------------------------------------------------- + +# Verify that we're in the OMPI root directorty by checking for a token file. + +my_die "Not at the root directory of an OMPI source tree" + if (! -f "config/opal_try_assemble.m4"); + +my_die "autogen.pl has been invoked in the source tree of an Open MPI distribution tarball; aborting... +You likely do not need to invoke \"autogen.pl\" -- you can probably run \"configure\" directly. +If you really know what you are doing, and really need to run autogen.pl, use the \"--force\" flag." + if (!$force_arg && in_tarball()); + +# Now that we've verified that we're in the top-level OMPI directory, +# set the sentinel file to remove if we abort. +$sentinel = Cwd::cwd() . "/configure"; + +#--------------------------------------------------------------------------- + +my $step = 1; +verbose "Open MPI autogen (buckle up!) + +$step. Checking tool versions\n\n"; + +# Check the autotools revision levels +&find_and_check("autoconf", $ompi_autoconf_search, $ompi_autoconf_version); +&find_and_check("libtool", $ompi_libtoolize_search, $ompi_libtool_version); +&find_and_check("automake", $ompi_automake_search, $ompi_automake_version); + +#--------------------------------------------------------------------------- + +# Save the platform file in the m4 +$m4 .= "dnl Platform file\n"; + +# Process platform arg, if provided +if ($platform_arg) { + $m4 .= "m4_define([autogen_platform_file], [$platform_arg])\n\n"; + open(IN, $platform_arg) || my_die "Can't open $platform_arg"; + # Read all lines from the file + while () { + my $line = $_; + my @fields = split(/=/,$line); + if ($fields[0] eq "enable_mca_no_build") { + if ($exclude_arg) { + print "The specified platform file includes an +enable_mca_no_build line. However, your command line +also contains an exclude specification. Only one of +these directives can be given.\n"; + my_exit(1); + } + $exclude_arg = $fields[1]; + } elsif ($fields[0] eq "enable_mca_only_build") { + if ($include_arg) { + print "The specified platform file includes an +enable_mca_only_build line. However, your command line +also contains an include specification. Only one of +these directives can be given.\n"; + my_exit(1); + } + $include_arg = $fields[1]; + } + } + close(IN); +} else { + # No platform file -- write an empty list + $m4 .= "m4_define([autogen_platform_file], [])\n\n"; +} + +if ($exclude_arg) { + debug "Using exclude list: $exclude_arg"; + my @list = split(/,/, $exclude_arg); + foreach (@list) { + my @pairs = split(/-/, $_); + if (exists($pairs[1])) { + # Remove any trailing newlines + chomp($pairs[1]); + debug " Adding ".$pairs[0]."->".$pairs[1]." to exclude list\n"; + push(@{$exclude_list->{$pairs[0]}}, $pairs[1]); + } else { + debug " Adding $pairs[0] to exclude list\n"; + push(@{$exclude_list->{$pairs[0]}}, "AGEN_EXCLUDE_ALL"); + } + } +} +if ($include_arg) { + debug "Using include list: $include_arg"; + my @list = split(/,/, $include_arg); + foreach (@list) { + my @pairs = split(/-/, $_); + if (exists($pairs[1])) { + # Remove any trailing newlines + chomp($pairs[1]); + debug " Adding ".$pairs[0]."->".$pairs[1]." to include list\n"; + push(@{$include_list->{$pairs[0]}}, $pairs[1]); + } + # NOTE: it makes no sense to include all as that is the default + # so ignore that scenario here, if given + } +} + +#--------------------------------------------------------------------------- + +++$step; +verbose "\n$step. Running template-generating scripts\n\n"; + +# These scripts generate fortran header files of different types, but +# guaranteed to have the same value (i.e., so humans don't have to +# maintain two sets of files, and potentially have values get out of +# sync). + +my @scripts; +push(@scripts, "ompi/include/mpif-values.pl"); + +foreach my $s (@scripts) { + verbose "=== $s\n"; + if (! -x $s) { + print "Cannot find executable $s!\nAborting.\n"; + my_exit(1); + } + if (system($s) != 0) { + print "Script failed: $s\n"; + my_exit(1); + } +} + +#--------------------------------------------------------------------------- + +# Find projects, frameworks, components +++$step; +verbose "\n$step. Searching for projects, MCA frameworks, and MCA components\n"; + +my $ret; + +# Figure out if we're at the top level of the OMPI tree or not. +if (! (-f "VERSION" && -f "configure.ac" && -f $topdir_file)) { + print("\n\nYou must run this script from the top-level directory of the Open MPI tree.\n\n"); + my_exit(1); +} + +# Top-level projects to examine +my $projects; +push(@{$projects}, { name => "opal", dir => "opal", need_base => 1 }); +push(@{$projects}, { name => "orte", dir => "orte", need_base => 1 }) + if (!$no_orte_arg); +push(@{$projects}, { name => "ompi", dir => "ompi", need_base => 1 }) + if (!$no_ompi_arg); +push(@{$projects}, { name => "oshmem", dir => "oshmem", need_base => 1 }) + if (!$no_ompi_arg && !$no_orte_arg && !$no_oshmem_arg); +push(@{$projects}, { name => "orcm", dir => "orcm", need_base => 1 }) + if (-e "orcm"); + +$m4 .= "dnl Separate m4 define for each project\n"; +foreach my $p (@$projects) { + $m4 .= "m4_define([project_$p->{name}], [1])\n"; +} + +$m4 .= "\ndnl Project names +m4_define([project_name_long], [$project_name_long]) +m4_define([project_name_short], [$project_name_short])\n"; + +# Setup MCA +mca_run_global($projects); + +#--------------------------------------------------------------------------- + +# Find MPI extensions and contribs +if (!$no_ompi_arg) { + ++$step; + verbose "\n$step. Searching for Open MPI extensions\n\n"; + mpiext_run_global("ompi/mpiext"); + + ++$step; + verbose "\n$step. Searching for Open MPI contribs\n\n"; + mpicontrib_run_global("ompi/contrib"); +} + +#--------------------------------------------------------------------------- + +# Process all subdirs that we found in previous steps +++$step; +verbose "\n$step. Processing autogen.subdirs directories\n"; + +if ($#subdirs >= 0) { + foreach my $d (@subdirs) { + process_subdir($d); + } +} else { + print "\n"; +} + +#--------------------------------------------------------------------------- + +# If we got here, all was good. Run the auto tools. +++$step; +verbose "\n$step. Running autotools on top-level tree\n\n"; + +# Remove old versions of the files (this is probably overkill, but...) +verbose "==> Remove stale files\n"; +find_and_delete(qw/config.guess config.sub depcomp compile install-sh ltconfig + ltmain.sh missing mkinstalldirs libtool/); + +# Remove the old m4 file and write the new one +verbose "==> Writing m4 file with autogen.pl results\n"; +unlink($m4_output_file); +open(M4, ">$m4_output_file") || + my_die "Can't open $m4_output_file"; +print M4 $m4; +close(M4); + +# Generate the version checking script with autom4te +verbose "==> Generating opal_get_version.sh\n"; +chdir("config"); +safe_system("autom4te --language=m4sh opal_get_version.m4sh -o opal_get_version.sh"); + +# Run autoreconf +verbose "==> Running autoreconf\n"; +chdir(".."); +my $cmd = "autoreconf -ivf --warnings=all,no-obsolete,no-override -I config"; +foreach my $project (@{$projects}) { + $cmd .= " -I $project->{dir}/config" + if (-d "$project->{dir}/config"); +} +safe_system($cmd); + +patch_autotools_output("."); + +#--------------------------------------------------------------------------- + +verbose " +================================================ +Open MPI autogen: completed successfully. w00t! +================================================\n\n"; + +# Done! +exit(0); diff --git a/config/Makefile.am b/config/Makefile.am new file mode 100644 index 00000000..85a222a7 --- /dev/null +++ b/config/Makefile.am @@ -0,0 +1,34 @@ +# +# Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2006-2015 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2010 Oracle and/or its affiliates. All rights +# reserved. +# Copyright (c) 2014-2015 Intel, Inc. All rights reserved. +# Copyright (c) 2016 Research Organization for Information Science +# and Technology (RIST). All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +EXTRA_DIST = \ + distscript.sh \ + opal_get_version.m4sh \ + ltmain_nag_pthread.diff \ + ltmain_pgi_tp.diff \ + opal_mca_priority_sort.pl \ + find_common_syms + +maintainer-clean-local: + rm -f opal_get_version.sh diff --git a/config/Makefile.options b/config/Makefile.options new file mode 100644 index 00000000..7f42e967 --- /dev/null +++ b/config/Makefile.options @@ -0,0 +1,20 @@ +# -*- makefile -*- +# +# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +AUTOMAKE_OPTIONS = foreign dist-bzip2 diff --git a/config/c_get_alignment.m4 b/config/c_get_alignment.m4 new file mode 100644 index 00000000..4ec7bf7c --- /dev/null +++ b/config/c_get_alignment.m4 @@ -0,0 +1,72 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2009 Sun Microsystems, Inc. All rights reserved. +dnl Copyright (c) 2014-2015 Intel, Inc. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OPAL_C_GET_ALIGN(type, config_var) +# ---------------------------------- +# Determine datatype alignment. +# First arg is type, 2nd arg is config var to define. +# Now that we require C99 compilers, we include stdbool.h +# in the alignment test so that we can find the definition +# of "bool" when we test for its alignment. We might be able +# to avoid this if we test for alignemtn of _Bool, but +# since we use "bool" in the code, let's be safe and check +# what we use. Yes, they should be the same - but "should" and +# "are" frequently differ +AC_DEFUN([OPAL_C_GET_ALIGNMENT],[ + AC_CACHE_CHECK([alignment of $1], + [AS_TR_SH([opal_cv_c_align_$1])], + [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT + #include ], +[[ + struct foo { char c; $1 x; }; + struct foo *p = (struct foo *) malloc(sizeof(struct foo)); + int diff; + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + diff = ((char *)&p->x) - ((char *)&p->c); + fprintf(f, "%d\n", (diff >= 0) ? diff : -diff); +]])], [AS_TR_SH([opal_cv_c_align_$1])=`cat conftestval`], + [AC_MSG_WARN([*** Problem running configure test!]) + AC_MSG_WARN([*** See config.log for details.]) + AC_MSG_ERROR([*** Cannot continue.])], + [ # cross compile - do a non-executable test. Trick + # taken from the Autoconf 2.59c. Switch to using + # AC_CHECK_ALIGNOF when we can require Autoconf 2.60. + _AC_COMPUTE_INT([(long int) offsetof (opal__type_alignof_, y)], + [AS_TR_SH([opal_cv_c_align_$1])], + [AC_INCLUDES_DEFAULT +#include + +#ifndef offsetof +# define offsetof(type, member) ((char *) &((type *) 0)->member - (char *) 0) +#endif +typedef struct { char x; $1 y; } opal__type_alignof_; +], + [AC_MSG_WARN([*** Problem running configure test!]) + AC_MSG_WARN([*** See config.log for details.]) + AC_MSG_ERROR([*** Cannot continue.])])])]) + +AC_DEFINE_UNQUOTED([$2], [$AS_TR_SH([opal_cv_c_align_$1])], [Alignment of type $1]) +eval "$2=$AS_TR_SH([opal_cv_c_align_$1])" + +rm -rf conftest* ]) dnl diff --git a/config/c_weak_symbols.m4 b/config/c_weak_symbols.m4 new file mode 100644 index 00000000..387d0eea --- /dev/null +++ b/config/c_weak_symbols.m4 @@ -0,0 +1,134 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2014 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl Copyright (c) 2014 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# _OPAL_C_WEAK_SYMBOLS(action_if_found, [action_if_not_found]) +# ------------------------------------------------------------ +AC_DEFUN([_OPAL_C_WEAK_SYMBOLS],[ + # need two files because icc will incorrectly not create the + # symbols if they are not used in the object file in which they + # are defined. Blah! + # To get to compile with icc, have them in a separate header. + cat > conftest_weak.h < conftest_weak.c < conftest.c < conftest_weak.h < conftest_weak.c < conftest.c < \$all, + "brief!" => \$brief, + "full-path!" => \$print_full_obj_path, + "objext=s" => \$objext, + "top_builddir=s" => \$top_builddir, + "top_srcdir=s" => \$top_srcdir, +) || usage(); + +if (!$top_builddir or !$top_srcdir) { + usage(); +} + +if (0 != system("command -v nm >/dev/null 2>&1")) { + print STDERR "NOTE: nm not found, skipping common symbol check\n"; + # Makefile usage should prefix this command with "-" to ignore this exit status + exit 1; +} + +# load the common symbol whitelist from files scattered around the codebase +# +# It would be better to load these into some sort of tree and then have those +# whitelists only apply to objects that are found in the same directory or +# subdirectories. That way a whitelisted symbol in one component doesn't +# "shadow" a symbol that should not be whitelisted in another component. If we +# find this is actually a problem in practice then we can write a v2 update. +my @wl_files = `find '${top_srcdir}' -name 'common_sym_whitelist.txt'`; +foreach my $wl_file (@wl_files) { + chomp $wl_file; + my @lines = `cat $wl_file`; + foreach my $line (@lines) { + chomp $line; + next if ($line =~ /^\s*#/); # skip comments + next if ($line =~ /^\s*$/); # skip blank lines + push @sym_whitelist, $line; + } +} + +my $n = 0; +open(FIND, '-|', "find ${top_builddir} -name '*.${objext}'"); +OBJECT: while (my $obj_line = ) { + my $obj = $obj_line; + chomp $obj; + + # This pattern may not be 100% robust for all implementations of nm. If + # that turns out to be the case, we can try switching to "nm -P", which is + # supposed to activate the "portable" (yet ugly) format. It's also unclear + # at this point how common support for "nm -P" is. + open(NM, '-|', "nm '${obj}' 2>/dev/null | egrep '\\s[cC]\\s'"); + SYMBOL: while (my $sym_line = ) { + if (!$all and is_whitelisted($sym_line)) { + next SYMBOL; + } + + if ($n == 0) { + print STDERR "WARNING! Common symbols found:\n"; + } + if ($brief and $n == $MAX_BRIEF) { + print STDERR "[...]\n"; + print STDERR "skipping remaining symbols. To see all symbols, run:\n"; + print STDERR " " . join(" ", ($0, grep {!/--brief/} @orig_argv)) . "\n"; + last OBJECT; + } + if ($print_full_obj_path) { + print STDERR "$obj: $sym_line"; + } else { + my $obj_basename = basename($obj); + printf STDERR "%25s: %s", $obj_basename, $sym_line; + } + ++$n; + } + close(NM); +} +close(FIND); + +if ($n > 0) { + exit 1; +} else { + exit 0; +} + +sub is_whitelisted { + my $line = shift; + + foreach my $wl_sym (@sym_whitelist) { + if ($line =~ m/\b_?\Q$wl_sym\E\b/) { + return 1; + } + } + + # Look for symbol names ending in one or more underscores and assume they + # are "Fortran-shaped". This won't match the hex output from most nm's and + # shouldn't match the single characters that indicate symbol type. + if ($line =~ m/\b_?[A-Za-z_]+[A-Za-z0-9_]*_+\b/) { + return 1; + } + + return 0; +} diff --git a/config/ltmain_nag_pthread.diff b/config/ltmain_nag_pthread.diff new file mode 100644 index 00000000..927b671f --- /dev/null +++ b/config/ltmain_nag_pthread.diff @@ -0,0 +1,18 @@ +--- config/ltmain.sh ++++ config/ltmain.sh +@@ -6417,8 +6417,14 @@ + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" ++ # and "-pthread" to "-Wl,-pthread" if NAG compiler + if test -n "$inherited_linker_flags"; then +- tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` ++ case "$CC" in ++ *nagfor*) ++ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g' | $SED 's/-pthread/-Wl,-pthread/g'`;; ++ *) ++ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`;; ++ esac + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; diff --git a/config/ltmain_pgi_tp.diff b/config/ltmain_pgi_tp.diff new file mode 100644 index 00000000..ff0fc36d --- /dev/null +++ b/config/ltmain_pgi_tp.diff @@ -0,0 +1,11 @@ +--- config/ltmain.sh ++++ config/ltmain.sh +@@ -4765,7 +4765,7 @@ + # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ +- -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) ++ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp|-tp=*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + func_append compile_command " $arg" diff --git a/config/ompi_check_libfca.m4 b/config/ompi_check_libfca.m4 new file mode 100644 index 00000000..56057391 --- /dev/null +++ b/config/ompi_check_libfca.m4 @@ -0,0 +1,70 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2011 Mellanox Technologies. All rights reserved. +dnl Copyright (c) 2013 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OMPI_CHECK_FCA(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +# check if fca support can be found. sets prefix_{CPPFLAGS, +# LDFLAGS, LIBS} as needed and runs action-if-found if there is +# support, otherwise executes action-if-not-found +AC_DEFUN([OMPI_CHECK_FCA],[ + OPAL_VAR_SCOPE_PUSH([ompi_check_fca_libs ompi_check_fca_happy CPPFLAGS_save LDFLAGS_save LIBS_save]) + + AC_ARG_WITH([fca], + [AC_HELP_STRING([--with-fca(=DIR)], + [Build fca (Mellanox Fabric Collective Accelerator) support, optionally adding + DIR/include and DIR/lib or DIR/lib64 to the search path for headers and libraries])]) + + AS_IF([test "$with_fca" != "no"], + [ompi_check_fca_libs=fca + AS_IF([test ! -z "$with_fca" && test "$with_fca" != "yes"], + [ompi_check_fca_dir=$with_fca + AC_SUBST([coll_fca_HOME], "$ompi_check_fca_dir")], + [AC_SUBST([coll_fca_HOME], "/")]) + + CPPFLAGS_save=$CPPFLAGS + LDFLAGS_save=$LDFLAGS + LIBS_save=$LIBS + + + OPAL_LOG_MSG([$1_CPPFLAGS : $$1_CPPFLAGS], 1) + OPAL_LOG_MSG([$1_LDFLAGS : $$1_LDFLAGS], 1) + OPAL_LOG_MSG([$1_LIBS : $$1_LIBS], 1) + + OPAL_CHECK_PACKAGE([$1], + [fca/fca_api.h], + [$ompi_check_fca_libs], + [fca_get_version], + [], + [$ompi_check_fca_dir], + [], + [ompi_check_fca_happy="yes"], + [ompi_check_fca_happy="no"]) + + CPPFLAGS=$CPPFLAGS_save + LDFLAGS=$LDFLAGS_save + LIBS=$LIBS_save], + [ompi_check_fca_happy="no"]) + + AS_IF([test "$ompi_check_fca_happy" = "yes" && test "$enable_progress_threads" = "yes"], + [AC_MSG_WARN([fca driver does not currently support progress threads. Disabling FCA.]) + ompi_check_fca_happy="no"]) + + AS_IF([test "$ompi_check_fca_happy" = "yes"], + [$2], + [AS_IF([test ! -z "$with_fca" && test "$with_fca" != "no"], + [AC_MSG_ERROR([FCA support requested but not found. Aborting])]) + $3]) + + OPAL_VAR_SCOPE_POP +]) + diff --git a/config/ompi_check_libhcoll.m4 b/config/ompi_check_libhcoll.m4 new file mode 100644 index 00000000..65e6e9de --- /dev/null +++ b/config/ompi_check_libhcoll.m4 @@ -0,0 +1,75 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2011 Mellanox Technologies. All rights reserved. +dnl Copyright (c) 2013 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OMPI_CHECK_HCOLL(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +# check if hcoll support can be found. sets prefix_{CPPFLAGS, +# LDFLAGS, LIBS} as needed and runs action-if-found if there is +# support, otherwise executes action-if-not-found +AC_DEFUN([OMPI_CHECK_HCOLL],[ + OPAL_VAR_SCOPE_PUSH([ompi_check_hcoll_dir ompi_check_hcoll_libs ompi_check_hcoll_happy CPPFLAGS_save LDFLAGS_save LIBS_save]) + + AC_ARG_WITH([hcoll], + [AC_HELP_STRING([--with-hcoll(=DIR)], + [Build hcoll (Mellanox Hierarchical Collectives) support, optionally adding + DIR/include and DIR/lib or DIR/lib64 to the search path for headers and libraries])]) + + AS_IF([test "$with_hcoll" != "no"], + [ompi_check_hcoll_libs=hcoll + AS_IF([test ! -z "$with_hcoll" && test "$with_hcoll" != "yes"], + [ompi_check_hcoll_dir=$with_hcoll]) + + CPPFLAGS_save=$CPPFLAGS + LDFLAGS_save=$LDFLAGS + LIBS_save=$LIBS + + OPAL_LOG_MSG([$1_CPPFLAGS : $$1_CPPFLAGS], 1) + OPAL_LOG_MSG([$1_LDFLAGS : $$1_LDFLAGS], 1) + OPAL_LOG_MSG([$1_LIBS : $$1_LIBS], 1) + + OPAL_CHECK_PACKAGE([$1], + [hcoll/api/hcoll_api.h], + [$ompi_check_hcoll_libs], + [hcoll_get_version], + [], + [$ompi_check_hcoll_dir], + [], + [ompi_check_hcoll_happy="yes"], + [ompi_check_hcoll_happy="no"]) + + AS_IF([test "$ompi_check_hcoll_happy" = "yes"], + [ + CPPFLAGS=$coll_hcoll_CPPFLAGS + LDFLAGS=$coll_hcoll_LDFLAGS + LIBS=$coll_hcoll_LIBS + AC_CHECK_FUNCS(hcoll_context_free, [], []) + ], + []) + + CPPFLAGS=$CPPFLAGS_save + LDFLAGS=$LDFLAGS_save + LIBS=$LIBS_save], + [ompi_check_hcoll_happy=no]) + + AS_IF([test "$ompi_check_hcoll_happy" = "yes" && test "$enable_progress_threads" = "yes"], + [AC_MSG_WARN([hcoll driver does not currently support progress threads. Disabling HCOLL.]) + ompi_check_hcoll_happy="no"]) + + AS_IF([test "$ompi_check_hcoll_happy" = "yes"], + [$2], + [AS_IF([test ! -z "$with_hcoll" && test "$with_hcoll" != "no"], + [AC_MSG_ERROR([HCOLL support requested but not found. Aborting])]) + $3]) + + OPAL_VAR_SCOPE_POP +]) diff --git a/config/ompi_check_lustre.m4 b/config/ompi_check_lustre.m4 new file mode 100644 index 00000000..765e1403 --- /dev/null +++ b/config/ompi_check_lustre.m4 @@ -0,0 +1,92 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2006 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2009-2017 Cisco Systems, Inc. All rights reserved +dnl Copyright (c) 2008-2017 University of Houston. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OMPI_CHECK_LUSTRE(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +# check if LUSTRE support can be found. sets prefix_{CPPFLAGS, +# LDFLAGS, LIBS} as needed and runs action-if-found if there is +# support, otherwise executes action-if-not-found +AC_DEFUN([OMPI_CHECK_LUSTRE],[ + + check_lustre_CPPFLAGS= + check_lustre_LDFLAGS= + check_lustre_LIBS= + + check_lustre_save_LIBS="$LIBS" + check_lustre_save_LDFLAGS="$LDFLAGS" + check_lustre_save_CPPFLAGS="$CPPFLAGS" + + check_lustre_configuration="none" + ompi_check_lustre_happy="yes" + + # Get some configuration information + AC_ARG_WITH([lustre], + [AC_HELP_STRING([--with-lustre(=DIR)], + [Build Lustre support, optionally adding DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries])]) + OPAL_CHECK_WITHDIR([lustre], [$with_lustre], [include/lustre/lustreapi.h]) + + AS_IF([test -z "$with_lustre" || test "$with_lustre" = "yes"], + [ompi_check_lustre_dir="/usr"], + [ompi_check_lustre_dir=$with_lustre]) + + if test -e "$ompi_check_lustre_dir/lib64" ; then + ompi_check_lustre_libdir="$ompi_check_lustre_dir/lib64" + else + ompi_check_lustre_libdir="$ompi_check_lustre_dir/lib" + fi + + # Add correct -I and -L flags + OPAL_CHECK_PACKAGE([$1], [lustre/lustreapi.h], [lustreapi], [llapi_file_create], [], + [$ompi_check_lustre_dir], [$ompi_check_lustre_libdir], [ompi_check_lustre_happy="yes"], + [ompi_check_lustre_happy="no"]) + + AC_MSG_CHECKING([for required lustre data structures]) + cat > conftest.c <]], + [[ +#ifndef MXM_VERSION +#error "MXM Version is less than 2.1, please upgrade" +#endif +# +#if MXM_API < MXM_VERSION(2,1) +#error "MXM Version is less than 2.1, please upgrade" +#endif + ]])], + [ompi_mxm_version_ok="yes"], + [ompi_mxm_version_ok="no"]) + + AC_MSG_RESULT([$ompi_mxm_version_ok]) + CFLAGS=$old_CFLAGS + + AS_IF([test "$ompi_mxm_version_ok" = "no"], [ompi_check_mxm_happy="no"]) + + OPAL_SUMMARY_ADD([[Transports]],[[Mellanox MXM]],[$1],[$ompi_check_mxm_happy]) + fi + + AS_IF([test "$ompi_check_mxm_happy" = "yes"], + [$1_LDFLAGS="[$]$1_LDFLAGS $ompi_check_mxm_LDFLAGS" + $1_LIBS="[$]$1_LIBS $ompi_check_mxm_LIBS" + $1_CPPFLAGS="[$]$1_CPPFLAGS $ompi_check_mxm_CPPFLAGS" + $2], + [AS_IF([test ! -z "$with_mxm" && test "$with_mxm" != "no"], + [AC_MSG_ERROR([MXM support requested but not found. Aborting])]) + $3]) +]) + diff --git a/config/ompi_check_plfs.m4 b/config/ompi_check_plfs.m4 new file mode 100644 index 00000000..71eff914 --- /dev/null +++ b/config/ompi_check_plfs.m4 @@ -0,0 +1,114 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2006 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2009 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2008-2012 University of Houston. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OMPI_CHECK_PLFS(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +# check if PLFS support can be found. sets prefix_{CPPFLAGS, +# LDFLAGS, LIBS} as needed and runs action-if-found if there is +# support, otherwise executes action-if-not-found +AC_DEFUN([OMPI_CHECK_PLFS],[ + + check_plfs_CPPFLAGS= + check_plfs_LDFLAGS= + check_plfs_LIBS= + + check_plfs_save_LIBS="$LIBS" + check_plfs_save_LDFLAGS="$LDFLAGS" + check_plfs_save_CPPFLAGS="$CPPFLAGS" + + check_plfs_configuration="none" + ompi_check_plfs_happy="yes" + + + # Get some configuration information + AC_ARG_WITH([plfs], + [AC_HELP_STRING([--with-plfs(=DIR)], + [Build Plfs support, optionally adding DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries])]) + OPAL_CHECK_WITHDIR([plfs], [$with_plfs], [include/plfs.h]) + + AC_ARG_WITH([plfs-libs], + [AC_HELP_STRING([--with-plfs-libs=LIBS], + [Libraries to link with for plfs])]) + + temp_with_plfs="$with_plfs" + AS_IF([test -z "$with_plfs"], + [with_plfs="/usr/local"]) + + temp_with_plfs_libs="$with_plfs_libs" + AS_IF([test -z "$with_plfs_libs"], + [with_plfs_libs="plfs pthread"]) + + # Add correct -I and -L flags + AS_IF([test -d "$with_plfs/include"], + [check_plfs_CPPFLAGS="-I$with_plfs/include" + $1_CPPFLAGS="$check_plfs_CPPFLAGS" + CPPFLAGS="$CPPFLAGS $check_plfs_CPPFLAGS"], + [ompi_check_plfs_happy="no"]) + + AS_IF([test "$ompi_check_plfs_happy" = "yes"], + [AS_IF([test -d "$with_plfs/lib"], + [check_plfs_LDFLAGS="-L$with_plfs/lib" + $1_LDFLAGS="$check_plfs_LDFLAGS" + LDFLAGS="$LDFLAGS $check_plfs_LDFLAGS"], + [ompi_check_plfs_happy="no"]) + ],[]) + + # Try to find all the plfs libraries + AS_IF([test "$ompi_check_plfs_happy" = "yes"], + [ AS_IF([test -n "$with_plfs_libs"] + [for lib in $with_plfs_libs ; do + check_plfs_LIBS="$check_plfs_LIBS -l$lib" + done]) + + $1_LIBS="$check_plfs_LIBS" + LIBS="$LIBS $check_plfs_LIBS" + + # check for plfs + AC_CHECK_HEADERS([plfs.h], + [AC_MSG_CHECKING([if possible to link PLFS]) + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[is_plfs_path(NULL);]])], + [AC_MSG_RESULT([yes]) + ompi_check_plfs_happy="yes"], + [AC_MSG_RESULT([no]) + ompi_check_plfs_happy="no"])], + [ompi_check_plfs_happy="no"]) + ]) + + + LDFLAGS="$check_plfs_save_LDFLAGS" + CPPFLAGS="$check_plfs_save_CPPFLAGS" + LIBS="$check_plfs_save_LIBS" + AS_IF([test "$ompi_check_plfs_happy" = "yes"], + [$2], + [AS_IF([test ! -z "$with_plfs" && test "$with_plfs" != "no"], + [echo PLFS support not found]) + $3]) + + with_plfs="$temp_with_plfs" + with_plfs_libs="$temp_with_plfs_libs" + +]) + diff --git a/config/ompi_check_psm.m4 b/config/ompi_check_psm.m4 new file mode 100644 index 00000000..bcde24ac --- /dev/null +++ b/config/ompi_check_psm.m4 @@ -0,0 +1,92 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2006 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2006 QLogic Corp. All rights reserved. +dnl Copyright (c) 2009-2016 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl Copyright (c) 2016 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl Copyright (c) 2016 Intel Corporation. All rights reserved. +dnl +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OMPI_CHECK_PSM(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +# check if PSM support can be found. sets prefix_{CPPFLAGS, +# LDFLAGS, LIBS} as needed and runs action-if-found if there is +# support, otherwise executes action-if-not-found +AC_DEFUN([OMPI_CHECK_PSM],[ + if test -z "$ompi_check_psm_happy" ; then + AC_ARG_WITH([psm], + [AC_HELP_STRING([--with-psm(=DIR)], + [Build PSM (Qlogic InfiniPath) support, optionally adding DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries])]) + OPAL_CHECK_WITHDIR([psm], [$with_psm], [include/psm.h]) + AC_ARG_WITH([psm-libdir], + [AC_HELP_STRING([--with-psm-libdir=DIR], + [Search for PSM (QLogic InfiniPath PSM) libraries in DIR])]) + OPAL_CHECK_WITHDIR([psm-libdir], [$with_psm_libdir], [libpsm_infinipath.*]) + + ompi_check_psm_$1_save_CPPFLAGS="$CPPFLAGS" + ompi_check_psm_$1_save_LDFLAGS="$LDFLAGS" + ompi_check_psm_$1_save_LIBS="$LIBS" + + AS_IF([test "$with_psm" != "no"], + [AS_IF([test ! -z "$with_psm" && test "$with_psm" != "yes"], + [ompi_check_psm_dir="$with_psm"]) + AS_IF([test ! -z "$with_psm_libdir" && test "$with_psm_libdir" != "yes"], + [ompi_check_psm_libdir="$with_psm_libdir"]) + + OPAL_CHECK_PACKAGE([ompi_check_psm], + [psm.h], + [psm_infinipath], + [psm_finalize], + [], + [$ompi_check_psm_dir], + [$ompi_check_psm_libdir], + [ompi_check_psm_happy="yes"], + [ompi_check_psm_happy="no"])], + [ompi_check_psm_happy="no"]) + + CPPFLAGS="$ompi_check_psm_$1_save_CPPFLAGS" + LDFLAGS="$ompi_check_psm_$1_save_LDFLAGS" + LIBS="$ompi_check_psm_$1_save_LIBS" + + AS_IF([test "$ompi_check_psm_happy" = "yes" && test "$enable_progress_threads" = "yes"], + [AC_MSG_WARN([PSM driver does not currently support progress threads. Disabling BTL.]) + ompi_check_psm_happy="no"]) + + AS_IF([test "$ompi_check_psm_happy" = "yes"], + [AC_CHECK_HEADERS( + glob.h, + [], + [AC_MSG_WARN([glob.h not found. Can not build component.]) + ompi_check_psm_happy="no"])]) + + OPAL_SUMMARY_ADD([[Transports]],[[Intel TrueScale (PSM)]],[$1],[$ompi_check_psm_happy]) + fi + + AS_IF([test "$ompi_check_psm_happy" = "yes"], + [$1_LDFLAGS="[$]$1_LDFLAGS $ompi_check_psm_LDFLAGS" + $1_CPPFLAGS="[$]$1_CPPFLAGS $ompi_check_psm_CPPFLAGS" + $1_LIBS="[$]$1_LIBS $ompi_check_psm_LIBS" + $2], + [AS_IF([test ! -z "$with_psm" && test "$with_psm" != "no"], + [AC_MSG_ERROR([PSM support requested but not found. Aborting])]) + $3]) +]) + diff --git a/config/ompi_check_psm2.m4 b/config/ompi_check_psm2.m4 new file mode 100644 index 00000000..58a7dd0c --- /dev/null +++ b/config/ompi_check_psm2.m4 @@ -0,0 +1,90 @@ +# -*- shell-script -*- +# +# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2006 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2006 QLogic Corp. All rights reserved. +# Copyright (c) 2009-2016 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2016 Intel Corporation. All rights reserved. +# Copyright (c) 2015 Research Organization for Information Science +# and Technology (RIST). All rights reserved. +# Copyright (c) 2016 Los Alamos National Security, LLC. All rights +# reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# OMPI_CHECK_PSM2(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +# check if PSM2 support can be found. sets prefix_{CPPFLAGS, +# LDFLAGS, LIBS} as needed and runs action-if-found if there is +# support, otherwise executes action-if-not-found +AC_DEFUN([OMPI_CHECK_PSM2],[ + if test -z "$ompi_check_psm2_happy" ; then + AC_ARG_WITH([psm2], + [AC_HELP_STRING([--with-psm2(=DIR)], + [Build PSM2 (Intel PSM2) support, optionally adding DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries])]) + OPAL_CHECK_WITHDIR([psm2], [$with_psm2], [include/psm2.h]) + AC_ARG_WITH([psm2-libdir], + [AC_HELP_STRING([--with-psm2-libdir=DIR], + [Search for PSM (Intel PSM2) libraries in DIR])]) + OPAL_CHECK_WITHDIR([psm2-libdir], [$with_psm2_libdir], [libpsm2.*]) + + ompi_check_psm2_$1_save_CPPFLAGS="$CPPFLAGS" + ompi_check_psm2_$1_save_LDFLAGS="$LDFLAGS" + ompi_check_psm2_$1_save_LIBS="$LIBS" + + AS_IF([test "$with_psm2" != "no"], + [AS_IF([test ! -z "$with_psm2" && test "$with_psm2" != "yes"], + [ompi_check_psm2_dir="$with_psm2"]) + AS_IF([test ! -z "$with_psm2_libdir" && test "$with_psm2_libdir" != "yes"], + [ompi_check_psm2_libdir="$with_psm2_libdir"]) + + OPAL_CHECK_PACKAGE([ompi_check_psm2], + [psm2.h], + [psm2], + [psm2_mq_irecv2], + [], + [$ompi_check_psm2_dir], + [$ompi_check_psm2_libdir], + [ompi_check_psm2_happy="yes"], + [ompi_check_psm2_happy="no"])], + [ompi_check_psm2_happy="no"]) + + CPPFLAGS="$ompi_check_psm2_$1_save_CPPFLAGS" + LDFLAGS="$ompi_check_psm2_$1_save_LDFLAGS" + LIBS="$ompi_check_psm2_$1_save_LIBS" + + AS_IF([test "$ompi_check_psm2_happy" = "yes" && test "$enable_progress_threads" = "yes"], + [AC_MSG_WARN([PSM2 driver does not currently support progress threads. Disabling MTL.]) + ompi_check_psm2_happy="no"]) + + AS_IF([test "$ompi_check_psm2_happy" = "yes"], + [AC_CHECK_HEADERS( + glob.h, + [], + [AC_MSG_WARN([glob.h not found. Can not build component.]) + ompi_check_psm2_happy="no"])]) + + OPAL_SUMMARY_ADD([[Transports]],[[Intel Omnipath (PSM2)]],[$1],[$ompi_check_psm2_happy]) + fi + + AS_IF([test "$ompi_check_psm2_happy" = "yes"], + [$1_LDFLAGS="[$]$1_LDFLAGS $ompi_check_psm2_LDFLAGS" + $1_CPPFLAGS="[$]$1_CPPFLAGS $ompi_check_psm2_CPPFLAGS" + $1_LIBS="[$]$1_LIBS $ompi_check_psm2_LIBS" + $2], + [AS_IF([test ! -z "$with_psm2" && test "$with_psm2" != "no"], + [AC_MSG_ERROR([PSM2 support requested but not found. Aborting])]) + $3]) +]) diff --git a/config/ompi_check_pvfs2.m4 b/config/ompi_check_pvfs2.m4 new file mode 100644 index 00000000..07176f66 --- /dev/null +++ b/config/ompi_check_pvfs2.m4 @@ -0,0 +1,68 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2006 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2009 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2008-2016 University of Houston. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OMPI_CHECK_PVFS2(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +# check if PVFS2 support can be found. sets prefix_{CPPFLAGS, +# LDFLAGS, LIBS} as needed and runs action-if-found if there is +# support, otherwise executes action-if-not-found +AC_DEFUN([OMPI_CHECK_PVFS2],[ + + check_pvfs2_CPPFLAGS= + check_pvfs2_LDFLAGS= + check_pvfs2_LIBS= + + check_pvfs2_configuration="none" + ompi_check_pvfs2_happy="yes" + + + # Get some configuration information + AC_ARG_WITH([pvfs2], + [AC_HELP_STRING([--with-pvfs2(=DIR)], + [Build Pvfs2 support, optionally adding DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries])]) + OPAL_CHECK_WITHDIR([pvfs2], [$with_pvfs2], [include/pvfs2.h]) + + AS_IF([test -z "$with_pvfs2"], + [ompi_check_pvfs2_dir="/usr/local"], + [ompi_check_pvfs2_dir=$with_pvfs2]) + + if test -e "$ompi_check_pvfs2_dir/lib64" ; then + ompi_check_pvfs2_libdir="$ompi_check_pvfs2_dir/lib64" + else + ompi_check_pvfs2_libdir="$ompi_check_pvfs2_dir/lib" + fi + + # Add correct -I and -L flags + OPAL_CHECK_PACKAGE([$1], [pvfs2.h], [pvfs2], [PVFS_util_resolve], [], + [$ompi_check_pvfs2_dir], [$ompi_check_pvfs2_libdir], [ompi_check_pvfs2_happy="yes"], + [ompi_check_pvfs2_happy="no"]) + + + AS_IF([test "$ompi_check_pvfs2_happy" = "yes"], + [$2], + [AS_IF([test ! -z "$with_pvfs2" && test "$with_pvfs2" != "no"], + [echo PVFS2 support not found]) + $3]) + +]) + diff --git a/config/ompi_check_ucx.m4 b/config/ompi_check_ucx.m4 new file mode 100644 index 00000000..efb90d3c --- /dev/null +++ b/config/ompi_check_ucx.m4 @@ -0,0 +1,105 @@ +# -*- shell-script -*- +# +# Copyright (C) 2015-2017 Mellanox Technologies, Inc. +# All rights reserved. +# Copyright (c) 2015 Research Organization for Information Science +# and Technology (RIST). All rights reserved. +# Copyright (c) 2016 Los Alamos National Security, LLC. All rights +# reserved. +# Copyright (c) 2016 Cisco Systems, Inc. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# OMPI_CHECK_UCX(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +# check if UCX support can be found. sets prefix_{CPPFLAGS, +# LDFLAGS, LIBS} as needed and runs action-if-found if there is +# support, otherwise executes action-if-not-found +AC_DEFUN([OMPI_CHECK_UCX],[ + if test -z "$ompi_check_ucx_happy" ; then + AC_ARG_WITH([ucx], + [AC_HELP_STRING([--with-ucx(=DIR)], + [Build with Unified Communication X library support])]) + OPAL_CHECK_WITHDIR([ucx], [$with_ucx], [include/ucp/api/ucp.h]) + AC_ARG_WITH([ucx-libdir], + [AC_HELP_STRING([--with-ucx-libdir=DIR], + [Search for Unified Communication X libraries in DIR])]) + OPAL_CHECK_WITHDIR([ucx-libdir], [$with_ucx_libdir], [libucp.*]) + + AS_IF([test "$with_ucx" != "no"], + [AS_IF([test ! -z "$with_ucx" && test "$with_ucx" != "yes"], + [_x_ac_ucx_dirs="$with_ucx"], + [ + PKG_CHECK_MODULES_STATIC([ucx],[ucx], + [_x_ac_ucx_dirs=`$PKG_CONFIG --variable=prefix ucx`], + [_x_ac_ucx_dirs="/usr /usr/local /opt/ucx"]) + ]) + for ompi_check_ucx_dir in $_x_ac_ucx_dirs; do + AS_IF([test ! -z "$with_ucx_libdir" && test "$with_ucx_libdir" != "yes"], + [ + ompi_check_ucx_libdir="$with_ucx_libdir" + ompi_check_ucx_extra_libs="-L$ompi_check_ucx_libdir" + ], + [AS_IF([test ! -z "$ompi_check_ucx_dir"], + [ + ompi_check_ucx_libdir=$ompi_check_ucx_dir/lib + ompi_check_ucx_extra_libs="-L$ompi_check_ucx_libdir" + ])]) + + ompi_check_ucx_$1_save_CPPFLAGS="$CPPFLAGS" + ompi_check_ucx_$1_save_LDFLAGS="$LDFLAGS" + ompi_check_ucx_$1_save_LIBS="$LIBS" + + OPAL_CHECK_PACKAGE([ompi_check_ucx], + [ucp/api/ucp.h], + [ucp], + [ucp_cleanup], + [$ompi_check_ucx_extra_libs], + [$ompi_check_ucx_dir], + [$ompi_check_ucx_libdir], + [ompi_check_ucx_happy="yes"], + [ompi_check_ucx_happy="no"]) + CPPFLAGS="$ompi_check_ucx_$1_save_CPPFLAGS" + LDFLAGS="$ompi_check_ucx_$1_save_LDFLAGS" + LIBS="$ompi_check_ucx_$1_save_LIBS" + + if test "$ompi_check_ucx_happy" = no; then + continue + fi + + AC_MSG_CHECKING(for UCX version compatibility) + AC_REQUIRE_CPP + old_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I$ompi_check_ucx_dir/include" + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[#include ]],[[]])], + [ompi_ucx_version_ok="yes"], + [ompi_ucx_version_ok="no"]) + + AC_MSG_RESULT([$ompi_ucx_version_ok]) + CPPFLAGS=$old_CPPFLAGS + + AS_IF([test "$ompi_ucx_version_ok" = "no"], [ompi_check_ucx_happy="no"]) + + if test "$ompi_check_ucx_happy" = yes; then + break + fi + done], + [ompi_check_ucx_happy="no"]) + OPAL_SUMMARY_ADD([[Transports]],[[Open UCX]],[$1],[$ompi_check_ucx_happy]) + fi + + AS_IF([test "$ompi_check_ucx_happy" = "yes"], + [$1_CPPFLAGS="[$]$1_CPPFLAGS $ompi_check_ucx_CPPFLAGS" + $1_LDFLAGS="[$]$1_LDFLAGS $ompi_check_ucx_LDFLAGS" + $1_LIBS="[$]$1_LIBS $ompi_check_ucx_LIBS" + $2], + [AS_IF([test ! -z "$with_ucx" && test "$with_ucx" != "no"], + [AC_MSG_ERROR([UCX support requested but not found. Aborting])]) + $3]) +]) + diff --git a/config/ompi_check_udapl.m4 b/config/ompi_check_udapl.m4 new file mode 100644 index 00000000..d45a709a --- /dev/null +++ b/config/ompi_check_udapl.m4 @@ -0,0 +1,120 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2007-2009 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OMPI_CHECK_UDAPL(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +# check if uDAPL support can be found. sets prefix_{CPPFLAGS, +# LDFLAGS, LIBS} as needed and runs action-if-found if there is +# support, otherwise executes action-if-not-found +AC_DEFUN([OMPI_CHECK_UDAPL],[ + AC_ARG_WITH([udapl], + [AC_HELP_STRING([--with-udapl(=DIR)], + [Build uDAPL support, optionally adding DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries])]) + OPAL_CHECK_WITHDIR([udapl], [$with_udapl], [include/dat/udat.h]) + AC_ARG_WITH([udapl-libdir], + [AC_HELP_STRING([--with-udapl-libdir=DIR], + [Search for uDAPL libraries in DIR])]) + OPAL_CHECK_WITHDIR([udapl-libdir], [$with_udapl_libdir], [libdat.*]) + + # Special case for OFED/Linux: the default /etc/dat.conf that + # ships with OFED is broken in that it includes DAT providers that + # are not guarnateed to work (e.g., it includes providers for ib0, + # ib1, ib2, ib3, and bond0). Usually, a sysadmin will need to + # edit this file to configure it for the specific environment in + # which it will be used. Hence, if you run the udapl BTL on + # Linux/OFED, you'll get a bunch of warning messages about the + # providers that don't work. However, on Linux/OFED, you don't + # really want to use udapl anyway; you likely really want to use + # the openib BTL (i.e., native verbs, not udapl). + + # So after exploring many different scenarios, the least evil + # solution seemed to be to disable building the udapl BTL on + # Linux/OFED *unless the user specifically asks for it.* To be + # specific: on Linux/OFED, if you do not specify + # --with-udapl(=DIR), the udapl BTL will not be built. + AS_IF([test -z "$with_udapl"], + [case $host in + *linux*) + AC_MSG_WARN([On Linux and --with-udapl was not specified]) + AC_MSG_WARN([Not building the udapl BTL]) + with_udapl=no + ;; + esac]) + + AS_IF([test ! -z "$with_udapl" && test "$with_udapl" != "yes"], + [ompi_check_udapl_dir="$with_udapl"]) + AS_IF([test ! -z "$with_udapl_libdir" && test "$with_udapl_libdir" != "yes"], + [ompi_check_udapl_libdir="$with_udapl_libdir"]) + AS_IF([test "$with_udapl" = "no"], + [ompi_check_udapl_happy="no"], + [ompi_check_udapl_happy="yes"]) + +dnl Do not use ompi_check_package directly, because then we have +dnl to test for the header file twice, and caching is disabled +dnl for all ompi_check_package checks. Instead, do what +dnl ompi_check_package does, but only do the header check once. +dnl Still do the lib check twice, the second time if it turns +dnl out we need -ldapl to link (looks like udapl over GM). + + ompi_check_package_$1_save_CPPFLAGS="$CPPFLAGS" + ompi_check_package_$1_save_LDFLAGS="$LDFLAGS" + ompi_check_package_$1_save_LIBS="$LIBS" + + ompi_check_package_$1_orig_CPPFLAGS="$$1_CPPFLAGS" + ompi_check_package_$1_orig_LDFLAGS="$$1_LDFLAGS" + ompi_check_package_$1_orig_LIBS="$$1_LIBS" + + AS_IF([test "$ompi_check_udapl_happy" = "yes"], + [_OPAL_CHECK_PACKAGE_HEADER([$1], + [dat/udat.h], + [$ompi_check_udapl_dir], + [ompi_check_udapl_happy="yes"], + [ompi_check_udapl_happy="no"])]) + + AS_IF([test "$ompi_check_udapl_happy" = "yes"], + [_OPAL_CHECK_PACKAGE_LIB([$1], + [dat], + [dat_registry_list_providers], + [], + [$ompi_check_udapl_dir], + [$ompi_check_udapl_libdir], + [ompi_check_udapl_happy="yes"], + [_OPAL_CHECK_PACKAGE_LIB([$1], + [dat], + [dat_registry_list_providers], + [-ldapl], + [$ompi_check_udapl_dir], + [$ompi_check_udapl_libdir], + [ompi_check_udapl_happy="yes"], + [ompi_check_udapl_happy="no"])])]) + + CPPFLAGS="$ompi_check_package_$1_save_CPPFLAGS" + LDFLAGS="$ompi_check_package_$1_save_LDFLAGS" + LIBS="$ompi_check_package_$1_save_LIBS" + + AS_IF([test "$ompi_check_udapl_happy" = "yes"], + [$2], + [AS_IF([test ! -z "$with_udapl" && test "$with_udapl" != "no"], + [AC_MSG_ERROR([uDAPL support requested but not found. Aborting])]) + $3]) +]) + diff --git a/config/ompi_config_files.m4 b/config/ompi_config_files.m4 new file mode 100644 index 00000000..bed37132 --- /dev/null +++ b/config/ompi_config_files.m4 @@ -0,0 +1,54 @@ +# -*- shell-script -*- +# +# Copyright (c) 2009-2017 Cisco Systems, Inc. All rights reserved +# Copyright (c) 2017 Research Organization for Information Science +# and Technology (RIST). All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +AC_DEFUN([OMPI_CONFIG_FILES],[ + AC_CONFIG_FILES([ + ompi/Makefile + ompi/etc/Makefile + ompi/include/Makefile + ompi/include/mpif.h + ompi/include/mpif-config.h + + ompi/datatype/Makefile + ompi/debuggers/Makefile + + ompi/mpi/c/Makefile + ompi/mpi/c/profile/Makefile + ompi/mpi/cxx/Makefile + ompi/mpi/fortran/base/Makefile + ompi/mpi/fortran/mpif-h/Makefile + ompi/mpi/fortran/mpif-h/profile/Makefile + ompi/mpi/fortran/use-mpi-tkr/Makefile + ompi/mpi/fortran/use-mpi-tkr/fortran_sizes.h + ompi/mpi/fortran/use-mpi-tkr/fortran_kinds.sh + ompi/mpi/fortran/use-mpi-ignore-tkr/Makefile + ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-interfaces.h + ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h + ompi/mpi/fortran/use-mpi-f08/Makefile + ompi/mpi/fortran/use-mpi-f08/mod/Makefile + ompi/mpi/fortran/mpiext/Makefile + ompi/mpi/tool/Makefile + ompi/mpi/tool/profile/Makefile + + ompi/tools/ompi_info/Makefile + ompi/tools/wrappers/Makefile + ompi/tools/wrappers/mpicc-wrapper-data.txt + ompi/tools/wrappers/mpic++-wrapper-data.txt + ompi/tools/wrappers/mpifort-wrapper-data.txt + ompi/tools/wrappers/ompi.pc + ompi/tools/wrappers/ompi-c.pc + ompi/tools/wrappers/ompi-cxx.pc + ompi/tools/wrappers/ompi-fort.pc + ompi/tools/wrappers/mpijavac.pl + ompi/tools/mpisync/Makefile + ]) +]) diff --git a/config/ompi_configure_options.m4 b/config/ompi_configure_options.m4 new file mode 100644 index 00000000..3b9bb047 --- /dev/null +++ b/config/ompi_configure_options.m4 @@ -0,0 +1,247 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2006-2017 Cisco Systems, Inc. All rights reserved +dnl Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. +dnl Copyright (c) 2009 IBM Corporation. All rights reserved. +dnl Copyright (c) 2009 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl Copyright (c) 2009 Oak Ridge National Labs. All rights reserved. +dnl Copyright (c) 2013 Intel, Inc. All rights reserved. +dnl Copyright (c) 2015-2017 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +AC_DEFUN([OMPI_CONFIGURE_OPTIONS],[ +opal_show_subtitle "OMPI Configuration options" + +# +# Disable MPI layer? +# +AC_ARG_ENABLE([mpi], + [AC_HELP_STRING([--disable-mpi], + [Disable building the MPI layer (default:enabled)])]) + +# +# Do we want to enable MPI interface warnings (e.g. deprecated +# functionality and others)? +# +# This was disabled by default in v1.5, but will be enabled by default +# in 1.7 and beyond. +# + +AC_MSG_CHECKING([if want compile-time warnings inside of mpi.h]) +AC_ARG_ENABLE(mpi-interface-warning, + AC_HELP_STRING([--enable-mpi-interface-warning], + [enable compile-time warnings when deprecated MPI functions are used (default: enabled)])) +if test "$enable_mpi_interface_warning" != "no"; then + AC_MSG_RESULT([yes]) + OMPI_WANT_MPI_INTERFACE_WARNING=1 +else + AC_MSG_RESULT([no]) + OMPI_WANT_MPI_INTERFACE_WARNING=0 +fi +AC_DEFINE_UNQUOTED([OMPI_WANT_MPI_INTERFACE_WARNING], [$OMPI_WANT_MPI_INTERFACE_WARNING], + [Enable warnings when using deprecated MPI functions]) + +# +# Sparse Groups +# + +AC_MSG_CHECKING([if want sparse process groups]) +AC_ARG_ENABLE(sparse-groups, + AC_HELP_STRING([--enable-sparse-groups], + [enable sparse process groups (default: not enabled)])) +if test "$enable_sparse_groups" = "yes"; then + AC_MSG_RESULT([yes]) + GROUP_SPARSE=1 +else + AC_MSG_RESULT([no]) + GROUP_SPARSE=0 +fi +AC_DEFINE_UNQUOTED([OMPI_GROUP_SPARSE],$GROUP_SPARSE, + [Wether we want sparse process groups]) + + +# +# Do we want to enable peruse interface? +# + +AC_MSG_CHECKING([if want peruse support]) +AC_ARG_ENABLE(peruse, + AC_HELP_STRING([--enable-peruse], + [enable PERUSE interface (default: disabled)])) +if test "$enable_peruse" = "yes"; then + AC_MSG_RESULT([yes]) + WANT_PERUSE=1 +else + AC_MSG_RESULT([no]) + WANT_PERUSE=0 +fi +AC_DEFINE_UNQUOTED([OMPI_WANT_PERUSE], + [$WANT_PERUSE], + [if the peruse interface should be enabled]) +AM_CONDITIONAL(WANT_PERUSE, test "$WANT_PERUSE" = "1") + +# +# Fortran MPI bindings +# +AC_MSG_CHECKING([if want Fortran MPI bindings]) +AC_ARG_ENABLE(mpi-fortran, + AC_HELP_STRING([--enable-mpi-fortran], + [specify which Fortran MPI bindings to build: yes, none (or no), best-effort, mpifh (build only mpif.h support), usempi (build mpif.h and the mpi module), or usempif08 (or all, build mpifh, the mpi module, and the mpi_f08 module) (default: "yes" if Fortran compiler found)])) + +# These are the 4 monotonically-rising values indicating levels of +# Fortran bindings support. +OMPI_FORTRAN_NO_BINDINGS=0 +OMPI_FORTRAN_MPIFH_BINDINGS=1 +OMPI_FORTRAN_USEMPI_BINDINGS=2 +OMPI_FORTRAN_USEMPIF08_BINDINGS=3 + +# Set this variable to minimum the level of Fortran bindings support +# that is *required* (i.e., if we can't achieve this level, then +# configure should abort). +OMPI_MIN_REQUIRED_FORTRAN_BINDINGS=$OMPI_FORTRAN_NO_BINDINGS +# Set this variable to the highest level of Fortran bindings support +# that should be attempted. This value will never be <= +# $OMPI_MIN_REQUIRED_FORTRAN_BINDINGS. +OMPI_TRY_FORTRAN_BINDINGS=$OMPI_FORTRAN_NO_BINDINGS + +case "x$enable_mpi_fortran" in + x|xbest-effort) + AC_MSG_RESULT([ (try)]) + OMPI_MIN_REQUIRED_FORTRAN_BINDINGS=$OMPI_FORTRAN_NO_BINDINGS + OMPI_TRY_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPIF08_BINDINGS + ;; + + xyes) + AC_MSG_RESULT([yes (default)]) + OMPI_MIN_REQUIRED_FORTRAN_BINDINGS=$OMPI_FORTRAN_MPIFH_BINDINGS + OMPI_TRY_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPIF08_BINDINGS + ;; + + xall|xusempif08) + AC_MSG_RESULT([all (usempif08)]) + OMPI_MIN_REQUIRED_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPIF08_BINDINGS + OMPI_TRY_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPIF08_BINDINGS + ;; + + xno|xnone) + AC_MSG_RESULT([no (none)]) + OMPI_MIN_REQUIRED_FORTRAN_BINDINGS=$OMPI_FORTRAN_NO_BINDINGS + OMPI_TRY_FORTRAN_BINDINGS=$OMPI_FORTRAN_NO_BINDINGS + ;; + + xmpifh) + AC_MSG_RESULT([yes (mpif.h)]) + OMPI_MIN_REQUIRED_FORTRAN_BINDINGS=$OMPI_FORTRAN_MPIFH_BINDINGS + OMPI_TRY_FORTRAN_BINDINGS=$OMPI_FORTRAN_MPIFH_BINDINGS + ;; + + xusempi) + AC_MSG_RESULT([yes (mpif.h, mpi module)]) + OMPI_MIN_REQUIRED_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS + OMPI_TRY_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS + ;; + + *) + AC_MSG_RESULT([unknown: $binding]) + AC_MSG_WARN([--enable-mpi-fortran supports only one of the following values: yes, all, none, best-effort, mpifh, usempi, or usempif08]) + AC_MSG_ERROR([Cannot continue]) + ;; +esac + +# +# C++ +# + +AC_MSG_CHECKING([if want C++ bindings]) +AC_ARG_ENABLE(mpi-cxx, + AC_HELP_STRING([--enable-mpi-cxx], + [enable C++ MPI bindings (default: disabled)])) +if test "$enable_mpi_cxx" = "yes"; then + AC_MSG_RESULT([yes]) + WANT_MPI_CXX_SUPPORT=1 +else + AC_MSG_RESULT([no]) + WANT_MPI_CXX_SUPPORT=0 +fi + +AC_MSG_CHECKING([if want MPI::SEEK_SET support]) +AC_ARG_ENABLE([mpi-cxx-seek], + [AC_HELP_STRING([--enable-mpi-cxx-seek], + [enable support for MPI::SEEK_SET, MPI::SEEK_END, and MPI::SEEK_POS in C++ bindings (default: enabled)])]) +if test "$enable_mpi_cxx_seek" != "no" ; then + AC_MSG_RESULT([yes]) + OMPI_WANT_MPI_CXX_SEEK=1 +else + AC_MSG_RESULT([no]) + OMPI_WANT_MPI_CXX_SEEK=0 +fi +AC_DEFINE_UNQUOTED([OMPI_WANT_MPI_CXX_SEEK], [$OMPI_WANT_MPI_CXX_SEEK], + [do we want to try to work around C++ bindings SEEK_* issue?]) + + +# +# Do we want to disable MPI parameter checking at run-time? +# + +AC_MSG_CHECKING([if want run-time MPI parameter checking]) +AC_ARG_WITH(mpi-param-check, + AC_HELP_STRING([--with-mpi-param-check(=VALUE)], + [behavior of MPI function parameter checking. Valid values are: always, never, runtime. If --with-mpi-param-check is specified with no VALUE argument, it is equivalent to a VALUE of "always"; --without-mpi-param-check is equivalent to "never" (default: runtime).])) +mpi_param_check=ompi_mpi_param_check +if test "$with_mpi_param_check" = "no" || \ + test "$with_mpi_param_check" = "never"; then + mpi_param_check=0 + ompi_param_check=0 + AC_MSG_RESULT([never]) +elif test "$with_mpi_param_check" = "yes" || \ + test "$with_mpi_param_check" = "always"; then + mpi_param_check=1 + ompi_param_check=1 + AC_MSG_RESULT([always]) +elif test "$with_mpi_param_check" = "runtime" || \ + test -z "$with_mpi_params_check"; then + ompi_param_check=1 + AC_MSG_RESULT([runtime]) +else + AC_MSG_RESULT([unknown]) + AC_MSG_WARN([*** Unrecognized --with-mpi-param-check value]) + AC_MSG_WARN([*** See "configure --help" output]) + AC_MSG_WARN([*** Defaulting to "runtime"]) +fi +AC_DEFINE_UNQUOTED(MPI_PARAM_CHECK, $mpi_param_check, + [Whether we want to check MPI parameters always, never, or decide at run-time]) +AC_DEFINE_UNQUOTED(OMPI_PARAM_CHECK, $ompi_param_check, + [Whether we want to check MPI parameters never or possible (an integer constant)]) + +AC_ARG_ENABLE([mpi-io], + [AC_HELP_STRING([--disable-mpi-io], + [Disable built-in support for MPI-2 I/O, likely because + an externally-provided MPI I/O package will be used. + Default is to use the internal framework system that uses + the ompio component and a specially modified version of ROMIO + that fits inside the romio314 component])]) + +AC_ARG_ENABLE([io-ompio], + [AC_HELP_STRING([--disable-io-ompio], + [Disable the ompio MPI-IO component])]) + +])dnl + diff --git a/config/ompi_contrib.m4 b/config/ompi_contrib.m4 new file mode 100644 index 00000000..d2b19753 --- /dev/null +++ b/config/ompi_contrib.m4 @@ -0,0 +1,140 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2007-2010 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +###################################################################### +# +# OMPI_CONTRIB +# +# configure the contributed software components. Currently fairly +# hard-wired, but someday should be much more like OMPI_MCA. See +# https://svn.open-mpi.org/trac/ompi/ticket/1162. +# +# USAGE: +# OMPI_CONTRIB() +# +###################################################################### +AC_DEFUN([OMPI_CONTRIB],[ + dnl for OPAL_CONFIGURE_USER env variable + AC_REQUIRE([OPAL_CONFIGURE_SETUP]) + + # Option to not build some of the contributed software packages + AC_ARG_ENABLE([contrib-no-build], + AC_HELP_STRING([--enable-contrib-no-build=LIST], + [Comma-separated list of contributed package names that will not be built. Possible values: ompi_mpicontrib_list. Example: "--enable-contrib-no-build=foo,bar" will disable building both the "foo" and "bar" contributed software packages (default: none -- i.e., build all possible contrib packages)])) + + # Parse the list to see what we should not build + opal_show_subtitle "Configuring contributed software packages" + AC_MSG_CHECKING([which contributed software packages should be disabled]) + if test "$enable_contrib_no_build" = "yes"; then + AC_MSG_RESULT([yes]) + AC_MSG_ERROR([*** The enable-contrib-no-build flag requires an explicit list +*** of packages to not build. For example, --enable-contrib-no-build=libompitrace]) + else + ifs_save="$IFS" + IFS="${IFS}$PATH_SEPARATOR," + msg= + for item in $enable_contrib_no_build; do + str="`echo DISABLE_contrib_${item}=1 | sed s/-/_/g`" + eval $str + msg="$item $msg" + done + IFS="$ifs_save" + fi + AC_MSG_RESULT([$msg]) + unset msg + + # List of contrib subdirs to traverse into + OMPI_CONTRIB_SUBDIRS= + OMPI_CONTRIB_DIST_SUBDIRS= + OMPI_MPI_CONTRIBS= + + # Cycle through each of the software packages and + # configure them if not disabled. + m4_foreach(software, [ompi_mpicontrib_list], + [_OMPI_CONTRIB_CONFIGURE(software)]) + + # Setup the top-level glue + AC_DEFINE_UNQUOTED([OMPI_MPI_CONTRIBS], ["$OMPI_MPI_CONTRIBS"], + [Contributed software packages built with Open MPI]) + AC_SUBST(OMPI_CONTRIB_SUBDIRS) + AC_SUBST(OMPI_CONTRIB_DIST_SUBDIRS) +])dnl + + +###################################################################### +# +# _OMPI_CONTRIB_SOFTWARE +# +# Setup a specific contributed software package. This is a subroutine +# because the work to setup each package is essentially the same. +# Currently assumes that there is a configure.m4 file in the +# contributed software directory. May someday be expanded to handle +# other things. +# +# USAGE: +# _OMPI_CONTRIB_SOFTARE([package_name]) +# +###################################################################### +AC_DEFUN([_OMPI_CONTRIB_CONFIGURE],[ + + opal_show_subsubsubtitle "$1 (m4 configuration macro)" + + # Put in a convenient enable/disable switch (it's a little more + # user friendly than + # --enable-contrib-no-build=, although each + # works just as well as the other). + AC_ARG_ENABLE([$1], + [AS_HELP_STRING([--disable-$1], + [disable support for contributed package $1 (default: enabled)])]) + AS_IF([test "x$enable_$1" = xno], [DISABLE_contrib_$1=yes]) + + OMPI_CONTRIB_HAPPY=0 + if test "$DISABLE_contrib_$1" = "" && test "$DISABLE_contrib_all" = ""; then + OMPI_contrib_$1_CONFIG([OMPI_CONTRIB_HAPPY=1], []) + AC_MSG_CHECKING([if contributed component $1 can compile]) + if test "$OMPI_CONTRIB_HAPPY" = "1"; then + OMPI_CONTRIB_SUBDIRS="$OMPI_CONTRIB_SUBDIRS contrib/$1" + OMPI_CONTRIB_DIST_SUBDIRS="$OMPI_CONTRIB_DIST_SUBDIRS contrib/$1" + if test "$OMPI_MPI_CONTRIBS" = ""; then + OMPI_MPI_CONTRIBS=$1 + else + OMPI_MPI_CONTRIBS="$1, $OMPI_MPI_CONTRIBS" + fi + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + + # If this component was requested via command line switch, then abort. + if test "x$enable_$1" = xyes ; then + AC_MSG_WARN([Contributed component "$1" failed to configure properly]) + AC_MSG_WARN([This component was requested via command line switch]) + AC_MSG_ERROR([Cannot continue]) + fi + fi + else + AC_MSG_NOTICE([disabled via command line switch]) + fi + AC_DEFINE_UNQUOTED(OMPI_ENABLE_CONTRIB_$1, [$OMPI_CONTRIB_HAPPY], + [Enable contributed software package $1]) + unset OMPI_CONTRIB_HAPPY +])dnl diff --git a/config/ompi_cxx_find_exception_flags.m4 b/config/ompi_cxx_find_exception_flags.m4 new file mode 100644 index 00000000..d6c45855 --- /dev/null +++ b/config/ompi_cxx_find_exception_flags.m4 @@ -0,0 +1,94 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2008 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +AC_DEFUN([OMPI_CXX_FIND_EXCEPTION_FLAGS],[ +# +# Arguments: none +# +# Dependencies: none +# +# Get the exception handling flags for the C++ compiler. Leaves +# CXXFLAGS undisturbed. +# Provides --with-exflags command line argument for configure as well. +# +# Sets OMPI_CXX_EXCEPTION_CXXFLAGS and OMPI_CXX_EXCEPTION_LDFLAGS as +# appropriate. +# Must call AC_SUBST manually +# + +# Command line flags + +AC_ARG_WITH(exflags, + AC_HELP_STRING([--with-exflags], + [Specify flags necessary to enable C++ exceptions]), + ompi_force_exflags="$withval") + +ompi_CXXFLAGS_SAVE="$CXXFLAGS" +AC_MSG_CHECKING([for compiler exception flags]) + +# See which flags to use + +if test "$ompi_force_exflags" != ""; then + + # If the user supplied flags, use those + + ompi_exflags="$ompi_force_exflags" +elif test "$GXX" = "yes"; then + + # g++ has changed their flags a few times. Sigh. + + CXXFLAGS="$CXXFLAGS -fexceptions" + + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[try { int i = 0; } catch(...) { int j = 2; }]])], ompi_happy=1, ompi_happy=0) + + if test "$ompi_happy" = "1"; then + ompi_exflags="-fexceptions"; + else + CXXFLAGS="$CXXFLAGS_SAVE -fhandle-exceptions" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[try { int i = 0; } catch(...) { int j = 2; }]])], ompi_happy=1, ompi_happy=0) + if test "$ompi_happy" = "1"; then + ompi_exflags="-fhandle-exceptions"; + fi + fi + AC_LANG_RESTORE +elif test "`basename $CXX`" = "KCC"; then + + # KCC flags + + ompi_exflags="--exceptions" +fi +CXXFLAGS="$ompi_CXXFLAGS_SAVE" + +# Save the result + +OMPI_CXX_EXCEPTIONS_CXXFLAGS="$ompi_exflags" +OMPI_CXX_EXCEPTIONS_LDFLAGS="$ompi_exflags" +if test "$ompi_exflags" = ""; then + AC_MSG_RESULT([none necessary]) +else + AC_MSG_RESULT([$ompi_exflags]) +fi + +# Clean up + +unset ompi_force_exflags ompi_CXXFLAGS_SAVE ompi_exflags ompi_happy])dnl + diff --git a/config/ompi_cxx_find_template_parameters.m4 b/config/ompi_cxx_find_template_parameters.m4 new file mode 100644 index 00000000..bfa4677a --- /dev/null +++ b/config/ompi_cxx_find_template_parameters.m4 @@ -0,0 +1,44 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2008 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +AC_DEFUN([OMPI_CXX_FIND_TEMPLATE_PARAMETERS],[ +# +# Arguments: none +# +# Dependencies: None +# +# Get the C++ compiler template parameters. +# +# Adds to CXXFLAGS + +AC_MSG_CHECKING([for C++ compiler template parameters]) +if test "$BASECXX" = "KCC"; then + new_flags="--one_instantiation_per_object" + CXXFLAGS="$CXXFLAGS $new_flags" +else + new_flags="none needed" +fi +AC_MSG_RESULT([$new_flags]) + +# +# Clean up +# +unset new_flags +]) diff --git a/config/ompi_cxx_find_template_repository.m4 b/config/ompi_cxx_find_template_repository.m4 new file mode 100644 index 00000000..47d4cf2a --- /dev/null +++ b/config/ompi_cxx_find_template_repository.m4 @@ -0,0 +1,172 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +AC_DEFUN([OMPI_CXX_FIND_TEMPLATE_REPOSITORY],[ + AC_REQUIRE([AC_PROG_GREP]) + + # + # Arguments: None + # + # Dependencies: None + # + # See if the compiler makes template repository directories + # Warning: this is a really screwy example! -JMS + # + # Sets OMPI_CXX_TEMPLATE_REPOSITORY to the template repository, or blank. + # Must call AC_SUBST manually + # + AC_CACHE_CHECK([for C++ template_repository_directory], + [ompi_cv_cxx_template_repository], + [_OMPI_CXX_FIND_TEMPLATE_REPOSITORY]) + + if test "$ompi_cv_cxx_template_repository" = "not used" ; then + OMPI_CXX_TEMPLATE_REPOSITORY= + elif test "$ompi_cv_cxx_template_repository" = "templates not supported" ; then + OMPI_CXX_TEMPLATE_REPOSITORY= + else + OMPI_CXX_TEMPLATE_REPOSITORY="$ompi_cv_cxx_template_repository" + fi +]) + + +AC_DEFUN([_OMPI_CXX_FIND_TEMPLATE_REPOSITORY],[ +# Find the repository +mkdir conf_tmp_$$ +cd conf_tmp_$$ +cat > conftest.h < +class foo { +public: + foo(T yow) : data(yow) { yow.member(3); }; + void member(int i); +private: + T data; +}; + +class bar { +public: + bar(int i) { data = i; }; + void member(int j) { data = data * j; }; + +private: + int data; +}; +EOF + +cat > conftest2.C < var1(6); + foo< foo > var2(var1); +} +EOF + +cat > conftest1.C < +void +foo::member(int i) +{ + i += 2; +} + +int +main() +{ + foo var1(6); + foo< foo > var2(var1); + + some_other_function(); + return 0; +} +EOF + +ompi_template_failed= +echo configure:__oline__: $CXX $CXXFLAGS -c conftest1.C >&5 +$CXX $CXXFLAGS -c conftest1.C >&5 2>&5 +if test ! -f conftest1.o ; then + ompi_cv_cxx_template_repository="templates not supported" + echo configure:__oline__: here is the program that failed: >&5 + cat conftest1.C >&5 + echo configure:__oline__: here is conftest.h: >&5 + cat conftest.h >&5 + ompi_template_failed=1 +else + echo configure:__oline__: $CXX $CXXFLAGS -c conftest2.C >&5 + $CXX $CXXFLAGS -c conftest2.C >&5 2>&5 + if test ! -f conftest2.o ; then + ompi_cv_cxx_template_repository= + echo configure:__oline__: here is the program that failed: >&5 + cat conftest2.C >&5 + echo configure:__oline__: here is conftest.h: >&5 + cat conftest.h >&5 + else + rm -rf conftest* + + for ompi_file in `ls` + do + if test "$ompi_file" != "." && test "$ompi_file" != ".."; then + # Is it a directory? + if test -d "$ompi_file"; then + ompi_template_dir="$ompi_file $ompi_template_dir" + + # Or is it a file? + else + name="`echo $ompi_file | cut -d. -f1`" + + temp_mask= + if test "$name" = "main" || test "$name" = "other"; then + temp_mask="`echo $ompi_file | cut -d. -f2`" + if test "$ompi_template_filemask" = ""; then + ompi_template_filemask="$temp_mask"; + elif test "`echo $ompi_template_filemask | $GREP $temp_mask`" = ""; then + ompi_template_filemask="$ompi_template_filemask $temp_mask" + fi + fi + fi + fi + done + if test "$ompi_template_filemask" != ""; then + temp_mask= + for mask in $ompi_template_filemask + do + temp_mask="*.$mask $temp_mask" + done + ompi_template_filemask=$temp_mask + fi + fi +fi +ompi_cv_cxx_template_repository="$ompi_template_dir $ompi_template_filemask" + +if test "`echo $ompi_cv_cxx_template_repository`" = ""; then + ompi_cv_cxx_template_repository="not used" +fi +cd .. +rm -rf conf_tmp_$$ + +# Clean up +unset ompi_file ompi_template_failed ompi_template_dir]) diff --git a/config/ompi_cxx_have_exceptions.m4 b/config/ompi_cxx_have_exceptions.m4 new file mode 100644 index 00000000..2bd886e6 --- /dev/null +++ b/config/ompi_cxx_have_exceptions.m4 @@ -0,0 +1,44 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2008 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +AC_DEFUN([OMPI_CXX_HAVE_EXCEPTIONS],[ +# +# Arguments: None +# +# Depdencies: None +# +# Check to see if the C++ compiler can handle exceptions +# +# Sets OMPI_CXX_EXCEPTIONS to 1 if compiler has exceptions, 0 if not +# + +AC_MSG_CHECKING([for throw/catch]) +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[int i=1; throw(i);]])], + OMPI_CXX_EXCEPTIONS=1, OMPI_CXX_EXCPTIONS=0) +if test "$OMPI_CXX_EXCEPTIONS" = "1"; then + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi + +# Clean up +AC_LANG_RESTORE])dnl diff --git a/config/ompi_endpoint_tag.m4 b/config/ompi_endpoint_tag.m4 new file mode 100644 index 00000000..c47df147 --- /dev/null +++ b/config/ompi_endpoint_tag.m4 @@ -0,0 +1,48 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2013 Sandia National Laboratories. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +AC_DEFUN([OMPI_REQUIRE_ENDPOINT_TAG_INIT], [ + ompi_endpoint_tag_counter=0 +]) + + +# OMPI_REQUIRE_ENDPOINT_TAG(tag_name) +# ----------------------------------- +# This component requires an endpoint tag (storage space in the +# ompi_proc_t structure) for a tag named tag_name. If tag_name +# already has a tag index, this function is a no-op. +AC_DEFUN([OMPI_REQUIRE_ENDPOINT_TAG], [ + AC_REQUIRE([OMPI_REQUIRE_ENDPOINT_TAG_INIT]) + AC_MSG_CHECKING([for index in endpoint array for tag $1]) + AS_IF([test -z "$OMPI_PROC_ENDPOINT_TAG_$1"], + [OMPI_PROC_ENDPOINT_TAG_$1=$ompi_endpoint_tag_counter + AC_DEFINE_UNQUOTED([OMPI_PROC_ENDPOINT_TAG_$1], [$OMPI_PROC_ENDPOINT_TAG_$1], + [Index into endpoint array for $1]) + ompi_endpoint_tag_counter=`expr $ompi_endpoint_tag_counter + 1`]) + AC_MSG_RESULT([$OMPI_PROC_ENDPOINT_TAG_$1]) +]) + + +AC_DEFUN([OMPI_REQUIRE_ENDPOINT_TAG_FINI], [ +dnl AC_ARG_ENABLE([dynamic-endpoint-information], +dnl [AC_HELP_STRING([--disable-dynamic-endpoint-information], +dnl [Disable support for dynamic endpoint information storage. This saves a considerable amount of memory for large processes, but makes loading outside components which require endpoint storage impossible.])]) +dnl AS_IF([test "$enable_endpoint_information" != "no"], +dnl [OMPI_REQUIRE_ENDPOINT_TAG(DYNAMIC)]) + + AC_MSG_CHECKING([for size of endpoint array]) + AS_IF([test -z "$ompi_endpoint_tag_counter" || test "$ompi_endpoint_tag_counter" = "0"], + [AC_MSG_ERROR([Endpoint index count is 0. This means no MPI communication would be possible. Aborting.])]) + AC_MSG_RESULT([$ompi_endpoint_tag_counter]) + AC_DEFINE_UNQUOTED([OMPI_PROC_ENDPOINT_TAG_MAX], [$ompi_endpoint_tag_counter], + [Maximum number of endpoint entries to be attached to an ompi_proc_t]) +]) diff --git a/config/ompi_ext.m4 b/config/ompi_ext.m4 new file mode 100644 index 00000000..90126f61 --- /dev/null +++ b/config/ompi_ext.m4 @@ -0,0 +1,777 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2009 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2009-2017 Cisco Systems, Inc. All rights reserved +dnl Copyright (c) 2011-2012 Oak Ridge National Labs. All rights reserved. +dnl Copyright (c) 2015-2017 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +###################################################################### +# +# OMPI_EXT +# +# configure the Interface Extensions [similar to MCA version]. Works hand in +# hand with Open MPI's autogen.pl, requiring it's specially formatted lists +# of frameworks, components, etc. +# +# USAGE: +# OMPI_EXT() +# +###################################################################### +AC_DEFUN([OMPI_EXT],[ + dnl for OPAL_CONFIGURE_USER env variable + AC_REQUIRE([OPAL_CONFIGURE_SETUP]) + + # Note that we do not build DSO's here -- we *only* build convenience + # libraries that get slurped into higher-level libraries + # + # [default -- no option given] = No extensions built + # --enable-mpi-ext=[,]*EXTENSION[,]* + # + AC_ARG_ENABLE(mpi-ext, + AC_HELP_STRING([--enable-mpi-ext[=LIST]], + [Comma-separated list of extensions that should be built. Possible values: ompi_mpiext_list. Example: "--enable-mpi-ext=foo,bar" will enable building the MPI extensions "foo" and "bar". If LIST is empty or the special value "all", then all available MPI extensions will be built (default: all).])) + + # print some nice messages about what we're about to do... + AC_MSG_CHECKING([for available MPI Extensions]) + AC_MSG_RESULT([ompi_mpiext_list]) + + AC_MSG_CHECKING([which MPI extension should be enabled]) + if test "$enable_mpi_ext" = "" || \ + test "$enable_mpi_ext" = "yes" || \ + test "$enable_mpi_ext" = "all"; then + enable_mpi_ext=all + msg="All Available Extensions" + str="`echo ENABLE_EXT_ALL=1`" + eval $str + else + ifs_save="$IFS" + IFS="${IFS}$PATH_SEPARATOR," + msg= + for item in $enable_mpi_ext; do + type="`echo $item | cut -s -f1 -d-`" + if test -z $type ; then + type=$item + fi + str="`echo ENABLE_${type}=1 | sed s/-/_/g`" + eval $str + msg="$item $msg" + done + IFS="$ifs_save" + fi + AC_MSG_RESULT([$msg]) + unset msg + + m4_ifdef([ompi_mpiext_list], [], + [m4_fatal([Could not find MPI Extensions list. Aborting.])]) + + EXT_CONFIGURE +]) + + +###################################################################### +# +# EXT_CONFIGURE +# +# USAGE: +# EXT_CONFIGURE() +# +###################################################################### +AC_DEFUN([EXT_CONFIGURE],[ + outdir=ompi/include + + # first create the output include directory + mkdir -p $outdir + + ############### + # C Bindings + ############### + + # remove any previously generated #include files + mpi_ext_h=$outdir/mpi-ext.h + rm -f $mpi_ext_h + + # Create the final mpi-ext.h file. + cat > $mpi_ext_h < $mpif_ext_h < $mpiusempi_ext_h < $mpiusempif08_ext_h <> $mpi_ext_h <> $mpif_ext_h <> $mpiusempi_ext_h <> $mpiusempif08_ext_h < $outfile < /dev/null 2>&1 + if test "$?" != "0"; then + mv $outfile $outfile_real + else + rm -f $outfile + fi + fi + rm -f $outfile.struct $outfile.extern + + # We have all the results we need. Now put them in various + # variables/defines so that others can see the results. + + OMPI_EXT_MAKE_DIR_LIST(OMPI_MPIEXT_ALL_SUBDIRS, $OMPI_MPIEXT_ALL) + + OMPI_EXT_MAKE_LISTS(OMPI_MPIEXT_C, $OMPI_MPIEXT_C, c, c) + OMPI_EXT_MAKE_LISTS(OMPI_MPIEXT_MPIFH, $OMPI_MPIEXT_MPIFH, mpif-h, mpifh) + OMPI_EXT_MAKE_LISTS(OMPI_MPIEXT_USEMPI, $OMPI_MPIEXT_USEMPI, use-mpi, usempi) + OMPI_EXT_MAKE_LISTS(OMPI_MPIEXT_USEMPIF08, $OMPI_MPIEXT_USEMPIF08, use-mpi-f08, usempif08) + + comps=`echo $OMPI_MPIEXT_C | sed -e 's/^[ \t]*//;s/[ \t]*$//;s/ /, /g'` + AC_DEFINE_UNQUOTED([OMPI_MPIEXT_COMPONENTS], ["$comps"], + [MPI Extensions included in libmpi]) +]) + + +###################################################################### +# +# EXT_CONFIGURE_M4_CONFIG_COMPONENT +# +# +# USAGE: +# EXT_CONFIGURE_M4_CONFIG_COMPONENT((1) component_name, +# (2) all_components_variable, +# (3) c_components_variable, +# (4) mpifh_components_variable, +# (5) usempi_components_variable, +# (6) usempif08_components_variable) +# +# - component_name is a single, naked string (no prefix) +# - all others are naked component names (e.g., "example"). If an +# extension is named in that variable, it means that that extension +# has bindings of that flavor. +# +###################################################################### +AC_DEFUN([EXT_CONFIGURE_M4_CONFIG_COMPONENT],[ + opal_show_subsubsubtitle "MPI Extension $1" + + EXT_COMPONENT_BUILD_CHECK($1, [should_build=1], [should_build=0]) + + # try to configure the component + m4_ifdef([OMPI_MPIEXT_$1_CONFIG], [], + [m4_fatal([Could not find OMPI_MPIEXT_]$1[_CONFIG macro for ]$1[ component])]) + + OMPI_MPIEXT_$1_CONFIG([should_build=${should_build}], [should_build=0]) + + AS_IF([test $should_build -eq 1], + [EXT_PROCESS_COMPONENT([$1], [$2], [$3], [$4], [$5], [$6])], + [EXT_PROCESS_DEAD_COMPONENT([$1], [$2])]) +]) + +###################################################################### +# +# EXT_PROCESS_COMPONENT +# +# does all setup work for given component. It should be known before +# calling that this component can build properly (and exists) +# +# USAGE: +# EXT_CONFIGURE_ALL_CONFIG_COMPONENTS((1) component_name +# (2) all_components_variable, +# (3) c_components_variable, +# (4) mpifh_components_variable, +# (5) usempi_components_variable, +# (6) usempif08_components_variable) +# +# C bindings are mandatory. Other bindings are optional / built if +# they are found. Here's the files that the m4 expects: +# +#-------------------- +# +# C: +# - c/mpiext__c.h: is included in mpi_ext.h +# - c/libmpiext_.la: convneience library slurped into libmpi.la +# +# mpi.f.h: +# - mpif-h/mpiext__mpifh.h: is included mpi mpif_ext.h +# - mpif-h/libmpiext__mpifh.la: convenience library slurped +# into libmpi_mpifh.la +# +# If the ..._mpifh.h file exists, it is assumed that "make all" will +# build the .la file. And therefore we'll include full support for +# the mpif.h bindings for this extension in OMPI. +# +#-------------------- +# +# use mpi: +# - use-mpi/mpiext__usempi.h: included in the mpi_ext module +# +# Only supported when the ignore-tkr mpi module is built (this +# currently means: when you don't use gfortran). +# +# If the ..._usempi.h file exists, it is assumed that we'll include +# full support for the mpi_ext bindings for this extension in OMPI. +# +# NO LIBRARY IS SUPPORTED FOR THE mpi MODULE BINDINGS! It is assumed +# that all required symbols will be in the +# libmpiext__mpifh.la library, and all that this set of +# bindings does it give strong type checking to those subroutines. +# +#-------------------- +# +# use mpi_f08: +# - use-mpi-f08/mpiext__usempif08.h: included in the mpi_ext module +# - use-mpi-f08/libmpiext__usempif08.la: convenience +# library slurped into libmpi_usempif08.la +# +# Only supported when the non-descriptor-based mpi_f08 module is built +# (this currently means: when you don't use gfortran). +# +# If the ..._usempif08.h file exists, it is assumed that "make all" +# will build the .la file. And therefore we'll include full support +# for the mpi_f08 bindings for this extension in OMPI. +# +###################################################################### +AC_DEFUN([EXT_PROCESS_COMPONENT],[ + component=$1 + + # Output pretty results + AC_MSG_CHECKING([if MPI Extension $component can compile]) + AC_MSG_RESULT([yes]) + + tmp[=]m4_translit([$1],[a-z],[A-Z]) + component_define="OMPI_HAVE_MPI_EXT_${tmp}" + + ############### + # C Bindings + ############### + test_header="${srcdir}/ompi/mpiext/$component/c/mpiext_${component}_c.h" + + AC_MSG_CHECKING([if MPI Extension $component has C bindings]) + + AS_IF([test ! -e "$test_header" && test ! -e "$test_header.in"], + [ # There *must* be C bindings + AC_MSG_RESULT([no]) + AC_MSG_WARN([C bindings for MPI extensions are required]) + AC_MSG_ERROR([Cannot continue])]) + + AC_MSG_RESULT([yes (required)]) + + # Save the list of headers and convenience libraries that this + # component will output + $2="$$2 $component" + $3="$$3 $component" + + # JMS Where is this needed? + EXT_C_HEADERS="$EXT_C_HEADERS mpiext/$component/c/mpiext_${component}_c.h" + + component_header="mpiext_${component}_c.h" + + cat >> $mpi_ext_h <> $mpif_ext_h <> $mpif_ext_h <> $mpiusempi_ext_h <> $mpiusempi_ext_h <> $mpiusempi_ext_h <> $mpiusempi_ext_h <> $mpiusempif08_ext_h <> $mpiusempif08_ext_h <> $mpiusempif08_ext_h <> $mpiusempif08_ext_h <> $outfile.extern + echo " &ompi_mpiext_${component}, " >> $outfile.struct]) + + # now add the flags that were set in the environment variables + # framework_component_FOO (for example, the flags set by + # m4_configure components) + m4_foreach(flags, [LDFLAGS, LIBS], + [AS_IF([test "$mpiext_$1_WRAPPER_EXTRA_]flags[" = ""], + [OPAL_FLAGS_APPEND_UNIQ([ompi_mca_wrapper_extra_]m4_tolower(flags), [$mpiext_$1_]flags)], + [OPAL_FLAGS_APPEND_UNIQ([ompi_mca_wrapper_extra_]m4_tolower(flags), [$mpiext_$1_WRAPPER_EXTRA_]flags)]) + ]) + + AS_IF([test "$mpiext_$1_WRAPPER_EXTRA_CPPFLAGS" != ""], + [OPAL_FLAGS_APPEND_UNIQ([ompi_mca_wrapper_extra_cppflags], [$mpiext_$1_WRAPPER_EXTRA_CPPFLAGS])]) +]) + + +###################################################################### +# +# EXT_PROCESS_DEAD_COMPONENT +# +# process a component that can not be built. Do the last minute checks +# to make sure the user isn't doing something stupid. +# +# USAGE: +# EXT_PROCESS_DEAD_COMPONENT((1) component_name, +# (2) all_components_variable) +# +# NOTE: component_name will not be determined until run time. +# +###################################################################### +AC_DEFUN([EXT_PROCESS_DEAD_COMPONENT],[ + AC_MSG_CHECKING([if MPI Extension $1 can compile]) + + # Need to add this component to the "all" list so that it is + # included in DIST SUBDIRS + $2="$$2 $1" + + AC_MSG_RESULT([no]) +]) + + + +###################################################################### +# +# EXT_COMPONENT_BUILD_CHECK +# +# checks the standard rules of component building to see if the +# given component should be built. +# +# USAGE: +# EXT_COMPONENT_BUILD_CHECK(component, +# action-if-build, action-if-not-build) +# +###################################################################### +AC_DEFUN([EXT_COMPONENT_BUILD_CHECK],[ + AC_REQUIRE([AC_PROG_GREP]) + + component=$1 + component_path="$srcdir/ompi/mpiext/$component" + want_component=0 + + # build if: + # - the component type is direct and we are that component + # - there is no ompi_ignore file + # - there is an ompi_ignore, but there is an empty ompi_unignore + # - there is an ompi_ignore, but username is in ompi_unignore + if test -d $component_path ; then + # decide if we want the component to be built or not. This + # is spread out because some of the logic is a little complex + # and test's syntax isn't exactly the greatest. We want to + # build the component by default. + want_component=1 + if test -f $component_path/.ompi_ignore ; then + # If there is an ompi_ignore file, don't build + # the component. Note that this decision can be + # overridden by the unignore logic below. + want_component=0 + fi + if test -f $component_path/.ompi_unignore ; then + # if there is an empty ompi_unignore, that is + # equivalent to having your userid in the unignore file. + # If userid is in the file, unignore the ignore file. + if test ! -s $component_path/.ompi_unignore ; then + want_component=1 + elif test ! -z "`$GREP $OPAL_CONFIGURE_USER $component_path/.ompi_unignore`" ; then + want_component=1 + fi + fi + fi + + # if we asked for everything, then allow it to build if able + str="ENABLED_COMPONENT_CHECK=\$ENABLE_EXT_ALL" + eval $str + if test ! "$ENABLED_COMPONENT_CHECK" = "1" ; then + # if we were explicitly disabled, don't build :) + str="ENABLED_COMPONENT_CHECK=\$ENABLE_${component}" + eval $str + if test ! "$ENABLED_COMPONENT_CHECK" = "1" ; then + want_component=0 + fi + fi + + AS_IF([test "$want_component" = "1"], [$2], [$3]) +]) + + +# OMPI_EXT_MAKE_DIR_LIST(subst'ed variable, shell list) +# +# Prefix every extension name with "mpiext/" and AC subst it. +# ------------------------------------------------------------------------- +AC_DEFUN([OMPI_EXT_MAKE_DIR_LIST],[ + $1= + for item in $2 ; do + $1="$$1 mpiext/$item" + done + AC_SUBST($1) +]) + +# OMPI_EXT_MAKE_LISTS((1) subst'ed variable prefix, +# (2) shell list, +# (3) bindings dir name, +# (4) bindings suffix) +# +# Prefix every extension name with "mpiext/". +# ------------------------------------------------------------------------- +AC_DEFUN([OMPI_EXT_MAKE_LISTS],[ + # Make the directory list + tmp= + for item in $2 ; do + tmp="$tmp mpiext/$item/$3" + done + $1_DIRS=$tmp + AC_SUBST($1_DIRS) + + # Make the list of libraries + tmp= + for item in $2 ; do + tmp="$tmp "'$(top_builddir)'"/ompi/mpiext/$item/$3/libmpiext_${item}_$4.la" + done + $1_LIBS=$tmp + AC_SUBST($1_LIBS) +]) diff --git a/config/ompi_find_mpi_aint_count_offset.m4 b/config/ompi_find_mpi_aint_count_offset.m4 new file mode 100644 index 00000000..9aee03e5 --- /dev/null +++ b/config/ompi_find_mpi_aint_count_offset.m4 @@ -0,0 +1,245 @@ +# -*- shell-script -*- +# +# Copyright (c) 2004-2009 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2007 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2006-2014 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2006-2008 Sun Microsystems, Inc. All rights reserved. +# Copyright (c) 2006-2007 Los Alamos National Security, LLC. All rights +# reserved. +# Copyright (c) 2009 Oak Ridge National Labs. All rights reserved. +# Copyright (c) 2014-2017 Research Organization for Information Science +# and Technology (RIST). All rights reserved. +# Copyright (c) 2015 Intel, Inc. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +AC_DEFUN([OMPI_FIND_MPI_AINT_COUNT_OFFSET],[ + _OMPI_FIND_MPI_AINT_TYPE + _OMPI_FIND_MPI_COUNT_TYPE + _OMPI_FIND_MPI_OFFSET_TYPE + + if test "$ompi_fortran_happy" = "1" && \ + test "$OMPI_TRY_FORTRAN_BINDINGS" -gt "$OMPI_FORTRAN_NO_BINDINGS"; then + _OMPI_FIND_MPI_INTEGER_KIND + _OMPI_FIND_MPI_ADDRESS_KIND + _OMPI_FIND_MPI_COUNT_KIND + _OMPI_FIND_MPI_OFFSET_KIND + fi +]) + +dnl ######################################################################### + +AC_DEFUN([_OMPI_FIND_MPI_AINT_TYPE], [ + # MPI_Aint type is ptrdiff_t; just use that. + AC_MSG_CHECKING([for type of MPI_Aint]) + + MPI_AINT_TYPE=ptrdiff_t + # Get the size of this type; we'll need it to figure out Fortran's + # MPI_ADDRESS_KIND, later + MPI_AINT_SIZE=$ac_cv_sizeof_ptrdiff_t + AC_DEFINE_UNQUOTED(OMPI_MPI_AINT_TYPE, [$MPI_AINT_TYPE], + [Type of MPI_Aint]) + + AC_MSG_RESULT([$MPI_AINT_TYPE (size: $MPI_AINT_SIZE)]) +]) + +dnl ######################################################################### + +AC_DEFUN([_OMPI_FIND_MPI_COUNT_TYPE], [ + # Find the type of MPI_Count. Per MPI-3.0 2.5.8, it needs to be + # as least as large as an int, MPI_Aint, and MPI_Offset (we'll + # define MPI_Offset later to be the same as an MPI_Count). + + # Note, however, that per + # https://svn.open-mpi.org/trac/ompi/ticket/4205, MPI_Count cannot + # be larger than a size_t (e.g., if you're compiling in 32 bit + # more on a 64 bit platform, long long will be 8 bytes, but size_t + # will only be 4 bytes). The entire BTL, PML, and convertor + # infrastructure rely on sizeof(MPI_Count) being <= + # sizeof(size_t). So artificially limit the size of MPI_Count, if + # necessary. + + # Also note: do not search for int64_t or int32_t, because using + # these types mean that we would need to include in + # mpi.h, which we probably shouldn't do. + + # Finally, note that MPI_Count has an impact on the extent of a + # datatype, extent defined by the MPI standard as an MPI_Aint. + # This MPI_Aint is also the largest different between two memory + # pointers -- the well-known ptrdiff_t. There *are* systems where + # the address space is 32 bit but the filesystem space is 64 bit + # (e.g., BlueGene), and therefore MPI_Aint is 32 bit and + # MPI_Offset (and therefore MPI_Count) is 64 bit. Open MPI + # doesn't currently support this configuration -- re-tooling in + # the convertor/PML/BML/BTL will be necessary before that can work + # properly. + + # Keep in mind, however, that while ptrdiff_t and size_t represent + # similar concepts (length or displacement in memory), one is + # slightly larger than the other (one is unsigned and the other + # signed) and there is no requirement for them to be of the same + # width. On systems with non-monolithic memory space, the scheme + # we use below may not work. On systems with non-monolithic + # memory space, the scheme we use below may not work. ...but such + # systems are pretty rare today. + + MPI_COUNT_TYPE=unknonwn + AC_MSG_CHECKING([for type of MPI_Count]) + if test $ac_cv_type_long_long = yes && \ + test $ac_cv_sizeof_long_long -le $ac_cv_sizeof_size_t && \ + test $ac_cv_sizeof_long_long -ge $MPI_AINT_SIZE; then + MPI_COUNT_TYPE="long long" + MPI_COUNT_DATATYPE=MPI_LONG_LONG + MPI_COUNT_SIZE=$ac_cv_sizeof_long_long + elif test $ac_cv_sizeof_long -le $ac_cv_sizeof_size_t && \ + test $ac_cv_sizeof_long -ge $MPI_AINT_SIZE; then + MPI_COUNT_TYPE=long + MPI_COUNT_DATATYPE=MPI_LONG + MPI_COUNT_SIZE=$ac_cv_sizeof_long + elif test $ac_cv_sizeof_int -le $ac_cv_sizeof_size_t && \ + test $ac_cv_sizeof_int -ge $MPI_AINT_SIZE; then + MPI_COUNT_TYPE=int + MPI_COUNT_DATATYPE=MPI_INT + MPI_COUNT_SIZE=$ac_cv_sizeof_int + fi + + if test "$MPI_COUNT_TYPE" = "unknown"; then + AC_MSG_RESULT([not found]) + AC_MSG_WARN([*** Unable to find a good type for MPI_Count]) + AC_MSG_ERROR([Cannot continue]) + fi + + if test $MPI_COUNT_SIZE -eq 8 ; then + MPI_COUNT_MAX="0x7fffffffffffffffll" + elif test $MPI_COUNT_SIZE -eq 4 ; then + MPI_COUNT_MAX="0x7fffffffl" + elif test $MPI_COUNT_SIZE -eq 2 ; then + MPI_COUNT_MAX="0x7fff" + else + AC_MSG_RESULT([$MPI_COUNT_TYPE (size: $MPI_COUNT_SIZE)]) + AC_MSG_WARN([*** Configure cannot handle this size -- contact Open MPI developers]) + AC_MSG_ERROR([Cannot continue]) + fi + + AC_DEFINE_UNQUOTED(OMPI_MPI_COUNT_SIZE, $MPI_COUNT_SIZE, + [Size of the MPI_Count datatype]) + AC_DEFINE_UNQUOTED(OMPI_MPI_COUNT_TYPE, $MPI_COUNT_TYPE, + [Type of the MPI_Count datatype]) + AC_DEFINE_UNQUOTED(MPI_COUNT_MAX, $MPI_COUNT_MAX, + [Maximum value for an MPI_Count]) + + AC_MSG_RESULT([$MPI_COUNT_TYPE (size: $MPI_COUNT_SIZE)]) +]) + +dnl ######################################################################### + +AC_DEFUN([_OMPI_FIND_MPI_OFFSET_TYPE], [ + # Just make MPI_Offset be the same as MPI_Count + AC_MSG_CHECKING([for type of MPI_Offset]) + + MPI_OFFSET_TYPE=$MPI_COUNT_TYPE + AC_DEFINE_UNQUOTED(OMPI_MPI_OFFSET_TYPE, $MPI_OFFSET_TYPE, + [Type of MPI_Offset]) + MPI_OFFSET_SIZE=$MPI_COUNT_SIZE + AC_DEFINE_UNQUOTED(OMPI_MPI_OFFSET_SIZE, $MPI_OFFSET_SIZE, + [Size of the MPI_Offset]) + AC_MSG_RESULT([$MPI_COUNT_TYPE (size: $MPI_OFFSET_SIZE)]) + + AC_MSG_CHECKING([for an MPI datatype for MPI_Offset]) + MPI_OFFSET_DATATYPE=$MPI_COUNT_DATATYPE + AC_DEFINE_UNQUOTED(OMPI_OFFSET_DATATYPE, $MPI_OFFSET_DATATYPE, + [MPI datatype corresponding to MPI_Offset]) + AC_MSG_RESULT([$MPI_OFFSET_DATATYPE]) +]) + +dnl ######################################################################### + +AC_DEFUN([_OMPI_FIND_MPI_INTEGER_KIND], [ + # Get the kind value for Fortran MPI_INTEGER_KIND (corresponding + # to whatever is the same size as a F77 INTEGER -- for the + # most-likely-will-never-occur case where F77 INTEGER is smaller + # than an F90 INTEGER; see MPI-2 4.12.6.5. As with OMPI + # FORTRAN_CHECK, use the official BIND(C) KIND names (see comment + # in fortran_check.m4). + AC_MSG_CHECKING([for MPI_INTEGER_KIND]) + if test $OMPI_SIZEOF_FORTRAN_INTEGER -eq 2; then + OMPI_MPI_INTEGER_KIND=$OMPI_FORTRAN_C_INT16_T_KIND + elif test $OMPI_SIZEOF_FORTRAN_INTEGER -eq 4; then + OMPI_MPI_INTEGER_KIND=$OMPI_FORTRAN_C_INT32_T_KIND + elif test $OMPI_SIZEOF_FORTRAN_INTEGER -eq 8; then + OMPI_MPI_INTEGER_KIND=$OMPI_FORTRAN_C_INT64_T_KIND + elif test $OMPI_SIZEOF_FORTRAN_INTEGER -eq 16; then + AC_MSG_ERROR([Cannot support Fortran MPI_INTEGER_KIND!]) + fi + AC_SUBST(OMPI_MPI_INTEGER_KIND) + AC_MSG_RESULT([$OMPI_MPI_INTEGER_KIND]) +]) + +dnl ######################################################################### + +AC_DEFUN([_OMPI_FIND_MPI_ADDRESS_KIND], [ + # Get the kind value for Fortran MPI_ADDRESS_KIND (corresponding + # to whatever is big enough to hold MPI_Aint). + AC_MSG_CHECKING([for MPI_ADDRESS_KIND]) + if test $MPI_AINT_SIZE -eq 2 ; then + OMPI_MPI_ADDRESS_KIND=$OMPI_FORTRAN_C_INT16_T_KIND + elif test $MPI_AINT_SIZE -eq 4 ; then + OMPI_MPI_ADDRESS_KIND=$OMPI_FORTRAN_C_INT32_T_KIND + elif test $MPI_AINT_SIZE -eq 8 ; then + OMPI_MPI_ADDRESS_KIND=$OMPI_FORTRAN_C_INT64_T_KIND + elif test $MPI_AINT_SIZE -eq 16 ; then + AC_MSG_ERROR([Cannot support Fortran MPI_ADDRESS_KIND!]) + fi + AC_SUBST(OMPI_MPI_ADDRESS_KIND) + AC_MSG_RESULT([$OMPI_MPI_ADDRESS_KIND]) +]) + +dnl ######################################################################### + +AC_DEFUN([_OMPI_FIND_MPI_COUNT_KIND], [ + # Get the kind value for Fortran MPI_COUNT_KIND (corresponding to + # whatever is big enough to hold an MPI_Count) + AC_MSG_CHECKING([for MPI_COUNT_KIND]) + if test $MPI_COUNT_SIZE -eq 2 ; then + OMPI_MPI_COUNT_KIND=$OMPI_FORTRAN_C_INT16_T_KIND + elif test $MPI_COUNT_SIZE -eq 4 ; then + OMPI_MPI_COUNT_KIND=$OMPI_FORTRAN_C_INT32_T_KIND + elif test $MPI_COUNT_SIZE -eq 8 ; then + OMPI_MPI_COUNT_KIND=$OMPI_FORTRAN_C_INT64_T_KIND + elif test $MPI_COUNT_SIZE -eq 16 ; then + AC_MSG_ERROR([Cannot support Fortran MPI_COUNT_KIND!]) + fi + AC_SUBST(OMPI_MPI_COUNT_KIND) + AC_MSG_RESULT([$OMPI_MPI_COUNT_KIND]) +]) + +dnl ######################################################################### + +AC_DEFUN([_OMPI_FIND_MPI_OFFSET_KIND], [ + # Get the kind value for Fortran MPI_OFFSET_KIND (corresponding to + # whatever is big enough to hold an MPI_Offset) + AC_MSG_CHECKING([for MPI_OFFSET_KIND]) + if test $MPI_OFFSET_SIZE -eq 2 ; then + OMPI_MPI_OFFSET_KIND=$OMPI_FORTRAN_C_INT16_T_KIND + elif test $MPI_OFFSET_SIZE -eq 4 ; then + OMPI_MPI_OFFSET_KIND=$OMPI_FORTRAN_C_INT32_T_KIND + elif test $MPI_OFFSET_SIZE -eq 8 ; then + OMPI_MPI_OFFSET_KIND=$OMPI_FORTRAN_C_INT64_T_KIND + elif test $MPI_OFFSET_SIZE -eq 16 ; then + AC_MSG_ERROR([Cannot support Fortran MPI_OFFSET_KIND!]) + fi + AC_SUBST(OMPI_MPI_OFFSET_KIND) + AC_MSG_RESULT([$OMPI_MPI_OFFSET_KIND]) +]) diff --git a/config/ompi_fortran_check.m4 b/config/ompi_fortran_check.m4 new file mode 100644 index 00000000..46ecf24d --- /dev/null +++ b/config/ompi_fortran_check.m4 @@ -0,0 +1,203 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + + +# OMPI_FORTRAN_CHECK(Fortran type, c type required, types to search, +# expected size, define ompi_fortran__t or not)) +#---------------------------------------------------------- +# Check Fortran type, including: +# - whether compiler supports or not +# - size of type +# - equal to expected size +# - alignment +# - associated C type +# +# types to search is a comma-seperated list of values +AC_DEFUN([OMPI_FORTRAN_CHECK], [ + OPAL_VAR_SCOPE_PUSH([ofc_have_type ofc_type_size ofc_type_alignment ofc_c_type ofc_expected_size]) + + ofc_expected_size=$4 + ofc_define_type=$5 + ofc_have_type=0 + ofc_type_size=$ac_cv_sizeof_int + ofc_type_alignment=$ac_cv_sizeof_int + ofc_c_type=ompi_fortran_bogus_type_t + ofc_type_kind=0 + + # Only check if we actually want the Fortran bindings / have a + # Fortran compiler. This allows us to call this macro, even if + # there is no Fortran compiler. If we have no Fortran compiler, + # then just set a bunch of defaults. + if test $OMPI_TRY_FORTRAN_BINDINGS -gt $OMPI_FORTRAN_NO_BINDINGS; then + OMPI_FORTRAN_CHECK_TYPE([$1], [ofc_have_type=1], [ofc_have_type=0]) + else + AC_MSG_CHECKING([if Fortran compiler supports $1]) + AC_MSG_RESULT([skipped]) + fi + + if test "$ofc_have_type" = "1"; then + # What is the size of this type? + + # NOTE: Some Fortran compilers actually will return that a + # type exists even if it doesn't support it -- the compiler + # will automatically convert the unsupported type to a type + # that it *does* support. For example, if you try to use + # INTEGER*16 and the compiler doesn't support it, it may well + # automatically convert it to INTEGER*8 for you (!). So we + # have to check the actual size of the type once we determine + # that the compiler doesn't error if we try to use it + # (i.e,. the compiler *might* support that type). If the size + # doesn't match the expected size, then the compiler doesn't + # really support it. + OMPI_FORTRAN_GET_SIZEOF([], [$1], [ofc_type_size]) + if test "$ofc_expected_size" != "-1" && test "$ofc_type_size" != "$ofc_expected_size"; then + AC_MSG_WARN([*** Fortran $1 does not have expected size!]) + AC_MSG_WARN([*** Expected $ofc_expected_size, got $ofc_type_size]) + AC_MSG_WARN([*** Disabling MPI support for Fortran $1]) + ofc_have_type=0 + else + # Look for a corresponding C type (will abort by itself if the + # type isn't found and we need it) + ofc_c_type= + m4_ifval([$3], [OPAL_FIND_TYPE([$1], [$3], [$2], [$ofc_type_size], [ofc_c_type]) + if test -z "$ofc_c_type" ; then + ofc_have_type=0 + fi]) + + # Get the alignment of the type + if test "$ofc_have_type" = "1"; then + OMPI_FORTRAN_GET_ALIGNMENT([$1], [ofc_type_alignment]) + + # Add it to the relevant list of types found + if test "$ofc_expected_size" != "-1"; then + ofc_letter=m4_translit(m4_bpatsubst($1, [^\(.\).+], [[\1]]), [a-z], [A-Z]) + ofc_str="OMPI_FORTRAN_${ofc_letter}KINDS=\"\$OMPI_FORTRAN_${ofc_letter}KINDS $ofc_type_size \"" + eval $ofc_str + fi + fi + + # Get the kind of the type. We do this by looking at the + # Fortran type's corresponding C type (which we figured + # out above). Then we look a the official BIND(C) KIND + # type for that type. The official BIND(C) types were + # taken from table 15.2 of the Fortran 2008 standard, + # published on 6 October as ISO/IEC 1539-1:2010 (this is + # not a free document). A copy of this table is in the + # file ompi/mpi/fortran/c_to_integer_kind_mapping.pdf. + + # NOTE: Some of the values of these C_* constants *may be + # negative* if the compiler doesn't support them. We have + # already verified that both the Fortran and the C types + # both exist. However, the compiler may still have -1 for + # the C_ constants if the C type is not the same + # format as its corresponding Fortran type (e.g., Absoft's + # "REAL*16" and "long double" are the same size, but not + # the same format -- so the compiler is allowed to define + # C_LONG_DOUBLE to -1). + + AC_MSG_CHECKING([for corresponding KIND value of $1]) + case "$ofc_c_type" in + char) ofc_type_kind=C_SIGNED_CHAR ;; + double) ofc_type_kind=C_DOUBLE ;; + float) ofc_type_kind=C_FLOAT ;; + int) ofc_type_kind=C_INT ;; + int16_t) ofc_type_kind=C_INT16_T ;; + int32_t) ofc_type_kind=C_INT32_T ;; + int64_t) ofc_type_kind=C_INT64_T ;; + int8_t) ofc_type_kind=C_INT8_T ;; + long) ofc_type_kind=C_LONG ;; + long*double) ofc_type_kind=C_LONG_DOUBLE ;; + long*long) ofc_type_kind=C_LONG_LONG ;; + short) ofc_type_kind=C_SHORT ;; + float*_Complex) ofc_type_kind=C_FLOAT_COMPLEX ;; + double*_Complex) ofc_type_kind=C_DOUBLE_COMPLEX ;; + long*double*_Complex) ofc_type_kind=C_LONG_DOUBLE_COMPLEX ;; + *) + # Skip types like "DOUBLE PRECISION" + ;; + esac + AS_IF([test "$ofc_type_kind" != ""], + [AC_MSG_RESULT([$ofc_type_kind])], + [AC_MSG_RESULT([])]) + + # See if the value is -1. If so, then just say we don't + # have a match. If the compiler doesn't support + # ISO_C_BINDING, then we'll just fall back to a default + # kind and hope for the best. :-\ + OMPI_FORTRAN_GET_KIND_VALUE([$ofc_type_kind], 4, [ofc_type_kind_value]) + AS_IF([test $ofc_type_kind_value -le 0], + [ofc_have_type=0 + AC_MSG_WARN([Compiler $1 and $ofc_c_type mismatch; MPI datatype unsupported])]) + fi + fi + + # We always need these defines -- even if we don't have a given + # type, there are some places in the code where we have to have + # *something*. Note that the bpatsubst's are the same as used + # above (see comment above), but we added a translit to make them + # uppercase. + + # If we got a pretty name, use that as the basis. If not, use the + # first part of the provided fortran type (e.g., + # "logical(selected_int_kind(2))" -> logical1") + + # Finally, note that it is necessary to use the Big Long Ugly m4 + # expressions in the AC_DEFINE_UNQUOTEDs. If you don't (e.g., put + # the result of the BLUm4E in a shell variable and use that in + # AC_DEFINE_UNQUOTED), autoheader won't put them in the + # AC_CONFIG_HEADER (or AM_CONFIG_HEADER, in our case). + AC_DEFINE_UNQUOTED([OMPI_HAVE_FORTRAN_]m4_translit(m4_bpatsubst(m4_bpatsubst([$1], [*], []), [[^a-zA-Z0-9_]], [_]), [a-z], [A-Z]), + [$ofc_have_type], + [Whether we have Fortran $1 or not]) + AC_DEFINE_UNQUOTED([OMPI_SIZEOF_FORTRAN_]m4_translit(m4_bpatsubst(m4_bpatsubst([$1], [*], []), [[^a-zA-Z0-9_]], [_]), [a-z], [A-Z]), + [$ofc_type_size], + [Size of Fortran $1]) + AC_DEFINE_UNQUOTED([OMPI_ALIGNMENT_FORTRAN_]m4_translit(m4_bpatsubst(m4_bpatsubst([$1], [*], []), [[^a-zA-Z0-9_]], [_]), [a-z], [A-Z]), + [$ofc_type_alignment], + [Alignment of Fortran $1]) + AC_DEFINE_UNQUOTED([OMPI_KIND_FORTRAN_]m4_translit(m4_bpatsubst(m4_bpatsubst([$1], [*], []), [[^a-zA-Z0-9_]], [_]), [a-z], [A-Z]), + [$ofc_type_kind], + [Fortrn KIND number for $1]) + if test "$3" != "" && test "$ofc_define_type" = "yes"; then + AC_DEFINE_UNQUOTED([ompi_fortran_]m4_translit(m4_bpatsubst(m4_bpatsubst([$1], [*], []), [[^a-zA-Z0-9_]], [_]), [A-Z], [a-z])[_t], + [$ofc_c_type], + [C type corresponding to Fortran $1]) + fi + + # Save some in shell variables for later use (e.g., need + # OMPI_SIZEOF_FORTRAN_INTEGER in OMPI_FORTRAN_GET_HANDLE_MAX) + [OMPI_FORTRAN_]m4_bpatsubst(m4_bpatsubst([$1], [*], []), [[^a-zA-Z0-9_]], [_])[_C_TYPE=$ofc_c_type] + [OMPI_KIND_FORTRAN_]m4_bpatsubst(m4_bpatsubst([$1], [*], []), [[^a-zA-Z0-9_]], [_])[=$ofc_type_kind] + [OMPI_HAVE_FORTRAN_]m4_bpatsubst(m4_bpatsubst([$1], [*], []), [[^a-zA-Z0-9_]], [_])[=$ofc_have_type] + [OMPI_SIZEOF_FORTRAN_]m4_bpatsubst(m4_bpatsubst([$1], [*], []), [[^a-zA-Z0-9_]], [_])[=$ofc_type_size] + [OMPI_ALIGNMENT_FORTRAN_]m4_bpatsubst(m4_bpatsubst([$1], [*], []), [[^a-zA-Z0-9_]], [_])[=$ofc_type_alignment] + + # Wow, this is sick. But it works! :-) + AC_SUBST([OMPI_HAVE_FORTRAN_]m4_bpatsubst(m4_bpatsubst([$1], [*], []), [[^a-zA-Z0-9_]], [_])) + AC_SUBST([OMPI_KIND_FORTRAN_]m4_translit(m4_bpatsubst(m4_bpatsubst([$1], [*], []), [[^a-zA-Z0-9_]], [_]), [a-z], [A-Z])) + AC_SUBST([OMPI_SIZEOF_FORTRAN_]m4_bpatsubst(m4_bpatsubst([$1], [*], []), [[^a-zA-Z0-9_]], [_])) + AC_SUBST([OMPI_SIZEOF_FORTRAN_]m4_bpatsubst(m4_bpatsubst([$1], [*], []), [[^a-zA-Z0-9_]], [_])) + AC_SUBST([OMPI_ALIGNMENT_FORTRAN_]m4_bpatsubst(m4_bpatsubst([$1], [*], []), [[^a-zA-Z0-9_]], [_])) + + # Clean up + OPAL_VAR_SCOPE_POP +])dnl diff --git a/config/ompi_fortran_check_abstract.m4 b/config/ompi_fortran_check_abstract.m4 new file mode 100644 index 00000000..422ce35b --- /dev/null +++ b/config/ompi_fortran_check_abstract.m4 @@ -0,0 +1,47 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# Check whether or not the Fortran compiler supports the "abstract" +# keyword in derived types or not. + +# OMPI_FORTRAN_CHECK_ABSTRACT([action if found], +# [action if not found]) +# ---------------------------------------------------- +AC_DEFUN([OMPI_FORTRAN_CHECK_ABSTRACT],[ + AS_VAR_PUSHDEF([abstract_var], [ompi_cv_fortran_abstract]) + + AC_CACHE_CHECK([if Fortran compiler supports ABSTRACT], abstract_var, + [AC_LANG_PUSH([Fortran]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[MODULE abstract_mod +ABSTRACT INTERFACE +SUBROUTINE binky +END SUBROUTINE +END INTERFACE +END MODULE abstract_mod]])], + [AS_VAR_SET(abstract_var, yes)], + [AS_VAR_SET(abstract_var, no)]) + touch conftest_foo.mod + rm -rf *.mod 2>/dev/null + AC_LANG_POP([Fortran]) + ]) + + AS_VAR_IF(abstract_var, [yes], [$1], [$2]) + AS_VAR_POPDEF([abstract_var])dnl +]) diff --git a/config/ompi_fortran_check_asynchronous.m4 b/config/ompi_fortran_check_asynchronous.m4 new file mode 100644 index 00000000..0cc3c84b --- /dev/null +++ b/config/ompi_fortran_check_asynchronous.m4 @@ -0,0 +1,48 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# Check whether or not the Fortran compiler supports the "asynchronous" +# keyword in derived types or not. + +# OMPI_FORTRAN_CHECK_ASYNCHRONOUS([action if found], +# [action if not found]) +# ---------------------------------------------------- +AC_DEFUN([OMPI_FORTRAN_CHECK_ASYNCHRONOUS],[ + AS_VAR_PUSHDEF([asynchronous_var], [ompi_cv_fortran_asynchronous]) + + AC_CACHE_CHECK([if Fortran compiler supports ASYNCHRONOUS], asynchronous_var, + [AC_LANG_PUSH([Fortran]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[MODULE asynch_mod +INTERFACE +SUBROUTINE binky(buf) + REAL, DIMENSION(*), ASYNCHRONOUS :: buf +END SUBROUTINE +END INTERFACE +END MODULE asynch_mod]])], + [AS_VAR_SET(asynchronous_var, yes)], + [AS_VAR_SET(asynchronous_var, no)]) + touch conftest_foo.mod + rm -rf *.mod 2>/dev/null + AC_LANG_POP([Fortran]) + ]) + + AS_VAR_IF(asynchronous_var, [yes], [$1], [$2]) + AS_VAR_POPDEF([asynchronous_var])dnl +]) diff --git a/config/ompi_fortran_check_bind_c.m4 b/config/ompi_fortran_check_bind_c.m4 new file mode 100644 index 00000000..bcdf6e31 --- /dev/null +++ b/config/ompi_fortran_check_bind_c.m4 @@ -0,0 +1,119 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# Check whether or not the Fortran compiler supports iso_c_binding or not +# +# OMPI_FORTRAN_CHECK_ISO_C_BINDING([action if found], [action if not found]) +# ---------------------------------------------------- +AC_DEFUN([OMPI_FORTRAN_CHECK_ISO_C_BINDING],[ + AS_VAR_PUSHDEF([iso_c_binding_var], [ompi_cv_fortran_have_iso_c_binding]) + + AC_CACHE_CHECK([if Fortran compiler supports ISO_C_BINDING], iso_c_binding_var, + [AC_LANG_PUSH([Fortran]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[program check_for_iso_c_binding + use, intrinsic :: iso_c_binding + type CType + integer(C_INT) :: i + end type +end program]])], + [AS_VAR_SET(iso_c_binding_var, yes)], + [AS_VAR_SET(iso_c_binding_var, no)]) + AC_LANG_POP([Fortran]) + ]) + + AS_VAR_IF(iso_c_binding_var, [yes], [$1], [$2]) + AS_VAR_POPDEF([iso_c_binding_var]) +]) + +# Check for SUBROUTINE ... BIND(C) +# OMPI_FORTRAN_CHECK_BIND_C_SUB([action if found], [action if not found]) +# ---------------------------------------------------- +AC_DEFUN([OMPI_FORTRAN_CHECK_BIND_C_SUB],[ + AS_VAR_PUSHDEF([bind_c_sub_var], [ompi_cv_fortran_have_bind_c_sub]) + + AC_CACHE_CHECK([if Fortran compiler supports SUBROUTINE BIND(C)], bind_c_sub_var, + [AC_LANG_PUSH([Fortran]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[program check_for_bind_c_sub + use, intrinsic :: iso_c_binding + interface + subroutine foo(i) bind(c) + integer :: i + end subroutine foo + end interface +end program]])], + [AS_VAR_SET(bind_c_sub_var, yes)], + [AS_VAR_SET(bind_c_sub_var, no)]) + AC_LANG_POP([Fortran]) + ]) + + AS_VAR_IF(bind_c_sub_var, [yes], [$1], [$2]) + AS_VAR_POPDEF([bind_c_sub_var]) +]) + +# Check for TYPE, BIND(C) :: derived_type +# OMPI_FORTRAN_CHECK_BIND_C_TYPE([action if found], [action if not found]) +# ---------------------------------------------------- +AC_DEFUN([OMPI_FORTRAN_CHECK_BIND_C_TYPE],[ + AS_VAR_PUSHDEF([bind_c_type_var], [ompi_cv_fortran_have_bind_c_type]) + + AC_CACHE_CHECK([if Fortran compiler supports TYPE, BIND(C)], bind_c_type_var, + [AC_LANG_PUSH([Fortran]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[module bindc_test + use, intrinsic :: iso_c_binding + type, bind(c) :: foo + integer :: value + end type foo +end module]])], + [AS_VAR_SET(bind_c_type_var, yes)], + [AS_VAR_SET(bind_c_type_var, no)]) + AC_LANG_POP([Fortran]) + ]) + + AS_VAR_IF(bind_c_type_var, [yes], [$1], [$2]) + AS_VAR_POPDEF([bind_c_type_var])dnl +]) + +# Check for TYPE(type), BIND(C, name="name") +# OMPI_FORTRAN_CHECK_BIND_C_TYPE_NAME([action if found], [action if not found]) +# ---------------------------------------------------- +AC_DEFUN([OMPI_FORTRAN_CHECK_BIND_C_TYPE_NAME],[ + AS_VAR_PUSHDEF([bind_c_type_name_var], [ompi_cv_fortran_have_bind_c_type_name]) + + # See comment in ompi_setup_mpi_fortran.m4: it is important that + # the bind(c) name in this text is longer than 32 characters. + + AC_CACHE_CHECK([if Fortran compiler supports TYPE(type), BIND(C, NAME="name")], bind_c_type_name_var, + [AC_LANG_PUSH([Fortran]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[module bindc_test + use, intrinsic :: iso_c_binding + type, bind(c) :: foo + integer :: value + end type foo + + type(foo), bind(c, name="really_long_name_longer_than_32_chars") :: bar +end module]])], + [AS_VAR_SET(bind_c_type_name_var, yes)], + [AS_VAR_SET(bind_c_type_name_var, no)]) + AC_LANG_POP([Fortran]) + ]) + + AS_VAR_IF(bind_c_type_name_var, [yes], [$1], [$2]) + AS_VAR_POPDEF([bind_c_type_name_var])dnl +]) diff --git a/config/ompi_fortran_check_c_funloc.m4 b/config/ompi_fortran_check_c_funloc.m4 new file mode 100644 index 00000000..06104fdb --- /dev/null +++ b/config/ompi_fortran_check_c_funloc.m4 @@ -0,0 +1,49 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2014 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl Copyright (c) 2014 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# Check whether or not the Fortran compiler implements +# TS 29113 subclause 8.1: +# Removed restrictions on ISO_C_BINDING module procedures. + +# OMPI_FORTRAN_CHECK_C_FUNLOC([action if found], +# [action if not found]) +# ---------------------------------------------------- +AC_DEFUN([OMPI_FORTRAN_CHECK_C_FUNLOC],[ + AS_VAR_PUSHDEF([c_funloc], [ompi_cv_fortran_c_funloc]) + + AC_CACHE_CHECK([if Fortran compiler supports C_FUNLOC/TS 29113], c_funloc, + [AC_LANG_PUSH([Fortran]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[program main +abstract interface + subroutine MPI_Comm_errhandler_function(comm, error_code) + implicit none + integer :: comm, error_code + end subroutine +end interface + +contains + +subroutine mysub(fn) + use, intrinsic :: iso_c_binding, only : c_funloc, c_funptr + procedure(MPI_Comm_errhandler_function) :: comm_errhandler_fn + type(c_funptr) :: comm_errhandler_fn_c + comm_errhandler_fn_c = c_funloc(comm_errhandler_fn) +end subroutine mysub +end program]])], + [AS_VAR_SET(c_funloc, yes)], + [AS_VAR_SET(c_funloc, no)]) + AC_LANG_POP([Fortran]) + ]) + + AS_VAR_IF(c_funloc, [yes], [$1], [$2]) + AS_VAR_POPDEF([c_funloc])dnl +]) diff --git a/config/ompi_fortran_check_f08_assumed_rank.m4 b/config/ompi_fortran_check_f08_assumed_rank.m4 new file mode 100644 index 00000000..023569a2 --- /dev/null +++ b/config/ompi_fortran_check_f08_assumed_rank.m4 @@ -0,0 +1,61 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2007 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. +dnl Copyright (c) 2009-2012 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ + +# Does this compiler support the Fortran 2008 assumed rank syntax? + +# OMPI_FORTRAN_CHECK_F08_ASSUMED_RANK([action if found], +# [action if not found]) +# ---------------------------------------------------------------- +AC_DEFUN([OMPI_FORTRAN_CHECK_F08_ASSUMED_RANK], [ + AS_VAR_PUSHDEF([fortran_f08_assumed_rank], + [ompi_cv_fortran_f08_assumed_rank]) + + AC_CACHE_CHECK([Fortran compiler F08 assumed rank syntax], + fortran_f08_assumed_rank, + [_OMPI_FORTRAN_CHECK_F08_ASSUMED_RANK]) + + AS_VAR_IF(fortran_f08_assumed_rank, [yes], [$1], [$2]) +]) + +################################### + +AC_DEFUN([_OMPI_FORTRAN_CHECK_F08_ASSUMED_RANK], [ + OPAL_VAR_SCOPE_PUSH([happy]) + + # If we were called here, it means that the value was not cached, + # so we need to check several different things. Since CACHE_CHECK + # puts up a MSG_CHECKING, we need to terminate it with a bogus + # answer before doing the individual checks. + AC_MSG_RESULT([not cached; checking]) + + # Check for the F08 type(*),dimension(..) syntax + OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB([!], [TYPE(*), DIMENSION(..)], + [TYPE(*), DIMENSION(..)], + [happy=yes], [happy=no]) + + AS_VAR_SET(fortran_f08_assumed_rank, [$happy]); + + # Now put the orignal CACHE_CHECK MSG_CHECKING back so that it can + # output the MSG_RESULT. + AC_MSG_CHECKING([Fortran compiler F08 assumed rank syntax]) + OPAL_VAR_SCOPE_POP +]) diff --git a/config/ompi_fortran_check_ignore_tkr.m4 b/config/ompi_fortran_check_ignore_tkr.m4 new file mode 100644 index 00000000..ee69e49e --- /dev/null +++ b/config/ompi_fortran_check_ignore_tkr.m4 @@ -0,0 +1,205 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2007 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. +dnl Copyright (c) 2009-2015 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ + +# Does this compiler support (void*)-like functionality for MPI choice +# buffers? If so, which flavor? +AC_DEFUN([OMPI_FORTRAN_CHECK_IGNORE_TKR], [ + OPAL_VAR_SCOPE_PUSH([result happy type predecl]) + + OMPI_FORTRAN_IGNORE_TKR_PREDECL= + OMPI_FORTRAN_IGNORE_TKR_TYPE= + + AS_VAR_PUSHDEF([fortran_ignore_tkr_data], + [ompi_cv_fortran_ignore_tkr_data]) + + # Note that we can only cache 1 value at a time, but this test + # needs to check for 2 things: the ignore TKR predecl and the + # type. So we encode them into a string of the form + # <1|0>::. Ugh. + AC_CACHE_CHECK([Fortran compiler ignore TKR syntax], + fortran_ignore_tkr_data, + [_OMPI_FORTRAN_CHECK_IGNORE_TKR]) + AS_VAR_COPY([result], [fortran_ignore_tkr_data]) + + # Parse the result + happy=`echo $result | cut -d: -f1` + type=`echo $result | cut -d: -f2` + predecl=`echo $result | cut -d: -f3-` + + AS_IF([test $happy -eq 1], + [OMPI_FORTRAN_IGNORE_TKR_PREDECL=$predecl + OMPI_FORTRAN_IGNORE_TKR_TYPE=$type + $1], + [$2]) + + AS_VAR_POPDEF([fortran_ignore_tkr_data]) + OPAL_VAR_SCOPE_POP +]) + +################ + +AC_DEFUN([_OMPI_FORTRAN_CHECK_IGNORE_TKR], [ + OPAL_VAR_SCOPE_PUSH([happy ompi_fortran_ignore_tkr_predecl ompi_fortran_ignore_tkr_type]) + + # If we were called here, it means that the value was not cached, + # so we need to check several different things. Since CACHE_CHECK + # puts up a MSG_CHECKING, we need to terminate it with a bogus + # answer before doing the individual checks. + AC_MSG_RESULT([not cached; checking variants]) + + # Default values + ompi_fortran_ignore_tkr_predecl=! + ompi_fortran_ignore_tkr_type=real + + # Vendor-neutral, TYPE(*) syntax + OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB( + [!], [type(*)], + [TYPE(*), DIMENSION(*)], + [happy=1], [happy=0]) + + # GCC compilers + AS_IF([test $happy -eq 0], + [OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB( + [!GCC\$ ATTRIBUTES NO_ARG_CHECK ::], [type(*), dimension(*)], + [!GCC\$ ATTRIBUTES NO_ARG_CHECK], + [happy=1], [happy=0])]) + # Intel compilers + AS_IF([test $happy -eq 0], + [OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB( + [!DEC\$ ATTRIBUTES NO_ARG_CHECK ::], [real, dimension(*)], + [!DEC\$ ATTRIBUTES NO_ARG_CHECK], + [happy=1], [happy=0])]) + # Solaris Studio compilers + # Note that due to a compiler bug, we have been advised by Oracle to + # use the "character(*)" type + AS_IF([test $happy -eq 0], + [OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB( + [!\$PRAGMA IGNORE_TKR], [character(*)], + [!\$PRAGMA IGNORE_TKR], + [happy=1], [happy=0])]) + # Cray compilers + AS_IF([test $happy -eq 0], + [OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB( + [!DIR\$ IGNORE_TKR], [real, dimension(*)], + [!DIR\$ IGNORE_TKR], + [happy=1], [happy=0])]) + # IBM compilers + AS_IF([test $happy -eq 0], + [OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB( + [!IBM* IGNORE_TKR], [real, dimension(*)], + [!IBM* IGNORE_TKR], + [happy=1], [happy=0])]) + + AS_VAR_SET(fortran_ignore_tkr_data, + [${happy}:${ompi_fortran_ignore_tkr_type}:${ompi_fortran_ignore_tkr_predecl}]) + + # Now put the orignal CACHE_CHECK MSG_CHECKING back so that it can + # output the MSG_RESULT. + AC_MSG_CHECKING([Fortran compiler ignore TKR syntax]) + OPAL_VAR_SCOPE_POP +])dnl + +################################### + +# Generic check to see if Fortran compiler supports (void*)-like +# functionality +# $1: pre-decl qualifier line -- likely a compiler directive +# $2: parameter type +# $3: message for AC-MSG-CHECKING +# $4: action to take if the test passes +# $5: action to take if the test fails +AC_DEFUN([OMPI_FORTRAN_CHECK_IGNORE_TKR_SUB], [ + OPAL_VAR_SCOPE_PUSH(msg) + AC_LANG_PUSH([Fortran]) + AC_MSG_CHECKING([for Fortran compiler support of $3]) + AC_COMPILE_IFELSE(AC_LANG_PROGRAM([],[[! +! Autoconf puts "program main" at the top + + interface + subroutine force_assumed_shape(a, count) + integer :: count + complex, dimension(:,:) :: a + end subroutine force_assumed_shape + end interface + + interface + subroutine foo(buffer, count) + $1 buffer + $2, intent(in) :: buffer + integer, intent(in) :: count + end subroutine foo + end interface + +! Simple interface with an un-typed first argument (e.g., a choice buffer) + integer :: count + real :: buffer1(3) + character :: buffer2 + complex :: buffer3(4,4) + complex, pointer, dimension(:,:) :: ptr + target :: buffer3 + integer :: buffer4 + ptr => buffer3 + +! Set some known values (somewhat irrelevant for this test, but just be +! sure that the values are initialized) + a = 17 + buffer1(1) = 4.5 + buffer1(2) = 6.7 + buffer1(3) = 8.9 + buffer2 = 'a' + +! Call with one type for the first argument + call foo(buffer1, count) +! Call with a different type for the first argument + call foo(buffer2, count) +! Force us through an assumed shape + call force_assumed_shape(buffer3, count) +! Force a pointer call through an assumed shape (!) + ptr => buffer3 +! Also try with a simple scalar integer +! (Intel 2016 compiler suite only partially supports GCC pragmas; +! they work with all the above buffer types, but fail with a +! simple scalar integer) + call foo(buffer4, count) + + end program + + subroutine force_assumed_shape(a, count) + integer :: count + real, dimension(:,:) :: a + call foo(a, count) + end subroutine force_assumed_shape + +! Autoconf puts "end" after the last line + subroutine bogus +]]), + [msg=yes + ompi_fortran_ignore_tkr_predecl="$1" + ompi_fortran_ignore_tkr_type="$2" + $4], + [msg=no + $5]) + AC_MSG_RESULT($msg) + AC_LANG_POP([Fortran]) + OPAL_VAR_SCOPE_POP +]) + diff --git a/config/ompi_fortran_check_interface.m4 b/config/ompi_fortran_check_interface.m4 new file mode 100644 index 00000000..bc18492b --- /dev/null +++ b/config/ompi_fortran_check_interface.m4 @@ -0,0 +1,51 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# Check whether or not the Fortran compiler supports the "interface" +# keyword or not. + +# OMPI_FORTRAN_CHECK_INTERFACE([action if found], +# [action if not found]) +# ---------------------------------------------------- +AC_DEFUN([OMPI_FORTRAN_CHECK_INTERFACE],[ + AS_VAR_PUSHDEF([interface_var], [ompi_cv_fortran_interface]) + + AC_CACHE_CHECK([if Fortran compiler supports INTERFACE], interface_var, + [AC_LANG_PUSH([Fortran]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[MODULE my_module +INTERFACE MPI_Foo +SUBROUTINE inky(a) + DOUBLE PRECISION A +END SUBROUTINE inky +SUBROUTINE blinky(a) + INTEGER A +END SUBROUTINE blinky +END INTERFACE MPI_Foo +END MODULE my_module]])], + [AS_VAR_SET(interface_var, yes)], + [AS_VAR_SET(interface_var, no)]) + touch conftest_foo.mod + rm -rf *.mod 2>/dev/null + AC_LANG_POP([Fortran]) + ]) + + AS_VAR_IF(interface_var, [yes], [$1], [$2]) + AS_VAR_POPDEF([interface_var])dnl +]) diff --git a/config/ompi_fortran_check_iso_fortran_env.m4 b/config/ompi_fortran_check_iso_fortran_env.m4 new file mode 100644 index 00000000..4b967058 --- /dev/null +++ b/config/ompi_fortran_check_iso_fortran_env.m4 @@ -0,0 +1,42 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# Check whether or not the Fortran compiler supports iso_fortran_env or not +# +# OMPI_FORTRAN_CHECK_ISO_FORTRAN_ENV([action if found], [action if not found]) +# ---------------------------------------------------- +AC_DEFUN([OMPI_FORTRAN_CHECK_ISO_FORTRAN_ENV],[ + AS_VAR_PUSHDEF([iso_fortran_env_var], [ompi_cv_fortran_have_iso_fortran_env]) + + AC_CACHE_CHECK([if Fortran compiler supports ISO_FORTRAN_ENV], iso_fortran_env_var, + [AC_LANG_PUSH([Fortran]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[program check_for_iso_fortran_env + use, intrinsic :: iso_fortran_env + real(real32) :: var + var = 12.34 +end program]])], + [AS_VAR_SET(iso_fortran_env_var, yes)], + [AS_VAR_SET(iso_fortran_env_var, no)]) + AC_LANG_POP([Fortran]) + ]) + + AS_VAR_IF(iso_fortran_env_var, [yes], [$1], [$2]) + AS_VAR_POPDEF([iso_fortran_env_var]) +]) diff --git a/config/ompi_fortran_check_logical_array.m4 b/config/ompi_fortran_check_logical_array.m4 new file mode 100644 index 00000000..7a6a6291 --- /dev/null +++ b/config/ompi_fortran_check_logical_array.m4 @@ -0,0 +1,122 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University. +dnl All rights reserved. +dnl Copyright (c) 2004-2005 The Trustees of the University of Tennessee. +dnl All rights reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +AC_DEFUN([OMPI_FORTRAN_CHECK_LOGICAL_ARRAY],[ + AS_VAR_PUSHDEF([logical_array_var], + [ompi_cv_fortran_logical_array_correct]) + + AC_CACHE_CHECK([for correct handling of Fortran logical arrays], + logical_array_var, + [if test "$1" = "none" || \ + test $OMPI_TRY_FORTRAN_BINDINGS -eq $OMPI_FORTRAN_NO_BINDINGS || \ + test $ompi_fortran_happy -eq 0; then + value=skipped + else + # Fortran module + cat > conftestf.f < conftest.c < +#include +#include "confdefs.h" + +#ifdef __cplusplus + extern "C" { +#endif +void ompi_check_f(ompi_fortran_logical_t * logical) +{ + int result = 0; + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + + if (logical[[0]] == 0 && + logical[[1]] == $ompi_cv_fortran_true_value) + result = 1; + fprintf(f, "%d\n", result); +} + +void ompi_check(ompi_fortran_logical_t * logical) +{ ompi_check_f(logical); } + +void ompi_check_(ompi_fortran_logical_t * logical) +{ ompi_check_f(logical); } + +void ompi_check__(ompi_fortran_logical_t * logical) +{ ompi_check_f(logical); } + +void OMPI_CHECK(ompi_fortran_logical_t * logical) +{ ompi_check_f(logical); } + +#ifdef __cplusplus +} +#endif +EOF + + # Try the compilation and run. Can't use AC_TRY_RUN + # because it's two module files. + OPAL_LOG_COMMAND([$CC $CFLAGS -I. -c conftest.c], + [OPAL_LOG_COMMAND([$FC $FCFLAGS conftestf.f conftest.o -o conftest $LDFLAGS $LIBS], + [happy=1], [happy=0])], + [happy=0]) + if test "$happy" = "0" ; then + AC_MSG_ERROR([Error determining if arrays of logical values work properly.]) + fi + + AS_IF([test "$cross_compiling" = "yes"], + [ # assume we're ok + value=yes], + [OPAL_LOG_COMMAND([./conftest], + [if test "`cat conftestval`" = "1" ; then + value=yes + else + value=no + fi], + [value=no])]) + fi + AS_VAR_SET(logical_array_var, [$value]) + ]) + + AS_VAR_COPY([ompi_fortran_logical_array_correct], [logical_array_var]) + if test "$ompi_fortran_logical_array_correct" = "no" ; then + AC_MSG_ERROR([Error determining if arrays of logical values work properly.]) + fi + AS_VAR_POPDEF([logical_array_var]) + + unset happy ompi_check_logical_fn + rm -rf conftest* +])dnl diff --git a/config/ompi_fortran_check_max_array_rank.m4 b/config/ompi_fortran_check_max_array_rank.m4 new file mode 100644 index 00000000..095b5b49 --- /dev/null +++ b/config/ompi_fortran_check_max_array_rank.m4 @@ -0,0 +1,69 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# Check the max array rank that the Fortran compiler supports. +# +# OMPI_FORTRAN_CHECK_MAX_ARRAY_RANK +# +# Sets $OMPI_FORTRAN_MAX_ARRAY_RANK, AC_SUBSTs it, and AC_DEFINEs +# OMPI_FORTRAN_MAX_ARRAY_RANK. +# ---------------------------------------------------- +AC_DEFUN([OMPI_FORTRAN_CHECK_MAX_ARRAY_RANK],[ + AS_VAR_PUSHDEF([max_array_rank_var], [ompi_cv_fortran_max_array_rank]) + + OPAL_VAR_SCOPE_PUSH([f_max_rank f_fail f_rank f_i f_dim]) + AC_CACHE_CHECK([max supported Fortran array rank], max_array_rank_var, + [AC_LANG_PUSH([Fortran]) + f_max_rank=0 + f_fail=0 + + # Realistically, this will only be 7 or 15. But what the heck + # -- try them all. Note that we don't test above 15, because + # that's the max value from the F2008 spec (and some compilers + # will let you go above rank=16, e.g., Intel ifort). + for f_rank in 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do + if test $f_fail -eq 0; then + f_i=1 + f_dim=2 + while test `expr $f_i + 1` -le $f_rank; do + f_dim="$f_dim,2" + f_i=`expr $f_i + 1` + done + OPAL_LOG_MSG([testing Fortran dimension $f_rank / $f_dim]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[PROGRAM test_program + INTEGER, DIMENSION($f_dim) :: var + var($f_dim) = 3 +END PROGRAM test_program]])], + [f_max_rank=$f_rank], [f_fail=1]) + fi + done + AS_VAR_SET(max_array_rank_var, $f_max_rank) + AC_LANG_POP([Fortran]) + ]) + + AS_VAR_COPY([OMPI_FORTRAN_MAX_ARRAY_RANK], [max_array_rank_var]) + AC_SUBST(OMPI_FORTRAN_MAX_ARRAY_RANK) + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_MAX_ARRAY_RANK], + [$OMPI_FORTRAN_MAX_ARRAY_RANK], + [Max dimension rank of Fortran arrays]) + + OPAL_VAR_SCOPE_POP + AS_VAR_POPDEF([max_array_rank_var])dnl +]) diff --git a/config/ompi_fortran_check_optional_args.m4 b/config/ompi_fortran_check_optional_args.m4 new file mode 100644 index 00000000..06bd55e2 --- /dev/null +++ b/config/ompi_fortran_check_optional_args.m4 @@ -0,0 +1,54 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# Check whether or not the Fortran compiler supports the "optional" +# keyword or not. + +# OMPI_FORTRAN_CHECK_OPTIONAL_ARGS([action if found], +# [action if not found]) +# ---------------------------------------------------- +AC_DEFUN([OMPI_FORTRAN_CHECK_OPTIONAL_ARGS],[ + AS_VAR_PUSHDEF([optional_var], [ompi_cv_fortran_optional]) + + AC_CACHE_CHECK([if Fortran compiler supports optional arguments], optional_var, + [AC_LANG_PUSH([Fortran]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[program check_for_optional + use, intrinsic :: iso_c_binding + + interface + subroutine check_op(i, ierror) + integer, intent(in), value :: i + integer, intent(out), optional :: ierror + end subroutine check_op + end interface + + integer :: ierror + + call check_op(0) + call check_op(1, ierror) +end program]])], + [AS_VAR_SET(optional_var, yes)], + [AS_VAR_SET(optional_var, no)]) + AC_LANG_POP([Fortran]) + ]) + + AS_VAR_IF(optional_var, [yes], [$1], [$2]) + AS_VAR_POPDEF([optional_var])dnl +]) diff --git a/config/ompi_fortran_check_private.m4 b/config/ompi_fortran_check_private.m4 new file mode 100644 index 00000000..b9789b1d --- /dev/null +++ b/config/ompi_fortran_check_private.m4 @@ -0,0 +1,47 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# Check whether or not the Fortran compiler supports the "private" +# keyword in derived types or not. + +# OMPI_FORTRAN_CHECK_PRIVATE([action if found], +# [action if not found]) +# ---------------------------------------------------- +AC_DEFUN([OMPI_FORTRAN_CHECK_PRIVATE],[ + AS_VAR_PUSHDEF([private_var], [ompi_cv_fortran_private]) + + AC_CACHE_CHECK([if Fortran compiler supports PRIVATE], private_var, + [AC_LANG_PUSH([Fortran]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[module test_for_private + type :: derived_with_private + integer :: this_is_a_public_integer + integer, private :: this_is_a_private_integer + end type derived_with_private +end module test_for_private]])], + [AS_VAR_SET(private_var, yes)], + [AS_VAR_SET(private_var, no)]) + touch conftest_foo.mod + rm -rf *.mod 2>/dev/null + AC_LANG_POP([Fortran]) + ]) + + AS_VAR_IF(private_var, [yes], [$1], [$2]) + AS_VAR_POPDEF([private_var])dnl +]) diff --git a/config/ompi_fortran_check_procedure.m4 b/config/ompi_fortran_check_procedure.m4 new file mode 100644 index 00000000..5ab68714 --- /dev/null +++ b/config/ompi_fortran_check_procedure.m4 @@ -0,0 +1,56 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# Check whether or not the Fortran compiler supports the "procedure" +# keyword in derived types or not. + +# OMPI_FORTRAN_CHECK_PROCEDURE([action if found], +# [action if not found]) +# ---------------------------------------------------- +AC_DEFUN([OMPI_FORTRAN_CHECK_PROCEDURE],[ + AS_VAR_PUSHDEF([procedure_var], [ompi_cv_fortran_procedure]) + + AC_CACHE_CHECK([if Fortran compiler supports PROCEDURE], procedure_var, + [AC_LANG_PUSH([Fortran]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[MODULE proc_mod +INTERFACE +SUBROUTINE MPI_User_function +END SUBROUTINE +END INTERFACE +END MODULE proc_mod + +PROGRAM test_proc +INTERFACE +SUBROUTINE binky(user_fn) + USE proc_mod + PROCEDURE(MPI_User_function) :: user_fn +END SUBROUTINE +END INTERFACE +END PROGRAM]])], + [AS_VAR_SET(procedure_var, yes)], + [AS_VAR_SET(procedure_var, no)]) + touch conftest_foo.mod + rm -rf *.mod 2>/dev/null + AC_LANG_POP([Fortran]) + ]) + + AS_VAR_IF(procedure_var, [yes], [$1], [$2]) + AS_VAR_POPDEF([procedure_var])dnl +]) diff --git a/config/ompi_fortran_check_protected.m4 b/config/ompi_fortran_check_protected.m4 new file mode 100644 index 00000000..effdcd90 --- /dev/null +++ b/config/ompi_fortran_check_protected.m4 @@ -0,0 +1,44 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# Check whether or not the Fortran compiler supports the "protected" +# keyword in derived types or not. + +# OMPI_FORTRAN_CHECK_PROTECTED([action if found], +# [action if not found]) +# ---------------------------------------------------- +AC_DEFUN([OMPI_FORTRAN_CHECK_PROTECTED],[ + AS_VAR_PUSHDEF([protected_var], [ompi_cv_fortran_protected]) + + AC_CACHE_CHECK([if Fortran compiler supports PROTECTED], protected_var, + [AC_LANG_PUSH([Fortran]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[module test_for_protected + integer, protected :: bogus +end module test_for_protected]])], + [AS_VAR_SET(protected_var, yes)], + [AS_VAR_SET(protected_var, no)]) + touch conftest_foo.mod + rm -rf *.mod 2>/dev/null + AC_LANG_POP([Fortran]) + ]) + + AS_VAR_IF(protected_var, [yes], [$1], [$2]) + AS_VAR_POPDEF([protected_var])dnl +]) diff --git a/config/ompi_fortran_check_real16_c_equiv.m4 b/config/ompi_fortran_check_real16_c_equiv.m4 new file mode 100644 index 00000000..12e427d7 --- /dev/null +++ b/config/ompi_fortran_check_real16_c_equiv.m4 @@ -0,0 +1,156 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2008-2016 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OMPI_FORTRAN_CHECK_REAL16_C_EQUIV +# ---------------------------------------------------- +AC_DEFUN([OMPI_FORTRAN_CHECK_REAL16_C_EQUIV],[ + unset happy + OPAL_VAR_SCOPE_PUSH([happy define_value msg CFLAGS_save]) + AS_VAR_PUSHDEF([real16_matches_c_var], [ompi_cv_real16_c_equiv]) + + # We have to do this as a cache check for cross-compilation platforms + AC_CACHE_CHECK([for C type matching bit representation of REAL*16], + real16_matches_c_var, + [AS_IF([test "$OMPI_TRY_FORTRAN_BINDINGS" -gt "$OMPI_FORTRAN_NO_BINDINGS" && \ + test "$OMPI_HAVE_FORTRAN_REAL16" = "1"], + [ + # AC_CACHE_CHECK automatically does its own AC_MSG_CHECKING, so close it out + AC_MSG_RESULT([pending]) + + # First check the type that we found was the same length in C + AC_MSG_CHECKING([if $OMPI_FORTRAN_REAL16_C_TYPE == REAL*16]) + OMPI_FORTRAN_CHECK_REAL16_EQUIV_TYPE([$OMPI_FORTRAN_REAL16_C_TYPE], [L]) + # If that didn't work, see if we have a compiler-specific + # type that might work + AS_IF([test "$happy" = "no"], + [AC_MSG_RESULT([$happy]) + # Intel compiler has a special type that should work + AS_IF([test "$opal_cv_c_compiler_vendor" = "intel"], + [AC_MSG_CHECKING([if intel compiler _Quad == REAL*16]) + CFLAGS_save="$CFLAGS" + CFLAGS="$CFLAGS -Qoption,cpp,--extended_float_types" + OPAL_FLAGS_UNIQ([CFLAGS]) + OMPI_FORTRAN_CHECK_REAL16_EQUIV_TYPE([_Quad], [q]) + AS_IF([test "$happy" = "yes"], + [OMPI_FORTRAN_REAL16_C_TYPE="_Quad" + AC_MSG_RESULT([works!])], + [CFLAGS="$CFLAGS_save" + AC_MSG_RESULT([does not work])]) + ]) + AS_IF([test "$opal_cv_c_compiler_vendor" = "gnu" && test "$ac_cv_type___float128" = "yes"], + [AC_MSG_CHECKING([if gnu compiler __float128 == REAL*16]) + OPAL_FLAGS_UNIQ([CFLAGS]) + OMPI_FORTRAN_CHECK_REAL16_EQUIV_TYPE([__float128], [q]) + AS_IF([test "$happy" = "yes"], + [OMPI_FORTRAN_REAL16_C_TYPE="__float128" + AC_MSG_RESULT([works!])], + [AC_MSG_RESULT([does not work])]) + ]) + # We have to [re-]print a new message here, because + # AC_CACHE_CHECK will automatically AC_MSG_RESULT + AC_MSG_CHECKING([for C type matching bit representation of REAL*16]) + ]) + AS_VAR_SET(real16_matches_c_var, [$happy]) + ],[ + # No fortran bindings or no REAL*16 + AS_IF([test "$OMPI_TRY_FORTRAN_BINDINGS" = "$OMPI_FORTRAN_NO_BINDINGS"], + [msg="skipped (no Fortran MPI bindings)"], + [msg="skipped (no REAL*16)"]) + AS_VAR_SET(real16_matches_c_var, [$msg]) + ]) + ]) + + AS_VAR_COPY([ompi_real16_matches_c], [real16_matches_c_var]) + AS_VAR_POPDEF([real16_matches_c_var]) + + AS_IF([test "$ompi_real16_matches_c" = "yes"], + [define_value=1], + [define_value=0 + AC_MSG_WARN([MPI_REAL16 and MPI_COMPLEX32 support have been disabled])]) + AC_DEFINE_UNQUOTED([OMPI_REAL16_MATCHES_C], [$define_value], + [Whether Fortran REAL*16 matches the bit format of the equivalent C type]) + OPAL_VAR_SCOPE_POP +]) + + +# OMPI_FORTRAN_CHECK_REAL16_C_EQUIV_TYPE(type, suffix) +# ---------------------------------------------------- +AC_DEFUN([OMPI_FORTRAN_CHECK_REAL16_EQUIV_TYPE],[ + # C module + cat > conftest_c.c < +#include + +#ifdef __cplusplus +extern "C" { +#endif + +void c_backend($1 *a) { + $1 foo = 11; + FILE *fp = fopen("conftestval", "w"); + if (NULL == fp) exit(1); + foo = 1 / foo; + fprintf(fp, "%s\n", (foo == *a) ? "yes" : "no"); + fclose(fp); +} + +void C($1 *a) { c_backend(a); } +void c($1 *a) { c_backend(a); } +void c_($1 *a) { c_backend(a); } +/* JMS I'm pretty sure this one will never happen...? */ +void c__($1 *a) { c_backend(a); } +#ifdef __cplusplus +} +#endif +EOF + + # Fortran module + cat > conftest_f.f < aaa.f90 << EOF +MODULE aaa +INTEGER :: CMON(1) +COMMON/CMMON/CMON +INTEGER :: global_aaa +END MODULE aaa +EOF + cat > bbb.f90 << EOF +MODULE bbb +integer, bind(C, name="cmmon_") :: CMON +INTEGER :: global_bbb +END MODULE bbb +EOF + OPAL_LOG_COMMAND([$FC $FCFLAGS -c aaa.f90], + [OPAL_LOG_COMMAND([$FC $FCFLAGS -c bbb.f90], + [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[PROGRAM test +USE aaa, ONLY : global_aaa +USE bbb, ONLY : global_bbb +implicit none +END PROGRAM]])], + [AS_VAR_SET(use_only_var, yes)], + [AS_VAR_SET(use_only_var, no)])], + [AS_VAR_SET(use_only_var, no)])], + [AS_VAR_SET(use_only_var, no)]) + rm -rf aaa.f90 aaa.o bbb.f90 bbb.o *.mod 2>/dev/null + AC_LANG_POP([Fortran]) + ]) + + AS_VAR_IF(use_only_var, [yes], [$1], [$2]) + FCFLAGS=$FCFLAGS_save + OPAL_VAR_SCOPE_POP + AS_VAR_POPDEF([use_only_var])dnl +]) diff --git a/config/ompi_fortran_find_ext_symbol_convention.m4 b/config/ompi_fortran_find_ext_symbol_convention.m4 new file mode 100644 index 00000000..c073f844 --- /dev/null +++ b/config/ompi_fortran_find_ext_symbol_convention.m4 @@ -0,0 +1,143 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2009 Oak Ridge National Labs. All rights reserved. +dnl Copyright (c) 2009-2012 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + + +AC_DEFUN([OMPI_FORTRAN_FIND_EXT_SYMBOL_CONVENTION], [ + AC_REQUIRE([AC_PROG_NM]) + AC_REQUIRE([AC_PROG_GREP]) + OPAL_VAR_SCOPE_PUSH([FCFLAGS_NEW LDFLAGS_NEW FLAG]) + + # invalidate cache if result came from a run where FORTRAN was disabled + if test "$ompi_cv_fortran_external_symbol" = "skipped" ; then + unset ompi_cv_fortran_external_symbol + fi + + AC_CACHE_CHECK([$FORTRAN external symbol convention], + [ompi_cv_fortran_external_symbol], + [if test "$FC" = "none" || \ + test "$OMPI_TRY_FORTRAN_BINDINGS" = "$OMPI_FORTRAN_NO_BINDINGS"; then + ompi_cv_fortran_external_symbol="skipped" + else + cat >conftest.f </dev/null 2>&1 ; then + ompi_cv_fortran_external_symbol="double underscore" + elif $NM conftest.o | $GREP foo_bar_ >/dev/null 2>&1 ; then + ompi_cv_fortran_external_symbol="single underscore" + elif $NM conftest.o | $GREP FOO_bar >/dev/null 2>&1 ; then + ompi_cv_fortran_external_symbol="mixed case" + elif $NM conftest.o | $GREP foo_bar >/dev/null 2>&1 ; then + ompi_cv_fortran_external_symbol="no underscore" + elif $NM conftest.o | $GREP FOO_BAR >/dev/null 2>&1 ; then + ompi_cv_fortran_external_symbol="upper case" + else + $NM conftest.o >conftest.out 2>&1 + OPAL_LOG_MSG([Could not determine Fortran naming convention. Output from $NM:]) + OPAL_LOG_FILE([conftest.out]) + happy=0 + fi], + [AC_MSG_ERROR([Fortran compiler did not produce object file])]) + fi]) + + # These values were all already set to 0 back up in + # ompi_setup_mpi_fortran.m4, because this whole macro is + # conditionally executed (i.e., it is not executed in the + # --disable-mpi-fortran case). + if test "$ompi_cv_fortran_external_symbol" = "double underscore" ; then + ompi_fortran_double_underscore=1 + elif test "$ompi_cv_fortran_external_symbol" = "single underscore" ; then + ompi_fortran_single_underscore=1 + elif test "$ompi_cv_fortran_external_symbol" = "mixed case" ; then + ompi_fortran_caps=1 + elif test "$ompi_cv_fortran_external_symbol" = "no underscore" ; then + ompi_fortran_plain=1 + elif test "$ompi_cv_fortran_external_symbol" = "upper case" ; then + ompi_fortran_caps=1 + elif test "$ompi_cv_fortran_external_symbol" != "skipped" ; then + AC_MSG_ERROR([unknown naming convention: $ompi_cv_fortran_external_symbol]) + fi + + OPAL_VAR_SCOPE_POP + rm -rf conftest.* +])dnl + + +AC_DEFUN([OMPI_FORTRAN_MAKE_C_FUNCTION], [ + if test "$ompi_cv_fortran_external_symbol" = "double underscore" ; then + # so the general rule is that if there is an _ in the function + # name, then there are two trailing underscores. Otherwise, + # there is only one trailing underscore. Any idea how to do + # that with m4_translit? + if echo $2 | $GREP _ >/dev/null 2>&1 ; then + $1[=]m4_translit([$2], [A-Z], [a-z])[__] + else + $1[=]m4_translit([$2], [A-Z], [a-z])[_] + fi + elif test "$ompi_cv_fortran_external_symbol" = "single underscore" ; then + $1[=]m4_translit([$2], [A-Z], [a-z])[_] + elif test "$ompi_cv_fortran_external_symbol" = "mixed case" ; then + $1[=]$2 + elif test "$ompi_cv_fortran_external_symbol" = "no underscore" ; then + $1[=]m4_translit([$2], [A-Z], [a-z]) + elif test "$ompi_cv_fortran_external_symbol" = "upper case" ; then + $1[=]m4_translit([$2], [a-z], [A-Z]) + else + AC_MSG_ERROR([unknown naming convention: $ompi_cv_fortran_external_symbol]) + fi +]) diff --git a/config/ompi_fortran_find_module_include_flag.m4 b/config/ompi_fortran_find_module_include_flag.m4 new file mode 100644 index 00000000..5b6e0deb --- /dev/null +++ b/config/ompi_fortran_find_module_include_flag.m4 @@ -0,0 +1,83 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2010-2012 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# +# Sets and AC_SUBST's OMPI_FC_MODULE_FLAG. +# +# OMPI_FORTRAN_FIND_MODULE_INCLUDE_FLAG([action if found], [action if not found] +AC_DEFUN([OMPI_FORTRAN_FIND_MODULE_INCLUDE_FLAG],[ + AS_VAR_PUSHDEF([fortran_inc_var], [ompi_cv_fortran_module_include_flag]) + + OMPI_FC_MODULE_FLAG= + AC_CACHE_CHECK([for Fortran compiler module include flag], + fortran_inc_var, + [ofi_possible_flags="-I -p -M" + mkdir conftest.$$ + cd conftest.$$ + + # Try to compile a Fortran module + mkdir subdir + cd subdir + cat > conftest-module.f90 < conftest.f90 < conftestf.f < conftest.c < +#include +$ompi_conftest_h + +#ifdef __cplusplus +extern "C" { +#endif +void $ompi_ac_align_fn(char *w, char *x, char *y, char *z) +{ unsigned long aw, ax, ay, az; + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + aw = (unsigned long) w; + ax = (unsigned long) x; + ay = (unsigned long) y; + az = (unsigned long) z; + if (! ((aw%16)||(ax%16)||(ay%16)||(az%16))) fprintf(f, "%d\n", 16); + else if (! ((aw%12)||(ax%12)||(ay%12)||(az%12))) fprintf(f, "%d\n", 12); + else if (! ((aw%8)||(ax%8)||(ay%8)||(az%8))) fprintf(f, "%d\n", 8); + else if (! ((aw%4)||(ax%4)||(ay%4)||(az%4))) fprintf(f, "%d\n", 4); + else if (! ((aw%2)||(ax%2)||(ay%2)||(az%2))) fprintf(f, "%d\n", 2); + else fprintf(f, "%d\n", 1); + fclose(f); +} +#ifdef __cplusplus +} +#endif +EOF + + OPAL_LOG_COMMAND([$CC $CFLAGS -I. -c conftest.c], + [OPAL_LOG_COMMAND([$FC $FCFLAGS conftestf.f conftest.o -o conftest $LDFLAGS $LIBS], + [happy="yes"], [happy="no"])], [happy="no"]) + + if test "$happy" = "no" ; then + AC_MSG_RESULT([Error!]) + AC_MSG_ERROR([Could not determine alignment of $1]) + fi + + AS_IF([test "$cross_compiling" = "yes"], + [AC_MSG_RESULT([Error!]) + AC_MSG_ERROR([Can not determine alignment of $1 when cross-compiling])], + [OPAL_LOG_COMMAND([./conftest], + [AS_VAR_SET(type_var, [`cat conftestval`])], + [AC_MSG_RESULT([Error!]) + AC_MSG_ERROR([Could not determine alignment of $1])])]) + rm -rf conftest*]) + + AS_VAR_COPY([$2], [type_var]) + AS_VAR_POPDEF([type_var])dnl + OPAL_VAR_SCOPE_POP +]) + +# OMPI_FORTRAN_F08_GET_HANDLE_ALIGNMENT(type, variable to set) +# ------------------------------------------ +AC_DEFUN([OMPI_FORTRAN_F08_GET_HANDLE_ALIGNMENT],[ + # Use of m4_translit suggested by Eric Blake: + # http://lists.gnu.org/archive/html/bug-autoconf/2010-10/msg00016.html + AS_VAR_PUSHDEF([type_var], + m4_translit([[ompi_cv_fortran_alignment_$1]], [*], [p])) + + AC_CACHE_CHECK([alignment of Fortran $1], type_var, + [AC_LANG_PUSH([Fortran]) + AC_LINK_IFELSE([AC_LANG_SOURCE([[module alignment_mod +type, BIND(C) :: test_mpi_handle + integer :: MPI_VAL +end type test_mpi_handle +type(test_mpi_handle) :: t1 +type(test_mpi_handle) :: t2 +end module + +program falignment + use alignment_mod + OPEN(UNIT=10, FILE="conftestval") + if (LOC(t1) > LOC(t2)) then + write (10,'(I5)') LOC(t1)-LOC(t2) + else + write (10,'(I5)') LOC(t2)-LOC(t1) + endif + CLOSE(10) + +end program]])], + [AS_IF([test "$cross_compiling" = "yes"], + [AC_MSG_ERROR([Can not determine alignment of $1 when cross-compiling])], + [OPAL_LOG_COMMAND([./conftest], + [AS_VAR_SET(type_var, [`cat conftestval`])], + [AC_MSG_ERROR([Could not determine alignment of $1])])])], + + [AC_MSG_WARN([Could not determine alignment of $1]) + AC_MSG_WARN([See config.log for details]) + AC_MSG_ERROR([Cannot continue])]) + rm -rf conftest* *.mod 2> /dev/null + AC_LANG_POP([Fortran])]) + + AS_VAR_COPY([$2], [type_var]) + AS_VAR_POPDEF([type_var])dnl +])dnl diff --git a/config/ompi_fortran_get_handle_max.m4 b/config/ompi_fortran_get_handle_max.m4 new file mode 100644 index 00000000..819d40a3 --- /dev/null +++ b/config/ompi_fortran_get_handle_max.m4 @@ -0,0 +1,86 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OMPI_FORTRAN_GET_HANDLE_MAX() +# --------------------------------------------------------------- +# Find the maximum value of fortran integers, then calculate +# min(INT_MAX, max fortran INTEGER). This represents the maximum +# number of fortran MPI handle index. +AC_DEFUN([OMPI_FORTRAN_GET_HANDLE_MAX],[ + AS_VAR_PUSHDEF([fortran_handle_max_var], + [ompi_cv_fortran_handle_max]) + + AC_CACHE_CHECK([for max Fortran MPI handle index], + fortran_handle_max_var, + [ # Find max fortran INTEGER value. Set to sentinel value if we don't + # have a Fortran compiler (e.g., if --disable-fortran was given). + if test $ompi_fortran_happy -eq 0; then + ompi_fint_max=0 + else + OPAL_COMPUTE_MAX_VALUE([$OMPI_SIZEOF_FORTRAN_INTEGER], [ompi_fint_max]) + fi + + # Get INT_MAX. Compute a SWAG if we are cross compiling or something + # goes wrong. + rm -f conftest.out >/dev/null 2>&1 + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ +#include +#include +]],[[FILE *fp = fopen("conftest.out", "w"); +long cint = INT_MAX; +fprintf(fp, "%ld", cint); +fclose(fp);]])], + [ompi_cint_max=`cat conftest.out`], + [ompi_cint_max=0], + [ #cross compiling is fun. compute INT_MAX same as INTEGER max + OPAL_COMPUTE_MAX_VALUE([$ac_cv_sizeof_int], [ompi_cint_max])]) + + # Use string comparisons with "test"; see comment above for + # rationale. + if test "$ompi_cint_max" = "0" ; then + # wow - something went really wrong. Be conservative + value=32767 + elif test "$ompi_fint_max" = "0" ; then + # we aren't compiling Fortran - just set it to C INT_MAX + value=$ompi_cint_max + else + # Take the lesser of C INT_MAX and Fortran INTEGER max. + # The resulting value will then be storable in either + # type. Use expr (instead of "test -lt"), because it can + # handle 8-byte integer values. + value=$ompi_fint_max + if test "`expr $ompi_cint_max \< $value`" = "1"; then + value=$ompi_cint_max + fi + fi + AS_VAR_SET(fortran_handle_max_var, [$value]) + rm -f conftest.out > /dev/null 2>&1 + unset value]) + + AS_VAR_COPY([ompi_fortran_handle_max], [fortran_handle_max_var]) + # sanity check; OMPI gets very unhappy if this value is negative... + if test 0 -ne `expr $ompi_fortran_handle_max \< 0` ; then + AC_MSG_ERROR([Detected negative max handle size.]) + fi + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_HANDLE_MAX], + [$ompi_fortran_handle_max], + [Max handle value for fortran MPI handles, effectively min(INT_MAX, max fortran INTEGER value)]) + AS_VAR_POPDEF([fortran_handle_max_var]) +])dnl diff --git a/config/ompi_fortran_get_kind_value.m4 b/config/ompi_fortran_get_kind_value.m4 new file mode 100644 index 00000000..fb476596 --- /dev/null +++ b/config/ompi_fortran_get_kind_value.m4 @@ -0,0 +1,101 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2010-2012 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OMPI_FORTRAN_GET_KIND_VALUE(kind, decimal range, variable to set) +# ----------------------------------------------------------------- +AC_DEFUN([OMPI_FORTRAN_GET_KIND_VALUE],[ + # Use of m4_translit suggested by Eric Blake: + # http://lists.gnu.org/archive/html/bug-autoconf/2010-10/msg00016.html + AS_VAR_PUSHDEF([kind_value_var], + m4_translit([[ompi_cv_fortran_kind_value_$1]], [*], [p])) + + rm -f conftest.out + AC_CACHE_CHECK([KIND value of Fortran $1], kind_value_var, + [if test $OMPI_TRY_FORTRAN_BINDINGS -eq $OMPI_FORTRAN_NO_BINDINGS || \ + test $ompi_fortran_happy -eq 0; then + value=skipped + else + AC_LANG_PUSH([Fortran]) + value= + AC_RUN_IFELSE(AC_LANG_PROGRAM(, [[ + use, intrinsic :: ISO_C_BINDING + open(unit = 7, file = "conftest.out") + write(7, *) $1 + close(7) +]]), [value=`cat conftest.out | awk '{print [$]1}'`], [value=no], [value=cross]) + rm -f conftest.out + fi + + # If the compiler is ancient enough to not support the + # ISO_C_BINDING stuff, then we have to fall back to older + # tests. Yuck. + AS_IF([test "$value" = "no"], + [AC_MSG_RESULT([no ISO_C_BINDING -- fallback]) + _OMPI_FORTRAN_SELECTED_INT_KIND($2, value)]) + + AS_IF([test "$value" = "no"], + [AC_MSG_WARN([Could not determine KIND value of $1]) + AC_MSG_WARN([See config.log for more details]) + AC_MSG_ERROR([Cannot continue])]) + + AS_IF([test "$value" = "cross"], + [AC_MSG_ERROR([Can not determine KIND value of $1 when cross-compiling])]) + + AS_VAR_SET(kind_value_var, [$value]) + AC_LANG_POP([Fortran]) + unset value + ]) + + AS_VAR_COPY([$3], [kind_value_var]) + AS_VAR_POPDEF([kind_value_var]) +])dnl + +# _OMPI_FORTRAN_SELECTED_INT_KIND(decimal range, variable to set) +# ----------------------------------------------------------------- +AC_DEFUN([_OMPI_FORTRAN_SELECTED_INT_KIND],[ + AS_VAR_PUSHDEF([sel_int_kind_var], [ompi_cv_fortran_int_kind_$1]) + AC_CACHE_CHECK([Fortran value of selected_int_kind($1)], sel_int_kind_var, + [outval=no + + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -gt $OMPI_FORTRAN_NO_BINDINGS && \ + test $ompi_fortran_happy -eq 1], + [rm -f conftest.out + AC_LANG_PUSH([Fortran]) + AC_RUN_IFELSE(AC_LANG_PROGRAM(, [[ + open(8, file="conftest.out") + write(8, fmt="(I5)") selected_int_kind($1) + close(8) +]]), [outval=`cat conftest.out | awk '{print [$]1}'`], [outval=no], [outval=cross]) + rm -f conftest.out + AC_LANG_POP([Fortran]) + ]) + + AS_VAR_SET(sel_int_kind_var, [$outval]) + unset outval + ]) + + # All analysis of $value is done in the upper-level / calling + # macro + + AS_VAR_COPY([$2], [sel_int_kind_var]) + AS_VAR_POPDEF([sel_int_kind_var])dnl +]) diff --git a/config/ompi_fortran_get_sizeof.m4 b/config/ompi_fortran_get_sizeof.m4 new file mode 100644 index 00000000..e25d982c --- /dev/null +++ b/config/ompi_fortran_get_sizeof.m4 @@ -0,0 +1,90 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2010-2012 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OMPI_FORTRAN_GET_SIZEOF(prologue, type, variable to set) +# ------------------------------------------ +AC_DEFUN([OMPI_FORTRAN_GET_SIZEOF],[ + # Use of m4_translit suggested by Eric Blake: + # http://lists.gnu.org/archive/html/bug-autoconf/2010-10/msg00016.html + AS_VAR_PUSHDEF([type_var], + m4_translit([[ompi_cv_fortran_sizeof_$2]], [*], [p])) + + AC_CACHE_CHECK([size of Fortran $2], type_var, + [OMPI_FORTRAN_MAKE_C_FUNCTION([ompi_ac_size_fn], [size]) + # Fortran module + cat > conftestf.f90 < conftest.c < +#include +$ompi_conftest_h + +#ifdef __cplusplus +extern "C" { +#endif +void $ompi_ac_size_fn(char *a, char *b) +{ + int diff = (int) (b - a); + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf(f, "%d\n", diff); +} +#ifdef __cplusplus +} +#endif +EOF + + OPAL_LOG_COMMAND([$CC $CFLAGS -I. -c conftest.c], + [OPAL_LOG_COMMAND([$FC $FCFLAGS $FCFLAGS_f90 conftestf.f90 conftest.o -o conftest $LDFLAGS $LIBS], + [happy="yes"], [happy="no"])], [happy="no"]) + + if test "$happy" = "no" ; then + OPAL_LOG_MSG([here is the Fortran program:], 1) + OPAL_LOG_FILE([conftestf.f90]) + AC_MSG_WARN([Could not determine size of $2]) + AC_MSG_WARN([See config.log for details]) + AC_MSG_ERROR([Cannot continue]) + fi + + AS_IF([test "$cross_compiling" = "yes"], + [AC_MSG_ERROR([Can not determine size of $2 when cross-compiling])], + [OPAL_LOG_COMMAND([./conftest], + [AS_VAR_SET(type_var, [`cat conftestval`])], + [AC_MSG_ERROR([Could not determine size of $2])])]) + + unset happy ompi_conftest_h + rm -rf conftest*]) + + AS_VAR_COPY([$3], [type_var]) + AS_VAR_POPDEF([type_var])dnl +])dnl diff --git a/config/ompi_fortran_get_value_true.m4 b/config/ompi_fortran_get_value_true.m4 new file mode 100644 index 00000000..180d62c8 --- /dev/null +++ b/config/ompi_fortran_get_value_true.m4 @@ -0,0 +1,134 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University. +dnl All rights reserved. +dnl Copyright (c) 2004-2005 The Trustees of the University of Tennessee. +dnl All rights reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + + +# OMPI_FORTRAN_GET_VALUE_TRUE() +# ------------------------------------------------------- +# Determine the value of .TRUE. of this Fortran compiler. +AC_DEFUN([OMPI_FORTRAN_GET_VALUE_TRUE],[ + # invalidate cache if result came from a run where FORTRAN was disabled + if test "$ompi_cv_fortran_true_value" = "0" ; then + unset ompi_cv_fortran_true_value + fi + + AS_VAR_PUSHDEF([fortran_true_var], + [ompi_cv_fortran_true_value]) + + AC_CACHE_CHECK([Fortran value for .TRUE. logical type], + fortran_true_var, + [if test "$1" = "none" || \ + test $OMPI_TRY_FORTRAN_BINDINGS -eq $OMPI_FORTRAN_NO_BINDINGS || \ + test $ompi_fortran_happy -eq 0 ; then + value=77 + else + # + # C module + # We really need the confdefs.h Header file for + # the ompi_fortran_logical_t definition + # + if test \! -f confdefs.h ; then + AC_MSG_WARN([*** Problem running configure test!]) + AC_MSG_WARN([*** Cannot find confdefs.h file for config test]) + AC_MSG_WARN([*** See config.log for details.]) + AC_MSG_ERROR([*** Cannot continue.]) + fi + + cat > conftest.c < +#include +#include "confdefs.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void ompi_print_f(ompi_fortran_logical_t * logical) +{ + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + + if( SIZEOF_INT >= sizeof(ompi_fortran_logical_t) ) { + fprintf(f, "%d\n", (int)*logical); + } else if (SIZEOF_LONG >= sizeof(ompi_fortran_logical_t) ) { + fprintf(f, "%ld\n", (long) *logical); +#ifdef HAVE_LONG_LONG + } else if (SIZEOF_LONG_LONG >= sizeof(ompi_fortran_logical_t) ) { + fprintf(f, "%lld\n", (long long) *logical); +#endif + } else { + exit(1); + } +} + +void ompi_print(ompi_fortran_logical_t *logical) +{ ompi_print_f(logical); } + +void ompi_print_(ompi_fortran_logical_t *logical) +{ ompi_print_f(logical); } + +void ompi_print__(ompi_fortran_logical_t *logical) +{ ompi_print_f(logical); } + +void OMPI_PRINT(ompi_fortran_logical_t *logical) +{ ompi_print_f(logical); } + +#ifdef __cplusplus +} +#endif +EOF + cat > conftestf.f < + int main() { + LONG dest = 1, exchange = 0, comperand = 1; + SetErrorMode(SEM_FAILCRITICALERRORS); + InterlockedCompareExchange( &dest, exchange, comperand ); + return (int)dest; + }], + [AC_MSG_RESULT(yes) + ompi_windows_have_support_for_32_bits_atomic=1], + [AC_MSG_RESULT(no) + ompi_windows_have_support_for_32_bits_atomic=0]) + AC_DEFINE_UNQUOTED(HAVE_INTERLOCKEDCOMPAREEXCHANGE, + $ompi_windows_have_support_for_32_bits_atomic, + [Whether we support 32 bits atomic operations on Windows]) + + AC_MSG_CHECKING(for working InterlockedCompareExchangeAcquire) + AC_TRY_RUN( [#include + int main() { + LONG dest = 1, exchange = 0, comperand = 1; + SetErrorMode(SEM_FAILCRITICALERRORS); + InterlockedCompareExchangeAcquire( &dest, exchange, comperand ); + return (int)dest; + }], + [AC_MSG_RESULT(yes) + ompi_windows_have_support_for_32_bits_atomic=1], + [AC_MSG_RESULT(no) + ompi_windows_have_support_for_32_bits_atomic=0]) + AC_DEFINE_UNQUOTED(HAVE_INTERLOCKEDCOMPAREEXCHANGEACQUIRE, + $ompi_windows_have_support_for_32_bits_atomic, + [Whether we support 32 bits atomic operations on Windows]) + + AC_MSG_CHECKING(for working InterlockedCompareExchangeRelease) + AC_TRY_RUN( [#include + int main() { + LONG dest = 1, exchange = 0, comperand = 1; + SetErrorMode(SEM_FAILCRITICALERRORS); + InterlockedCompareExchangeRelease( &dest, exchange, comperand ); + return (int)dest; + }], + [AC_MSG_RESULT(yes) + ompi_windows_have_support_for_32_bits_atomic=1], + [AC_MSG_RESULT(no) + ompi_windows_have_support_for_32_bits_atomic=0]) + AC_DEFINE_UNQUOTED(HAVE_INTERLOCKEDCOMPAREEXCHANGERELEASE, + $ompi_windows_have_support_for_32_bits_atomic, + [Whether we support 32 bits atomic operations on Windows]) + + AC_MSG_CHECKING(for working InterlockedCompareExchange64) + AC_TRY_RUN( [#include + int main() { + LONGLONG dest = 1, exchange = 0, comperand = 1; + SetErrorMode(SEM_FAILCRITICALERRORS); + InterlockedCompareExchange64( &dest, exchange, comperand ); + return (int)dest; + }], + [AC_MSG_RESULT(yes) + ompi_windows_have_support_for_64_bits_atomic=1], + [AC_MSG_RESULT(no) + ompi_windows_have_support_for_64_bits_atomic=0]) + AC_DEFINE_UNQUOTED(HAVE_INTERLOCKEDCOMPAREEXCHANGE64, + $ompi_windows_have_support_for_64_bits_atomic, + [Whether we support 64 bits atomic operations on Windows]) + + opal_show_title "Windows Type tests" + + AC_DEFINE([pid_t], [intptr_t], [Windows pid_t type is a pointer]) + AC_DEFINE_UNQUOTED([SIZEOF_PID_T], $ac_cv_sizeof_int, + [and here is it's size]) + + LDFLAGS="$SAVE_LDFLAGS" +fi + +]) diff --git a/config/ompi_setup_contrib.m4 b/config/ompi_setup_contrib.m4 new file mode 100644 index 00000000..58c470ef --- /dev/null +++ b/config/ompi_setup_contrib.m4 @@ -0,0 +1,29 @@ +# -*- shell-script -*- +# +# Copyright (c) 2004-2009 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2007 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2006-2009 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2006-2008 Sun Microsystems, Inc. All rights reserved. +# Copyright (c) 2006-2007 Los Alamos National Security, LLC. All rights +# reserved. +# Copyright (c) 2009 Oak Ridge National Labs. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +AC_DEFUN([OMPI_SETUP_CONTRIB],[ + opal_show_title "Contributed software setup" + + OMPI_CONTRIB +]) diff --git a/config/ompi_setup_cxx.m4 b/config/ompi_setup_cxx.m4 new file mode 100644 index 00000000..dc09d09d --- /dev/null +++ b/config/ompi_setup_cxx.m4 @@ -0,0 +1,454 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2006 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2006 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2006 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl Copyright (c) 2007-2009 Sun Microsystems, Inc. All rights reserved. +dnl Copyright (c) 2008-2013 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2015-2016 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# This macro is necessary to get the title to be displayed first. :-) +AC_DEFUN([OMPI_SETUP_CXX_BANNER],[ + opal_show_subtitle "C++ compiler and preprocessor" +]) + +# This macro is necessary because PROG_CXX* is REQUIREd by multiple +# places in SETUP_CXX. +AC_DEFUN([OMPI_PROG_CXX],[ + OPAL_VAR_SCOPE_PUSH([ompi_cxxflags_save]) + ompi_cxxflags_save="$CXXFLAGS" + AC_PROG_CXX + AC_PROG_CXXCPP + CXXFLAGS="$ompi_cxxflags_save" + OPAL_VAR_SCOPE_POP +]) + +# OMPI_SETUP_CXX() +# ---------------- +# Do everything required to setup the C++ compiler. Safe to AC_REQUIRE +# this macro. +AC_DEFUN([OMPI_SETUP_CXX],[ + AC_REQUIRE([OMPI_SETUP_CXX_BANNER]) + + _OMPI_SETUP_CXX_COMPILER + + _OMPI_CXX_CHECK_EXCEPTIONS + + AS_IF([test "$WANT_MPI_CXX_SUPPORT" = "1"], + [OMPI_CXX_FIND_TEMPLATE_REPOSITORY + OMPI_CXX_FIND_TEMPLATE_PARAMETERS + OPAL_CHECK_IDENT([CXX], [CXXFLAGS], [cc], [C++])]) + + _OMPI_CXX_CHECK_BUILTIN + + _OMPI_CXX_CHECK_2D_CONST_CAST + + AM_CONDITIONAL(OMPI_BUILD_MPI_CXX_BINDINGS, [test "$WANT_MPI_CXX_SUPPORT" = 1]) + AC_DEFINE_UNQUOTED(OMPI_BUILD_CXX_BINDINGS, $WANT_MPI_CXX_SUPPORT, + [Whether we want MPI C++ support or not]) +]) + +# _OMPI_SETUP_CXX_COMPILER() +# -------------------------- +# Setup the CXX compiler +AC_DEFUN([_OMPI_SETUP_CXX_COMPILER],[ + OPAL_VAR_SCOPE_PUSH(ompi_cxx_compiler_works) + + # There's a few cases here: + # + # 1. --enable-mpi-cxx was supplied: error if we don't find a C++ + # compiler + # 2. --disable-mpi-cxx was supplied: check for a C++ compiler anyway + # (so we can have a functional mpic++ wrapper compiler), but + # don't error if we don't find one. + # 3. neither was specified: same was #2 + # + # Then only proceed to do all the rest of the C++ checks if we + # both found a c++ compiler and want the C++ bindings (i.e., either + # case #1 or #3) + + # Must REQUIRE the PROG_CXX macro and not call it directly here for + # reasons well-described in the AC2.64 (and beyond) docs. + AC_REQUIRE([OMPI_PROG_CXX]) + BASECXX="`basename $CXX`" + + AS_IF([test "x$CXX" = "x"], [CXX=none]) + set dummy $CXX + ompi_cxx_argv0=[$]2 + OPAL_WHICH([$ompi_cxx_argv0], [OMPI_CXX_ABSOLUTE]) + AS_IF([test "x$OMPI_CXX_ABSOLUTE" = "x"], [OMPI_CXX_ABSOLUTE=none]) + + AC_DEFINE_UNQUOTED(OMPI_CXX, "$CXX", [OMPI underlying C++ compiler]) + AC_SUBST(OMPI_CXX_ABSOLUTE) + + # Make sure that the C++ compiler both works and is actually a C++ + # compiler (if not cross-compiling). Don't just use the AC macro + # so that we can have a pretty message. Do something here that + # should force the linking of C++-specific things (e.g., STL + # strings) so that we can force a hard check of compiling, + # linking, and running a C++ application. Note that some C + # compilers, such as at least some versions of the GNU and Intel + # compilers, will detect that the file extension is ".cc" and + # therefore switch into a pseudo-C++ personality which works for + # *compiling*, but does not work for *linking*. So in this test, + # we want to cover the entire spectrum (compiling, linking, + # running). Note that it is not a fatal error if the C++ compiler + # does not work unless the user specifically requested the C++ + # bindings. + AS_IF([test "$CXX" = "none"], + [ompi_cxx_compiler_works=no], + [AS_IF([test "$ompi_cv_cxx_compiler_vendor" = "microsoft" ], + [ompi_cxx_compiler_works=yes], + [OPAL_CHECK_COMPILER_WORKS([C++], [#include +], + [std::string foo = "Hello, world"], + [ompi_cxx_compiler_works=yes], + [ompi_cxx_compiler_works=no])])]) + + AS_IF([test "$ompi_cxx_compiler_works" = "yes"], + [_OMPI_SETUP_CXX_COMPILER_BACKEND], + [AS_IF([test "$enable_mpi_cxx" = "yes"], + [AC_MSG_WARN([Could not find functional C++ compiler, but]) + AC_MSG_WARN([support for the C++ MPI bindings was requested.]) + AC_MSG_ERROR([Cannot continue])], + [WANT_MPI_CXX_SUPPORT=0])]) + + AC_MSG_CHECKING([if able to build the MPI C++ bindings]) + AS_IF([test "$WANT_MPI_CXX_SUPPORT" = "1"], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + AS_IF([test "$enable_mpi_cxx" = "yes"], + [AC_MSG_WARN([MPI C++ binding support requested but not delivered]) + AC_MSG_ERROR([Cannot continue])])]) + + AS_IF([test "$WANT_MPI_CXX_SUPPORT" = "1"], + [OPAL_CXX_COMPILER_VENDOR([ompi_cxx_vendor])]) + OPAL_VAR_SCOPE_POP +]) + +# _OMPI_SETUP_CXX_COMPILER_BACKEND() +# ---------------------------------- +# Back end of _OMPI_SETUP_CXX_COMPILER_BACKEND() +AC_DEFUN([_OMPI_SETUP_CXX_COMPILER_BACKEND],[ + # Do we want code coverage + if test "$WANT_COVERAGE" = "1" && test "$WANT_MPI_CXX_SUPPORT" = "1"; then + if test "$ompi_cxx_vendor" = "gnu" ; then + AC_MSG_WARN([$OMPI_COVERAGE_FLAGS has been added to CFLAGS (--enable-coverage)]) + WANT_DEBUG=1 + CXXFLAGS="${CXXFLAGS} $OMPI_COVERAGE_FLAGS" + OPAL_WRAPPER_FLAGS_ADD([CXXFLAGS], [$OMPI_COVERAGE_FLAGS]) + else + AC_MSG_WARN([Code coverage functionality is currently available only with GCC suite]) + AC_MSG_ERROR([Configure: cannot continue]) + fi + fi + + # Do we want debugging? + if test "$WANT_DEBUG" = "1" && test "$enable_debug_symbols" != "no" ; then + CXXFLAGS="$CXXFLAGS -g" + OPAL_FLAGS_UNIQ(CXXFLAGS) + AC_MSG_WARN([-g has been added to CXXFLAGS (--enable-debug)]) + fi + + # These flags are generally g++-specific; even the g++-impersonating + # compilers won't accept them. + OMPI_CXXFLAGS_BEFORE_PICKY="$CXXFLAGS" + if test "$WANT_PICKY_COMPILER" = 1 && test "$ompi_cxx_vendor" = "gnu"; then + add="-Wall -Wundef -Wno-long-long" + + # see if -Wno-long-double works... + AC_LANG_PUSH(C++) + CXXFLAGS_orig="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS $add -Wno-long-double -fstrict-prototype" + AC_CACHE_CHECK([if $CXX supports -Wno-long-double], + [ompi_cv_cxx_wno_long_double], + [AC_TRY_COMPILE([], [], + [dnl Alright, the -Wno-long-double did not produce any errors... + dnl Well well, try to extract a warning regarding unrecognized or ignored options + AC_TRY_COMPILE([], [long double test;], + [ + ompi_cv_cxx_wno_long_double="yes" + if test -s conftest.err ; then + dnl Yes, it should be "ignor", in order to catch ignoring and ignore + for i in invalid ignor unrecognized ; do + $GREP -iq $i conftest.err + if test "$?" = "0" ; then + ompi_cv_cxx_wno_long_double="no", + break; + fi + done + fi + ], + [ompi_cv_cxx_wno_long_double="no"])], + [ompi_cv_cxx_wno_long_double="no"])]) + CXXFLAGS="$CXXFLAGS_orig" + AC_LANG_POP(C++) + if test "$ompi_cv_cxx_wno_long_double" = "yes" ; then + add="$add -Wno-long-double" + fi + + CXXFLAGS="$CXXFLAGS $add" + OPAL_FLAGS_UNIQ(CXXFLAGS) + if test "$add" != "" ; then + AC_MSG_WARN([$add has been added to CXXFLAGS (--enable-picky)]) + fi + unset add + fi + + # See if this version of g++ allows -finline-functions + if test "$GXX" = "yes"; then + CXXFLAGS_orig="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -finline-functions" + add= + AC_LANG_PUSH(C++) + AC_CACHE_CHECK([if $CXX supports -finline-functions], + [ompi_cv_cxx_finline_functions], + [AC_TRY_COMPILE([], [], + [ompi_cv_cxx_finline_functions="yes"], + [ompi_cv_cxx_finline_functions="no"])]) + AC_LANG_POP(C++) + if test "$ompi_cv_cxx_finline_functions" = "yes" ; then + add=" -finline-functions" + fi + CXXFLAGS="$CXXFLAGS_orig$add" + OPAL_FLAGS_UNIQ(CXXFLAGS) + if test "$add" != "" ; then + AC_MSG_WARN([$add has been added to CXXFLAGS]) + fi + unset add + fi + + # Make sure we can link with the C compiler + if test "$ompi_cv_cxx_compiler_vendor" != "microsoft"; then + OPAL_LANG_LINK_WITH_C([C++], [], + [cat <&2 +********************************************************************** +* It appears that your C++ compiler is unable to link against object +* files created by your C compiler. This generally indicates either +* a conflict between the options specified in CFLAGS and CXXFLAGS +* or a problem with the local compiler installation. More +* information (including exactly what command was given to the +* compilers and what error resulted when the commands were executed) is +* available in the config.log file in this directory. +********************************************************************** +EOF + AC_MSG_ERROR([C and C++ compilers are not link compatible. Can not continue.])]) + fi + + # If we are on HP-UX, ensure that we're using aCC + case "$host" in + *hpux*) + if test "$BASECXX" = "CC"; then + AC_MSG_WARN([*** You will probably have problems compiling the MPI 2]) + AC_MSG_WARN([*** C++ bindings with the HP-UX CC compiler. You should]) + AC_MSG_WARN([*** probably be using the aCC compiler. Re-run configure]) + AC_MSG_WARN([*** with the environment variable "CXX=aCC".]) + fi + ;; + esac + + # Note: gcc-imperonating compilers accept -O3 + if test "$WANT_DEBUG" = "1"; then + OPTFLAGS= + else + if test "$GXX" = yes; then + OPTFLAGS="-O3" + else + OPTFLAGS="-O" + fi + fi + + # config/ompi_ensure_contains_optflags.m4 + OPAL_ENSURE_CONTAINS_OPTFLAGS(["$CXXFLAGS"]) + AC_MSG_CHECKING([for C++ optimization flags]) + AC_MSG_RESULT([$co_result]) + CXXFLAGS="$co_result" + + # bool type size and alignment + AC_LANG_PUSH(C++) + AC_CHECK_SIZEOF(bool) + OPAL_C_GET_ALIGNMENT(bool, OPAL_ALIGNMENT_CXX_BOOL) + AC_LANG_POP(C++) +]) + + +# _OMPI_CXX_CHECK_EXCEPTIONS() +# ---------------------------- +# Check for exceptions, skipping the test if we don't want the C++ +# bindings +AC_DEFUN([_OMPI_CXX_CHECK_EXCEPTIONS],[ + # Check for special things due to C++ exceptions + ENABLE_CXX_EXCEPTIONS=no + HAVE_CXX_EXCEPTIONS=0 + AC_ARG_ENABLE([cxx-exceptions], + [AC_HELP_STRING([--enable-cxx-exceptions], + [enable support for C++ exceptions (default: disabled)])], + [ENABLE_CXX_EXCEPTIONS="$enableval"]) + + AC_MSG_CHECKING([if want C++ exception handling]) + + AS_IF([test "$WANT_MPI_CXX_SUPPORT" = "0"], + [AS_IF([test "$$enable_cxx_exceptions" = "yes"], + [AC_MSG_RESULT([error]) + AC_MSG_WARN([--enable-cxx-exceptions was specified, but the MPI C++ bindings were disabled]) + AC_MSG_ERROR([Cannot continue])], + [AC_MSG_RESULT([skipped])])], + [_OMPI_CXX_CHECK_EXCEPTIONS_BACKEND]) + + AC_DEFINE_UNQUOTED(OMPI_HAVE_CXX_EXCEPTION_SUPPORT, $HAVE_CXX_EXCEPTIONS, + [Whether or not we have compiled with C++ exceptions support]) +]) + +# _OMPI_CXX_CHECK_EXCEPTIONS_BACKEND() +# ------------------------------------ +# Back end of _OMPI_CXX_CHECK_EXCEPTIONS +AC_DEFUN([_OMPI_CXX_CHECK_EXCEPTIONS_BACKEND],[ + AC_MSG_RESULT([$ENABLE_CXX_EXCEPTIONS]) + if test "$ENABLE_CXX_EXCEPTIONS" = "yes"; then + # config/cxx_have_exceptions.m4 + OMPI_CXX_HAVE_EXCEPTIONS + # config/cxx_find_exception_flags.m4 + OMPI_CXX_FIND_EXCEPTION_FLAGS + if test "$OMPI_CXX_EXCEPTIONS" = "1"; then + HAVE_CXX_EXCEPTIONS=1 + + # Test to see if the C compiler likes these flags + AC_MSG_CHECKING([to see if C compiler likes the exception flags]) + CFLAGS="$CFLAGS $OMPI_CXX_EXCEPTIONS_CXXFLAGS" + AC_LANG_SAVE + AC_LANG_C + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[int i = 0;]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + AC_MSG_WARN([C++ exception flags are different between the C and C++ compilers; this configure script cannot currently handle this scenario. Either disable C++ exception support or send mail to the Open MPI users list.]) + AC_MSG_ERROR([*** Cannot continue])]) + AC_LANG_RESTORE + + # We can't test the F77 and F90 compilers now because we + # haven't found/set the up yet. So just save the flags + # and test them later (in ompi_setup_f77.m4 and + # ompi_setup_f90.m4). + + CXXFLAGS="$CXXFLAGS $OMPI_CXX_EXCEPTIONS_CXXFLAGS" + LDFLAGS="$LDFLAGS $OMPI_CXX_EXCEPTIONS_LDFLAGS" + + OPAL_WRAPPER_FLAGS_ADD([CFLAGS], [$OMPI_CXX_EXCEPTIONS_CXXFLAGS]) + OPAL_WRAPPER_FLAGS_ADD([CXXFLAGS], [$OMPI_CXX_EXCEPTIONS_CXXFLAGS]) + OPAL_WRAPPER_FLAGS_ADD([FCFLAGS], [$OMPI_CXX_EXCEPTIONS_CXXFLAGS]) + fi + fi +]) + +# _OMPI_CXX_CHECK_BUILTIN +# ----------------------- +# Check for __builtin_* stuff +AC_DEFUN([_OMPI_CXX_CHECK_BUILTIN],[ + OPAL_VAR_SCOPE_PUSH([have_cxx_builtin_expect have_cxx_builtin_prefetch]) + have_cxx_builtin_expect=0 + have_cxx_builtin_prefetch=0 + + AS_IF([test "$WANT_MPI_CXX_SUPPORT" = "1"], + [_OMPI_CXX_CHECK_BUILTIN_BACKEND]) + + AC_DEFINE_UNQUOTED([OMPI_CXX_HAVE_BUILTIN_EXPECT], + [$have_cxx_builtin_expect], + [Whether C++ compiler supports __builtin_expect]) + AC_DEFINE_UNQUOTED([OMPI_CXX_HAVE_BUILTIN_PREFETCH], + [$have_cxx_builtin_prefetch], + [Whether C++ compiler supports __builtin_prefetch]) + + OPAL_VAR_SCOPE_POP +]) + +# _OMPI_CXX_CHECK_BUILTIN_BACKEND +# ------------------------------- +# Back end of _OMPI_CXX_CHECK_BUILTIN +AC_DEFUN([_OMPI_CXX_CHECK_BUILTIN_BACKEND],[ + + # see if the C++ compiler supports __builtin_expect + AC_LANG_PUSH(C++) + AC_CACHE_CHECK([if $CXX supports __builtin_expect], + [ompi_cv_cxx_supports___builtin_expect], + [AC_TRY_LINK([], + [void *ptr = (void*) 0; + if (__builtin_expect (ptr != (void*) 0, 1)) return 0;], + [ompi_cv_cxx_supports___builtin_expect="yes"], + [ompi_cv_cxx_supports___builtin_expect="no"])]) + if test "$ompi_cv_cxx_supports___builtin_expect" = "yes" ; then + have_cxx_builtin_expect=1 + else + have_cxx_builtin_expect=0 + fi + AC_LANG_POP(C++) + + # see if the C compiler supports __builtin_prefetch + AC_LANG_PUSH(C++) + AC_CACHE_CHECK([if $CXX supports __builtin_prefetch], + [ompi_cv_cxx_supports___builtin_prefetch], + [AC_TRY_LINK([], + [int ptr; + __builtin_prefetch(&ptr,0,0);], + [ompi_cv_cxx_supports___builtin_prefetch="yes"], + [ompi_cv_cxx_supports___builtin_prefetch="no"])]) + if test "$ompi_cv_cxx_supports___builtin_prefetch" = "yes" ; then + have_cxx_builtin_prefetch=1 + else + have_cxx_builtin_prefetch=0 + fi + AC_LANG_POP(C++) +]) + + +# _OMPI_CXX_CHECK_2D_CONST_CAST +# ----------------------------- +# Check for compiler support of 2D const casts +AC_DEFUN([_OMPI_CXX_CHECK_2D_CONST_CAST],[ + OPAL_VAR_SCOPE_PUSH([use_2d_const_cast]) + use_2d_const_cast=0 + + AS_IF([test "$WANT_MPI_CXX_SUPPORT" = "1"], + [_OMPI_CXX_CHECK_2D_CONST_CAST_BACKEND]) + + AC_DEFINE_UNQUOTED([OMPI_CXX_SUPPORTS_2D_CONST_CAST], + [$use_2d_const_cast], + [Whether a const_cast on a 2-d array will work with the C++ compiler]) + + OPAL_VAR_SCOPE_POP +]) + +# _OMPI_CXX_CHECK_2D_CONST_CAST_BACKEND +# --------------------------------- +# Back end of _OMPI_CHECK_2D_CONST_CAST +AC_DEFUN([_OMPI_CXX_CHECK_2D_CONST_CAST_BACKEND],[ + # see if the compiler supports const_cast of 2-dimensional arrays + AC_LANG_PUSH(C++) + AC_CACHE_CHECK([if $CXX supports const_cast<> properly], + [ompi_cv_cxx_supports_2d_const_cast], + [AC_TRY_COMPILE([int non_const_func(int ranges[][3]); +int cast_test(const int ranges[][3]) { + return non_const_func(const_cast(ranges)); +}], + [], + [ompi_cv_cxx_supports_2d_const_cast="yes"], + [ompi_cv_cxx_supports_2d_const_cast="no"])]) + if test "$ompi_cv_cxx_supports_2d_const_cast" = "yes" ; then + use_2d_const_cast=1 + fi + AC_LANG_POP(C++) +]) diff --git a/config/ompi_setup_fc.m4 b/config/ompi_setup_fc.m4 new file mode 100644 index 00000000..a65caa17 --- /dev/null +++ b/config/ompi_setup_fc.m4 @@ -0,0 +1,253 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2007 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. +dnl Copyright (c) 2009-2014 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2015-2016 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl +dnl OMPI_SETUP_FC +dnl + +# This is REQUIREd, below. +AC_DEFUN_ONCE([_OMPI_SETUP_FC_BANNER],[ + opal_show_subtitle "Fortran compiler" +]) + +############################################################################# + +# This is REQUIREd, below. +AC_DEFUN_ONCE([_OMPI_SETUP_FC_COMPILER],[ + OPAL_VAR_SCOPE_PUSH([ompi_fcflags_save]) + ompi_fcflags_save="$FCFLAGS" + # Note that AC_PROG_FC will look for *any* fortran compiler, and + # we don't want it to find an F77-only compiler. The AC docs + # don't recommend using the "dialect" feature of AC_PROG_FC, so + # instead use the optional first parameter and steal the list of + # Fortran compilers (excluding the f77 compiler names) from AC's + # default list of compilers and use it here. This is the main + # reason we have an OMPI-ized version of the PROG_FC macro. + AC_PROG_FC([gfortran f95 fort xlf95 ifort ifc efc pgfortran pgf95 lf95 f90 xlf90 pgf90 epcf90 nagfor]) + FCFLAGS="$ompi_fcflags_save" + OPAL_VAR_SCOPE_POP +]) + +############################################################################# + +# General Fortran compiler setup +AC_DEFUN([OMPI_SETUP_FC],[ + OPAL_VAR_SCOPE_PUSH([ompi_fc_happy LDFLAGS_save fc_version]) + + # Force the intro banner to be displayed first + AC_REQUIRE([_OMPI_SETUP_FC_BANNER]) + + # Unfortunately, we must REQUIRE this for the reasons cited in the + # Autoconf (version >= 2.64) docs. + AC_REQUIRE([_OMPI_SETUP_FC_COMPILER]) + + AS_IF([test -z "$FC"], + [AC_MSG_WARN([*** All Fortran MPI bindings disabled (could not find compiler)]) + ompi_fc_happy=0], + [ompi_fc_happy=1]) + + AS_IF([test $ompi_fc_happy -eq 1 && test "$WANT_DEBUG" = "1" && test "$enable_debug_symbols" != "no"], + [FCFLAGS="$FCFLAGS -g" + OPAL_FLAGS_UNIQ(FCFLAGS) + AC_MSG_WARN([-g has been added to FCFLAGS (--enable-debug)]) + ]) + + # Make sure the compiler actually works, if not cross-compiling. + # Don't just use the AC macro so that we can have a pretty + # message. + AS_IF([test $ompi_fc_happy -eq 1], + [OPAL_CHECK_COMPILER_WORKS([Fortran], [], [], [], + [AC_MSG_ERROR([Could not run a simple Fortran program. Aborting.])])]) + + # OS X before 10.3 (deployment target) does not allow undefined common + # symbols in shared libraries. Because we can't figure out how to + # implement MPI_STATUSES_IGNORE and friends wihtout common symbols, on + # OS X we can't build the F90 bindings as a shared library. + OMPI_FORTRAN_EXTRA_SHARED_LIBRARY_FLAGS= + AS_IF([test $ompi_fc_happy -eq 1], + [AC_MSG_CHECKING([for extra arguments to build a shared library]) + case "$host" in + *apple-darwin*) + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + AC_MSG_RESULT([impossible -- -static]) + OMPI_FORTRAN_EXTRA_SHARED_LIBRARY_FLAGS="-static" + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + AC_MSG_RESULT([impossible -- -static]) + OMPI_FORTRAN_EXTRA_SHARED_LIBRARY_FLAGS="-static" + ;; + 10.*) + AC_MSG_RESULT([-Wl,-single_module]) + OMPI_FORTRAN_EXTRA_SHARED_LIBRARY_FLAGS="-Wl,-single_module" + esac + fi + ;; + *) + AC_MSG_RESULT([none needed]) + OMPI_FORTRAN_EXTRA_SHARED_LIBRARY_FLAGS="" + ;; + esac]) + AC_SUBST(OMPI_FORTRAN_EXTRA_SHARED_LIBRARY_FLAGS) + + # The Absoft compiler does not like the fact that we use lots of + # "ignore TKR" comment pragmas that it doesn't understand, and + # will warn about them. From Tony Goetz at Absoft, we can use the + # -Z790 flag to quell these warnings. + # The NAG compiler is too picky about naming conventions, so use the + # -mismatch flag to keep it happy + AC_MSG_CHECKING([for $FC warnings flags]) + fc_version=`$FC --version 2>&1` + case "$fc_version" in + *Absoft*) + AC_MSG_RESULT([-Z790]) + FCFLAGS="$FCFLAGS -Z790" + ;; + *NAG*) + AC_MSG_RESULT([-mismatch]) + FCFLAGS="$FCFLAGS -mismatch" + ;; + *) + AC_MSG_RESULT([none]) + ;; + esac + + # If we're still good, then save the extra file types. Do this last + # because it implies tests that should be invoked by the above tests + # (e.g., running the fortran compiler). + AS_IF([test $ompi_fc_happy -eq 1], + [AC_FC_SRCEXT(f) + AC_FC_SRCEXT(f90)]) + + # Per trac #1982, on OS X, we may need some esoteric linker flags + # in the wrapper compilers. However, per + # https://github.com/open-mpi/ompi/issues/259, we need to use + # -Wl,-flat_namespace when *building* the library (and + # -Wl,-commons,use_dylibs isn't quite sufficient). + AS_IF([test $ompi_fc_happy -eq 1], + [AC_MSG_CHECKING([to see if Fortran compilers need additional linker flags]) + case "$host" in + *apple-darwin*) + # Test whether -Wl,-flat_namespace works; if it does, + # both use it to build the libraries, and also put it + # in the wrapper compiler LDFLAGS. + LDFLAGS_save=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-flat_namespace" + AC_LANG_PUSH([Fortran]) + AC_LINK_IFELSE([AC_LANG_SOURCE([[program test + integer :: i +end program]])], + [LDFLAGS_save=$LDFLAGS + OMPI_FORTRAN_WRAPPER_FLAGS="-Wl,-flat_namespace" + OPAL_WRAPPER_FLAGS_ADD([FCFLAGS], [$OMPI_FORTRAN_WRAPPER_FLAGS])], + [OMPI_FORTRAN_WRAPPER_FLAGS=none]) + AC_LANG_POP([Fortran]) + LDFLAGS=$LDFLAGS_save + AC_MSG_RESULT([$OMPI_FORTRAN_WRAPPER_FLAGS]) + ;; + *) + AC_MSG_RESULT([none]) + ;; + esac + ]) + + # Get our Fortran symbol mangling scheme + AS_IF([test $ompi_fc_happy -eq 1], + [OMPI_FORTRAN_FIND_EXT_SYMBOL_CONVENTION]) + + # Make sure we can link with C code. + AS_IF([test $ompi_fc_happy -eq 1], + [OPAL_LANG_LINK_WITH_C([Fortran], [], + [cat <]]) + else + AC_MSG_RESULT([no]) + WANT_MPI_JAVA_SUPPORT=0 + fi + AC_DEFINE_UNQUOTED([OMPI_WANT_JAVA_BINDINGS], [$WANT_MPI_JAVA_SUPPORT], + [do we want java mpi bindings]) + AM_CONDITIONAL(OMPI_WANT_JAVA_BINDINGS, test "$WANT_MPI_JAVA_SUPPORT" = "1") + + # Are we happy? + AS_IF([test "$WANT_MPI_JAVA_SUPPORT" = "1"], + [AC_MSG_WARN([******************************************************]) + AC_MSG_WARN([*** Java MPI bindings are provided on a provisional]) + AC_MSG_WARN([*** basis. They are NOT part of the current or]) + AC_MSG_WARN([*** proposed MPI standard. Continued inclusion of]) + AC_MSG_WARN([*** the Java MPI bindings in Open MPI is contingent]) + AC_MSG_WARN([*** upon user interest and developer support.]) + AC_MSG_WARN([******************************************************]) + ]) + + AC_CONFIG_FILES([ + ompi/mpi/java/Makefile + ompi/mpi/java/java/Makefile + ompi/mpi/java/c/Makefile + ]) +]) diff --git a/config/ompi_setup_mpi_ext.m4 b/config/ompi_setup_mpi_ext.m4 new file mode 100644 index 00000000..a22ef1aa --- /dev/null +++ b/config/ompi_setup_mpi_ext.m4 @@ -0,0 +1,29 @@ +# -*- shell-script -*- +# +# Copyright (c) 2004-2009 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2007 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2006-2009 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2006-2008 Sun Microsystems, Inc. All rights reserved. +# Copyright (c) 2006-2007 Los Alamos National Security, LLC. All rights +# reserved. +# Copyright (c) 2009 Oak Ridge National Labs. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +AC_DEFUN([OMPI_SETUP_MPI_EXT],[ + opal_show_title "Extended MPI interfaces setup" + + OMPI_EXT +]) diff --git a/config/ompi_setup_mpi_fortran.m4 b/config/ompi_setup_mpi_fortran.m4 new file mode 100644 index 00000000..04ae4e0a --- /dev/null +++ b/config/ompi_setup_mpi_fortran.m4 @@ -0,0 +1,800 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2009 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2007 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2006-2017 Cisco Systems, Inc. All rights reserved +dnl Copyright (c) 2006-2008 Sun Microsystems, Inc. All rights reserved. +dnl Copyright (c) 2006-2007 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl Copyright (c) 2009 Oak Ridge National Labs. All rights reserved. +dnl Copyright (c) 2014-2017 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl Copyright (c) 2016 IBM Corporation. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +AC_DEFUN([OMPI_SETUP_MPI_FORTRAN],[ + # Default to building nothing + OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_NO_BINDINGS + + OMPI_FORTRAN_BUILD_SIZEOF=0 + + OMPI_FORTRAN_USEMPI_DIR= + OMPI_FORTRAN_USEMPI_LIB= + + OMPI_FORTRAN_USEMPIF08_LIB= + + OMPI_FORTRAN_MAX_ARRAY_RANK=0 + + OMPI_FORTRAN_HAVE_INTERFACE=0 + OMPI_FORTRAN_HAVE_IGNORE_TKR=0 + OMPI_FORTRAN_HAVE_OPTIONAL_ARGS=0 + OMPI_FORTRAN_HAVE_BIND_C=0 + OMPI_FORTRAN_HAVE_ISO_FORTRAN_ENV=0 + OMPI_FORTRAN_HAVE_STORAGE_SIZE=0 + OMPI_FORTRAN_HAVE_ISO_C_BINDING=0 + OMPI_FORTRAN_HAVE_BIND_C_SUB=0 + OMPI_FORTRAN_HAVE_BIND_C_TYPE=0 + OMPI_FORTRAN_HAVE_BIND_C_TYPE_NAME=0 + OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK=0 + OMPI_FORTRAN_HAVE_PRIVATE=0 + + # These macros control symbol names for Fortran/C interoperability + # + OMPI_F08_SUFFIX="_f08" + OMPI_F_SUFFIX="_f" + + OMPI_MPI_PREFIX="MPI_" + OMPI_MPI_BIND_PREFIX="mpi_" + + # Open MPI now treats $F77 and $FC the same, meaning that we + # expect them to be the same back-end compiler. If they're not, + # results are undefined. We do a cursory check to see that FC and + # F77 are the same string value (if they're defined). If they're + # not, we'll issue a warning, but keep going on the assumption + # that they're the same back-end compiler (e.g., pgf77 and pgf90). + # Open MPI only uses $FC and $FCFLAGS -- $F77 and $FFLAGS are now + # ignored. + AS_IF([test "$F77" != "" || test "$FFLAGS" != ""], + [AC_MSG_WARN([Open MPI now ignores the F77 and FFLAGS environment variables; only the FC and FCFLAGS environment variables are used.]) + sleep 5]) + + #----------------------------------------------------------------------- + # If we want any of the Fortran MPI bindings, setup the Fortran compiler + #----------------------------------------------------------------------- + ompi_fortran_happy=0 + # $LN_S is used below + AC_PROG_LN_S + + ompi_fortran_double_underscore=0 + ompi_fortran_single_underscore=0 + ompi_fortran_caps=0 + ompi_fortran_plain=0 + + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_MPIFH_BINDINGS], + [$OMPI_FORTRAN_MPIFH_BINDINGS], + [Whether we are building support for the mpif.h bindings or not]) + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_USEMPI_BINDINGS], + [$OMPI_FORTRAN_USEMPI_BINDINGS], + [Whether we are building support for the "use mpi" bindings or not]) + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_USEMPIF08_BINDINGS], + [$OMPI_FORTRAN_USEMPIF08_BINDINGS], + [Whether we are building support for the "use mpif08" bindings or not]) + + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -gt $OMPI_FORTRAN_NO_BINDINGS], + [OMPI_SETUP_FC([ompi_fortran_happy=1])]) + + # These values will be determined by SETUP_FC. We must always + # AC_DEFINE these results, even in the --disable-mpi-fortran case, + # for ompi_info. + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_DOUBLE_UNDERSCORE], + [$ompi_fortran_double_underscore], + [Whether fortran symbols have a trailing double underscore or not]) + OMPI_FORTRAN_DOUBLE_UNDERSCORE=$ompi_fortran_double_underscore + AC_SUBST(OMPI_FORTRAN_DOUBLE_UNDERSCORE) + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_SINGLE_UNDERSCORE], + [$ompi_fortran_single_underscore], + [Whether fortran symbols have a trailing underscore or not]) + OMPI_FORTRAN_SINGLE_UNDERSCORE=$ompi_fortran_single_underscore + AC_SUBST(OMPI_FORTRAN_SINGLE_UNDERSCORE) + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_CAPS], + [$ompi_fortran_caps], + [Whether fortran symbols are all caps or not]) + OMPI_FORTRAN_CAPS=$ompi_fortran_caps + AC_SUBST(OMPI_FORTRAN_CAPS) + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_PLAIN], + [$ompi_fortran_plain], + [Whether fortran symbols have no trailing underscore or not]) + OMPI_FORTRAN_PLAIN=$ompi_fortran_plain + AC_SUBST(OMPI_FORTRAN_PLAIN) + + # Check to see if any of the MPI Fortran bindings were + # specifically requested. If so, and we weren't able to setup the + # Fortran compiler properly, it's an error. + AS_IF([test $ompi_fortran_happy -eq 0 && \ + test $OMPI_MIN_REQUIRED_FORTRAN_BINDINGS -gt $OMPI_FORTRAN_NO_BINDINGS], + [AC_MSG_WARN([MPI Fortran bindings requested, but no suitable Fortran compiler found]) + AC_MSG_ERROR([Cannot continue])]) + + # This allows us to mark bogus types, but still have them be a valid + # [sentinel] value + AC_DEFINE([ompi_fortran_bogus_type_t], [int], + [A bogus type that allows us to have sentinel type values that are still valid]) + + # These get filled in as we check for each type + OMPI_FORTRAN_IKINDS= + OMPI_FORTRAN_RKINDS= + OMPI_FORTRAN_CKINDS= + + # We want to set the #define's for all of these, so invoke the macros + # regardless of whether we have F77 support or not. + OMPI_FORTRAN_CHECK([CHARACTER], [yes], + [char, int32_t, int, int64_t, long long, long], [-1], [yes]) + + OMPI_FORTRAN_CHECK([LOGICAL], [yes], + [char, int32_t, int, int64_t, long long, long], [-1], [yes]) + OMPI_FORTRAN_CHECK([LOGICAL*1], [yes], + [char, int8_t, short, int32_t, int, int64_t, long long, long], [1], [yes]) + OMPI_FORTRAN_CHECK([LOGICAL*2], [yes], + [short, int16_t, int32_t, int, int64_t, long long, long], [2], [yes]) + OMPI_FORTRAN_CHECK([LOGICAL*4], [yes], + [int32_t, int, int64_t, long long, long], [4], [yes]) + OMPI_FORTRAN_CHECK([LOGICAL*8], [yes], + [int, int64_t, long long, long], [8], [yes]) + + OMPI_FORTRAN_CHECK([INTEGER], [yes], + [int32_t, int, int64_t, long long, long], [-1], [yes]) + OMPI_FORTRAN_CHECK([INTEGER*1], [no], + [char, int8_t, short, int, int64_t, long long, long], [1], [yes]) + OMPI_FORTRAN_CHECK([INTEGER*2], [no], + [short, int16_t, int32_t, int, int64_t, long long, long], [2], [yes]) + OMPI_FORTRAN_CHECK([INTEGER*4], [no], + [int32_t, int, int64_t, long long, long], [4], [yes]) + OMPI_FORTRAN_CHECK([INTEGER*8], [no], + [int, int64_t, long long, long], [8], [yes]) + OMPI_FORTRAN_CHECK([INTEGER*16], [no], + [int, int64_t, long long, long], [16], [yes]) + + OMPI_FORTRAN_CHECK([REAL], [yes], + [float, double, long double], [-1], [yes]) + OMPI_FORTRAN_CHECK([REAL*2], [no], + [float, double, long double], [2], [yes]) + OMPI_FORTRAN_CHECK([REAL*4], [no], + [float, double, long double], [4], [yes]) + OMPI_FORTRAN_CHECK([REAL*8], [no], + [float, double, long double], [8], [yes]) + OMPI_FORTRAN_CHECK([REAL*16], [no], + [float, double, long double], [16], [yes]) + + # In some compilers, the bit representation of REAL*16 is not the same + # as the C counterpart that we found. If this is the case, then we + # want to disable reduction support for MPI_REAL16 (per ticket #1603). + OMPI_FORTRAN_CHECK_REAL16_C_EQUIV + + OMPI_FORTRAN_CHECK([DOUBLE PRECISION], [yes], + [float, double, long double], [-1], [yes]) + + OMPI_FORTRAN_CHECK([COMPLEX], [yes], [float _Complex, double _Complex], [-1], [no]) + + # The complex*N tests are a bit different (note: the complex tests are + # the same as all the rest, because complex is a composite of two + # reals, which we *have* to have. It's only the complex*N tests that + # are different). The fortran complex types are composites of the + # real*(N/2) types. So for us to support complex*N, two conditions + # must be true: + # + # a) we must support real*(N/2) (i.e., compiler supports it and we + # have a back-end C type for it) + # b) compiler supports complex*N + + OMPI_FORTRAN_CHECK([COMPLEX*4], [no], [float _Complex], [4], [no]) + OMPI_FORTRAN_CHECK([COMPLEX*8], [no], + [float _Complex, double _Complex, long double _Complex], + [8], [no]) + OMPI_FORTRAN_CHECK([COMPLEX*16], [no], + [float _Complex, double _Complex, long double _Complex], + [16], [no]) + OMPI_FORTRAN_CHECK([COMPLEX*32], [no], + [float _Complex, double _Complex, long double _Complex], + [32], [no]) + # Double precision complex types are not standard, but many + # compilers support it. Code should be wrapped with #ifdef + # OMPI_HAVE_FORTRAN_DOUBLE_COMPLEX + OMPI_FORTRAN_CHECK([DOUBLE COMPLEX], [no], + [float _Complex, double _Complex, long double _Complex], + [-1], [no]) + + # Regardless of whether we have fortran bindings, or even a + # fortran compiler, get the max value for a fortran MPI handle + # (this macro handles the case where we don't have a fortran + # compiler). + OMPI_FORTRAN_GET_HANDLE_MAX + + # Check for Fortran compilers value of TRUE and for the correct + # assumption on LOGICAL for conversion into what C considers to be + # a true value. + OMPI_FORTRAN_GET_VALUE_TRUE + OMPI_FORTRAN_CHECK_LOGICAL_ARRAY + + # Find out how many array ranks this compiler supports. + OMPI_FORTRAN_CHECK_MAX_ARRAY_RANK + + # How big should MPI_STATUS_SIZE be? (i.e., the size of + # MPI_STATUS, expressed in units of Fortran INTEGERs). The C + # equivalent of MPI_Status contains 4 C ints and a size_t. + OMPI_FORTRAN_STATUS_SIZE=0 + AC_MSG_CHECKING([for the value of MPI_STATUS_SIZE]) + bytes=`expr 4 \* $ac_cv_sizeof_int + $ac_cv_sizeof_size_t` + num_integers=`expr $bytes / $ac_cv_sizeof_int` + sanity=`expr $num_integers \* $ac_cv_sizeof_int` + AS_IF([test "$sanity" != "$bytes"], + [AC_MSG_RESULT([unknown!]) + AC_MSG_WARN([WARNING: Size of C int: $ac_cv_sizeof_int]) + AC_MSG_WARN([WARNING: Size of C size_t: $ac_cv_sizeof_size_t]) + AC_MSG_WARN([WARNING: Size of Fortran INTEGER: $OMPI_SIZEOF_FORTRAN_INTEGER]) + AC_MSG_WARN([Could not make this work out evenly...!]) + AC_MSG_ERROR([Cannot continue])]) + OMPI_FORTRAN_STATUS_SIZE=$num_integers + AC_MSG_RESULT([$OMPI_FORTRAN_STATUS_SIZE Fortran INTEGERs]) + AC_SUBST(OMPI_FORTRAN_STATUS_SIZE) + + # Setup for the compilers that don't support ignore TKR functionality + OPAL_UNIQ(OMPI_FORTRAN_IKINDS) + AC_SUBST(OMPI_FORTRAN_IKINDS) + OPAL_UNIQ(OMPI_FORTRAN_RKINDS) + AC_SUBST(OMPI_FORTRAN_RKINDS) + OPAL_UNIQ(OMPI_FORTRAN_CKINDS) + AC_SUBST(OMPI_FORTRAN_CKINDS) + + # We can't use C_INTxx_T KIND values in mpif.h because many + # existing MPI Fortran applications are of the form: + # + # program main + # implicit none + # include 'mpif.h' + # + # ...and you can't have a "use..." statement before that (to get + # the Fortran/C interop C_INTxx_T KIND values). So figure out + # those KIND values here and just substitue them in via + # AC_DEFINE's. Kinda gross, but there you are. :-\ + OMPI_FORTRAN_GET_KIND_VALUE([C_INT16_T], 4, [OMPI_FORTRAN_C_INT16_T_KIND]) + OMPI_FORTRAN_GET_KIND_VALUE([C_INT32_T], 9, [OMPI_FORTRAN_C_INT32_T_KIND]) + OMPI_FORTRAN_GET_KIND_VALUE([C_INT64_T], 18, [OMPI_FORTRAN_C_INT64_T_KIND]) + + #-------------------------------------------------------- + # Fortran mpif.h MPI bindings + #-------------------------------------------------------- + + AC_MSG_CHECKING([if building Fortran mpif.h bindings]) + AS_IF([test $ompi_fortran_happy -eq 1], + [OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_MPIFH_BINDINGS + AC_MSG_RESULT([yes])], + [OMPI_TRY_FORTRAN_BINDINGS=$OMPI_FORTRAN_NO_BINDINGS + AC_MSG_RESULT([no])]) + + # "INTERFACE" is needed for MPI_SIZEOF + AS_IF([test $ompi_fortran_happy -eq 1], + [OMPI_FORTRAN_CHECK_INTERFACE( + [OMPI_FORTRAN_HAVE_INTERFACE=1], + [OMPI_FORTRAN_HAVE_INTERFACE=0])]) + AC_SUBST(OMPI_FORTRAN_HAVE_INTERFACE) + + # The iso_fortran_env module is needed for MPI_SIZEOF + AS_IF([test $ompi_fortran_happy -eq 1], + [OMPI_FORTRAN_CHECK_ISO_FORTRAN_ENV( + [OMPI_FORTRAN_HAVE_ISO_FORTRAN_ENV=1], + [OMPI_FORTRAN_HAVE_ISO_FORTRAN_ENV=0])]) + AC_SUBST(OMPI_FORTRAN_HAVE_ISO_FORTRAN_ENV) + + # Ensure that the fortran compiler supports STORAGE_SIZE for + # enough relevant types. + AS_IF([test $ompi_fortran_happy -eq 1], + [OMPI_FORTRAN_CHECK_STORAGE_SIZE( + [OMPI_FORTRAN_HAVE_STORAGE_SIZE=1], + [OMPI_FORTRAN_HAVE_STORAGE_SIZE=0])]) + AC_SUBST(OMPI_FORTRAN_HAVE_STORAGE_SIZE) + + # We need INTERFACE, ISO_FORTRAN_ENV, and STORAGE_SIZE() support + # to build MPI_SIZEOF support + AS_IF([test $ompi_fortran_happy -eq 1 && \ + test $OMPI_FORTRAN_HAVE_INTERFACE -eq 1 && \ + test $OMPI_FORTRAN_HAVE_ISO_FORTRAN_ENV -eq 1 && \ + test $OMPI_FORTRAN_HAVE_STORAGE_SIZE -eq 1], + [OMPI_FORTRAN_BUILD_SIZEOF=1], + [OMPI_FORTRAN_BUILD_SIZEOF=0]) + AC_SUBST(OMPI_FORTRAN_BUILD_SIZEOF) + + #-------------------------------------------- + # Fortran use mpi or use mpi_f08 MPI bindings + #-------------------------------------------- + + AS_IF([test $ompi_fortran_happy -eq 1 && \ + test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPI_BINDINGS], + [ # Look for the fortran module compiler flag + OMPI_FORTRAN_FIND_MODULE_INCLUDE_FLAG([], + [AC_MSG_WARN([*** Could not determine the fortran compiler flag to indicate where modules reside]) + AC_MSG_ERROR([*** Cannot continue])]) + + # Look for ignore TKR syntax + OMPI_FORTRAN_CHECK_IGNORE_TKR([OMPI_FORTRAN_HAVE_IGNORE_TKR=1]) + ]) + + # If we got here, we can build the mpi module if it was requested. + # Decide whether to build the ignore TKR version or the + # non-ignore-TKR/legacy version. + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPI_BINDINGS && \ + test $ompi_fortran_happy -eq 1], + [OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS + AS_IF([test $OMPI_FORTRAN_HAVE_IGNORE_TKR -eq 1], + [OMPI_FORTRAN_USEMPI_DIR=mpi/fortran/use-mpi-ignore-tkr + OMPI_FORTRAN_USEMPI_LIB=-l${with_libmpi_name}_usempi_ignore_tkr], + [OMPI_FORTRAN_USEMPI_DIR=mpi/fortran/use-mpi-tkr + OMPI_FORTRAN_USEMPI_LIB=-l${with_libmpi_name}_usempi]) + ]) + + OMPI_FORTRAN_HAVE_ISO_C_BINDING=0 + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPI_BINDINGS && \ + test $ompi_fortran_happy -eq 1], + [OMPI_FORTRAN_CHECK_ISO_C_BINDING( + [OMPI_FORTRAN_HAVE_ISO_C_BINDING=1], + [OMPI_FORTRAN_HAVE_ISO_C_BINDING=0])]) + + AC_MSG_CHECKING([if building Fortran 'use mpi' bindings]) + AS_IF([test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPI_BINDINGS], + [AC_MSG_RESULT([yes])], + [OMPI_TRY_FORTRAN_BINDINGS=$OMPI_FORTRAN_MPIFH_BINDINGS + AC_MSG_RESULT([no])]) + + #--------------------------------- + # Fortran use mpi_f08 MPI bindings + #--------------------------------- + + # If we got all the stuff from above, then also look for the new + # F08 syntax that we can use for the use_mpif08 module. + + # We need to have ignore TKR functionality to build the mpi_f08 + # module + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \ + test $OMPI_FORTRAN_HAVE_IGNORE_TKR -eq 1], + [OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPIF08_BINDINGS + OMPI_FORTRAN_F08_PREDECL=$OMPI_FORTRAN_IGNORE_TKR_PREDECL + OMPI_FORTRAN_F08_TYPE=$OMPI_FORTRAN_IGNORE_TKR_TYPE + ]) + + # The overall "_BIND_C" variable will be set to 1 if we have all + # the necessary forms of BIND(C) + OMPI_FORTRAN_HAVE_BIND_C=0 + + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \ + test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS], + [ # If we don't have ISO C bindings, we won't build mpi_f08 at all + AS_IF([test "$OMPI_FORTRAN_HAVE_ISO_C_BINDING" -eq 0], + [OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS])]) + + OMPI_FORTRAN_HAVE_BIND_C_SUB=0 + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \ + test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS], + [ # If we don't have SUBROUTINE BIND(C), we won't build mpi_f08 at all + OMPI_FORTRAN_CHECK_BIND_C_SUB( + [OMPI_FORTRAN_HAVE_BIND_C_SUB=1], + [OMPI_FORTRAN_HAVE_BIND_C_SUB=0 + OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS])]) + + OMPI_FORTRAN_HAVE_BIND_C_TYPE=0 + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \ + test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS], + [ # If we don't have TYPE, BIND(C), we won't build mpi_f08 at all + OMPI_FORTRAN_CHECK_BIND_C_TYPE( + [OMPI_FORTRAN_HAVE_BIND_C_TYPE=1], + [OMPI_FORTRAN_HAVE_BIND_C_TYPE=0 + OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS])]) + + # Per discussion on the devel list starting here: + # http://www.open-mpi.org/community/lists/devel/2014/01/13799.php + # we need a new litmus test to disqualify older Fortran compilers + # (e.g., Pathscale 4.0.12) that *seem* to support all the Right + # Things, but a) do not support BIND(C, name="super_long_name") or + # b) run into an internal error when compiling our mpi_f08 module. + # Testing for b) is sketchy at best. But OMPI has some BIND(C) + # names that are >32 characters, and the same compilers that + # exhibit b) also seem to not support BIND(C) names that are >32 + # characters (i.e., a)). Hence, the following BIND(C) test checks + # to ensure that BIND(C, name="foo") works, where "foo" is + # actually a name >32 characters. + OMPI_FORTRAN_HAVE_BIND_C_TYPE_NAME=0 + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \ + test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS], + [ # If we don't have TYPE, BIND(C, name="foo"), we won't build mpi_f08 at all + OMPI_FORTRAN_CHECK_BIND_C_TYPE_NAME( + [ # If we got here, we have all the required forms of + # BIND(C), so set the top-level _BIND_C variable to 1. + OMPI_FORTRAN_HAVE_BIND_C=1 + OMPI_FORTRAN_HAVE_BIND_C_TYPE_NAME=1], + [OMPI_FORTRAN_HAVE_BIND_C_TYPE_NAME=0 + OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS])]) + + # Per https://svn.open-mpi.org/trac/ompi/ticket/4590, if the + # Fortran compiler doesn't support PROCEDURE in the way we + # want/need, disable the mpi_f08 module. + OMPI_FORTRAN_HAVE_PROCEDURE=0 + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \ + test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS], + [ # Does the compiler support "procedure" + OMPI_FORTRAN_CHECK_PROCEDURE( + [OMPI_FORTRAN_HAVE_PROCEDURE=1], + [OMPI_FORTRAN_HAVE_PROCEDURE=0 + OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS])]) + + # Per https://github.com/open-mpi/ompi/issues/857, if the Fortran + # compiler doesn't properly support "USE ... ONLY" notation, + # disable the mpi_f08 module. + OMPI_FORTRAN_HAVE_USE_ONLY=0 + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \ + test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS], + [ # Does the compiler support "USE ... ONLY" + OMPI_FORTRAN_CHECK_USE_ONLY( + [OMPI_FORTRAN_HAVE_USE_ONLY=1], + [OMPI_FORTRAN_HAVE_USE_ONLY=0 + OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS])]) + + OMPI_FORTRAN_HAVE_OPTIONAL_ARGS=0 + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \ + test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS], + [ # Does the compiler have optional arguments? + OMPI_FORTRAN_CHECK_OPTIONAL_ARGS( + [OMPI_FORTRAN_HAVE_OPTIONAL_ARGS=1], + [OMPI_FORTRAN_HAVE_OPTIONAL_ARGS=0 + OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS])]) + + OMPI_FORTRAN_HAVE_C_FUNLOC=0 + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \ + test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS], + [ # Does the compiler supports c_funloc per + # TS 29113 subclause 8.1 ? + OMPI_FORTRAN_CHECK_C_FUNLOC( + [OMPI_FORTRAN_HAVE_C_FUNLOC=1], + [OMPI_FORTRAN_HAVE_C_FUNLOC=0 + OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS])]) + + OMPI_FORTRAN_HAVE_PRIVATE=0 + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \ + test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS], + [ # Does the compiler support "private" + OMPI_FORTRAN_CHECK_PRIVATE( + [OMPI_FORTRAN_HAVE_PRIVATE=1], + [OMPI_FORTRAN_HAVE_PRIVATE=0])]) + + OMPI_FORTRAN_HAVE_PROTECTED=0 + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \ + test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS], + [ # Does the compiler support "protected" + OMPI_FORTRAN_CHECK_PROTECTED( + [OMPI_FORTRAN_HAVE_PROTECTED=1], + [OMPI_FORTRAN_HAVE_PROTECTED=0])]) + + OMPI_FORTRAN_HAVE_ABSTRACT=0 + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \ + test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS], + [ # Does the compiler support "abstract" + OMPI_FORTRAN_CHECK_ABSTRACT( + [OMPI_FORTRAN_HAVE_ABSTRACT=1], + [OMPI_FORTRAN_HAVE_ABSTRACT=0])]) + + OMPI_FORTRAN_HAVE_ASYNCHRONOUS=0 + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \ + test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS], + [ # Does the compiler support "asynchronous" + OMPI_FORTRAN_CHECK_ASYNCHRONOUS( + [OMPI_FORTRAN_HAVE_ASYNCHRONOUS=1], + [OMPI_FORTRAN_HAVE_ASYNCHRONOUS=0])]) + + OMPI_FORTRAN_F08_HANDLE_SIZE=4 + OMPI_FORTRAN_F08_HANDLE_ALIGNMENT=4 + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \ + test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS], + [ # How big are derived types with a single INTEGER? + OMPI_FORTRAN_GET_SIZEOF([type, BIND(C) :: test_mpi_handle + integer :: MPI_VAL +end type test_mpi_handle], + [type(test_mpi_handle)], + [OMPI_FORTRAN_F08_HANDLE_SIZE]) + OMPI_FORTRAN_F08_GET_HANDLE_ALIGNMENT( + [type(test_mpi_handle)], + [OMPI_FORTRAN_F08_HANDLE_ALIGNMENT]) + ]) + + OMPI_FORTRAN_NEED_WRAPPER_ROUTINES=1 + OMPI_FORTRAN_F08_PREDECL='!' + OMPI_FORTRAN_F08_TYPE=real + OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK=0 + AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \ + test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS], + [ # Look for Fortran 2008 assumed rank syntax + OMPI_FORTRAN_CHECK_F08_ASSUMED_RANK( + [ # If we have assumed rank, we can build the use + # mpi_f08 module "better" + OMPI_FORTRAN_F08_PREDECL='!' + OMPI_FORTRAN_F08_TYPE='type(*), dimension(..)' + OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK=1]) + + # Which mpi_f08 implementation are we using? + # a) compiler supports BIND(C) and optional arguments + # ("good" compilers) + # b) compiler that does not support the items listed + # in b) ("bad" compilers) + + AC_MSG_CHECKING([which mpi_f08 implementation to build]) + AS_IF([test $OMPI_FORTRAN_HAVE_OPTIONAL_ARGS -eq 1], + [ # Case a) "good compiler" + OMPI_FORTRAN_NEED_WRAPPER_ROUTINES=0 + AC_MSG_RESULT(["good" compiler, no array subsections]) + ], + [ # Case b) "bad compiler" + OMPI_FORTRAN_NEED_WRAPPER_ROUTINES=1 + AC_MSG_RESULT(["bad" compiler, no array subsections]) + ]) + ]) + + # Note: the current implementation *only* has wrappers; + # there is no optimized implementation for a "good" + # compiler. I'm leaving the above logic in place for + # if we ever do the optimized/no-wrapper + # implementation, but for now, I'm just hard-wiring + # OMPI_FORTRAN_NEED_WRAPPER_ROUTINES to 1 when we're + # building the F08 wrappers. + AS_IF([test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS], + [OMPI_FORTRAN_NEED_WRAPPER_ROUTINES=1], + [OMPI_FORTRAN_NEED_WRAPPER_ROUTINES=0]) + + AC_MSG_CHECKING([if building Fortran 'use mpi_f08' bindings]) + AS_IF([test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS], + [OMPI_FORTRAN_USEMPIF08_LIB=-l${with_libmpi_name}_usempif08 + AC_MSG_RESULT([yes])], + [OMPI_TRY_FORTRAN_BINDIGS=$OMPI_FORTRAN_USEMPI_BINDINGS + AC_MSG_RESULT([no])]) + + # If Fortran bindings is requested, make sure at least one can be built + AS_IF([test $OMPI_MIN_REQUIRED_FORTRAN_BINDINGS -gt $OMPI_BUILD_FORTRAN_BINDINGS], + [AC_MSG_ERROR([Cannot build requested Fortran bindings, aborting])]) + + # ------------------- + # mpif.h final setup + # ------------------- + + # A preprocessor header file just for Fortran. We cannot use AC + # CONFIG_HEADER because it adds a /* */-style comment at the top, + # and this header file must be usable in .F90 files. :-( + AC_CONFIG_FILES([ompi/mpi/fortran/configure-fortran-output.h]) + + # Values for wrapper compilers + OMPI_FC=$FC + set dummy $OMPI_FC + OMPI_FC_ARGV0=[$]2 + AS_IF([test -n "$OMPI_FC_ARGV0"], + [BASEFC="`basename $OMPI_FC_ARGV0`" + OPAL_WHICH([$OMPI_FC_ARGV0], [OMPI_FC_ABSOLUTE])], + [OMPI_FC=none + BASEFC=none + OMPI_FC_ABSOLUTE=none]) + + AC_SUBST(OMPI_FC) + AC_SUBST(OMPI_FC_ABSOLUTE) + AC_DEFINE_UNQUOTED(OMPI_FC, ["$OMPI_FC"], [Underlying Fortran compiler]) + AC_DEFINE_UNQUOTED(OMPI_FC_ABSOLUTE, ["$OMPI_FC_ABSOLUTE"], + [Absolutey path to the underlying Fortran compiler found by configure]) + + # These go into ompi/info/param.c + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_BUILD_SIZEOF], + [$OMPI_FORTRAN_BUILD_SIZEOF], + [Whether the mpif.h interface supports the MPI_SIZEOF interface or not]) + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_HAVE_INTERFACE], + [$OMPI_FORTRAN_HAVE_INTERFACE], + [Whether the compiler supports INTERFACE or not]) + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_HAVE_ISO_FORTRAN_ENV], + [$OMPI_FORTRAN_HAVE_ISO_FORTRAN_ENV], + [Whether the compiler supports ISO_FORTRAN_ENV or not]) + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_HAVE_STORAGE_SIZE], + [$OMPI_FORTRAN_HAVE_STORAGE_SIZE], + [Whether the compiler supports STORAGE_SIZE on relevant types]) + + # This conditional is used to determine whether we compile the + # various .f90 files that contain MPI_SIZEOF implementations. + AM_CONDITIONAL([BUILD_FORTRAN_SIZEOF], + [test $OMPI_FORTRAN_BUILD_SIZEOF -eq 1]) + + # There are 2 layers to the MPI mpif.h layer. The only extra thing + # that determine mpif.h bindings is that fortran can be disabled + # by user. In such cases, we need to not build the target at all. + # One layer generates MPI_ bindings. The other layer + # generates PMPI_ bindings. The following conditions + # determine whether each (or both) these layers are built. + # + # Superceeding clause: + # - Fortran bindings should be enabled, else everything is + # disabled + # 1. MPI_ bindings are needed if: + # - Profiling is not required + # - Profiling is required but weak symbols are not supported + # 2. PMPI_ bindings are needed if profiling is required. + # + # Hence we define 2 conditionals which tell us whether each of + # these layers need to be built or NOT + + AM_CONDITIONAL(BUILD_MPI_FORTRAN_MPIFH_BINDINGS_LAYER, + [test $OMPI_PROFILING_COMPILE_SEPARATELY -eq 1 && \ + test $OMPI_BUILD_FORTRAN_BINDINGS -gt $OMPI_FORTRAN_NO_BINDINGS]) + AM_CONDITIONAL(BUILD_PMPI_FORTRAN_MPIFH_BINDINGS_LAYER, + [test $OMPI_BUILD_FORTRAN_BINDINGS -gt $OMPI_FORTRAN_NO_BINDINGS]) + AM_CONDITIONAL(OMPI_BUILD_FORTRAN_MPIFH_BINDINGS, + [test $OMPI_BUILD_FORTRAN_BINDINGS -gt $OMPI_FORTRAN_NO_BINDINGS]) + + # ------------------- + # use mpi final setup + # ------------------- + + # This goes into ompi/Makefile.am + AC_SUBST(OMPI_FORTRAN_USEMPI_DIR) + # This goes into mpifort-wrapper-data.txt + AC_SUBST(OMPI_FORTRAN_USEMPI_LIB) + + # These go into mpi-ignore-tkr-interfaces.h / mpi-ignore-tkr-file-interfaces.h + AC_SUBST(OMPI_FORTRAN_IGNORE_TKR_PREDECL) + AC_SUBST(OMPI_FORTRAN_IGNORE_TKR_TYPE) + + # These go into ompi/info/param.c + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_IGNORE_TKR_PREDECL], + ["$OMPI_FORTRAN_IGNORE_TKR_PREDECL"], + [Pre declaration for FORTRAN ignore parameter TKR behavior]) + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_IGNORE_TKR_TYPE], + [$type], + [Type declaration for FORTRAN ignore parameter TKR behavior]) + AC_DEFINE_UNQUOTED(OMPI_FORTRAN_HAVE_IGNORE_TKR, + [$OMPI_FORTRAN_HAVE_IGNORE_TKR], + [Whether the Fortran compiler supports ignore TKR functionality or not]) + + # Somewhat redundant because ompi/Makefile.am won't traverse into + # the unused "use mpi" directory, but we might as well have the + # ompi/mpi/fortran/use-mpi*/Makefile.ams be safe, too. + # True if we're building either "use mpi" bindings + AM_CONDITIONAL(OMPI_BUILD_FORTRAN_USEMPI_BINDINGS, + [test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPI_BINDINGS || \ + test $OMPI_FORTRAN_HAVE_IGNORE_TKR -eq 1]) + # True if we're building the old TKR-style bindings + AM_CONDITIONAL(OMPI_BUILD_FORTRAN_USEMPI_TKR_BINDINGS, + [test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPI_BINDINGS && \ + test $OMPI_FORTRAN_HAVE_IGNORE_TKR -eq 0]) + # True if we're building the new ignore-TKR-style bindings + AM_CONDITIONAL(OMPI_BUILD_FORTRAN_USEMPI_IGNORE_TKR_BINDINGS, + [test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPI_BINDINGS && \ + test $OMPI_FORTRAN_HAVE_IGNORE_TKR -eq 1]) + + # ------------------- + # use mpi_f08 final setup + # ------------------- + + # This goes into mpifort-wrapper-data.txt + AC_SUBST(OMPI_FORTRAN_USEMPIF08_LIB) + + # These go into interfaces/mpi-f08-interfaces-[no]bind.h (and + # mpi-f*-interfaces*.h files) + AC_SUBST(OMPI_FORTRAN_F08_PREDECL) + AC_SUBST(OMPI_FORTRAN_F08_TYPE) + + AC_SUBST(OMPI_MPI_PREFIX) + AC_SUBST(OMPI_MPI_BIND_PREFIX) + AC_SUBST(OMPI_F08_SUFFIX) + AC_SUBST(OMPI_F_SUFFIX) + + # This is used to generate weak symbols (or not) in + # ompi/mpi/fortran/mpif-h/_f.c, and + # ompi/mpi/fortran/configure-fortran-output.h. + AC_SUBST(OMPI_FORTRAN_NEED_WRAPPER_ROUTINES) + AC_DEFINE_UNQUOTED(OMPI_FORTRAN_NEED_WRAPPER_ROUTINES, + [$OMPI_FORTRAN_NEED_WRAPPER_ROUTINES], + [Whether the mpi_f08 implementation is using wrapper routines ("bad" Fortran compiler) or weak symbols ("good" Fortran compiler) for the F08 interface definition implementations]) + + AC_DEFINE_UNQUOTED(OMPI_FORTRAN_F08_HANDLE_SIZE, + $OMPI_FORTRAN_F08_HANDLE_SIZE, + [How many bytes the mpi_f08 TYPE(MPI_) handles will be]) + + AC_DEFINE_UNQUOTED(OMPI_FORTRAN_F08_HANDLE_ALIGNMENT, + $OMPI_FORTRAN_F08_HANDLE_ALIGNMENT, + [How many bytes the mpi_f08 TYPE(MPI_) handles will be aligned to]) + + # These go into ompi/info/param.c + AC_DEFINE_UNQUOTED(OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK, + [$OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK], + [For ompi_info: Whether the Fortran compiler supports the Fortran 2008 "assumed rank" syntax or not]) + AC_DEFINE_UNQUOTED(OMPI_FORTRAN_HAVE_BIND_C, + [$OMPI_FORTRAN_HAVE_BIND_C], + [For ompi_info: Whether the compiler supports all forms of BIND(C) that we need]) + AC_SUBST(OMPI_FORTRAN_HAVE_ISO_C_BINDING) + AC_DEFINE_UNQUOTED(OMPI_FORTRAN_HAVE_ISO_C_BINDING, + [$OMPI_FORTRAN_HAVE_ISO_C_BINDING], + [For ompi_info: Whether the compiler supports ISO_C_BINDING or not]) + AC_DEFINE_UNQUOTED(OMPI_FORTRAN_HAVE_BIND_C_SUB, + [$OMPI_FORTRAN_HAVE_BIND_C_SUB], + [For ompi_info: Whether the compiler supports SUBROUTINE ... BIND(C) or not]) + AC_DEFINE_UNQUOTED(OMPI_FORTRAN_HAVE_BIND_C_TYPE, + [$OMPI_FORTRAN_HAVE_BIND_C_TYPE], + [For ompi_info: Whether the compiler supports TYPE, BIND(C) or not]) + AC_DEFINE_UNQUOTED(OMPI_FORTRAN_HAVE_BIND_C_TYPE_NAME, + [$OMPI_FORTRAN_HAVE_BIND_C_TYPE_NAME], + [For ompi_info: Whether the compiler supports TYPE, BIND(C, NAME="name") or not]) + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_HAVE_OPTIONAL_ARGS], + [$OMPI_FORTRAN_HAVE_OPTIONAL_ARGS], + [For ompi_info: whether the Fortran compiler supports optional arguments or not]) + + # For configure-fortran-output.h, mpi-f08-types.F90 (and ompi_info) + AC_SUBST([OMPI_FORTRAN_HAVE_PRIVATE]) + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_HAVE_PRIVATE], + [$OMPI_FORTRAN_HAVE_PRIVATE], + [For mpi-f08-types.f90 and ompi_info: whether the compiler supports the "private" keyword or not (used in MPI_Status)]) + + # For configure-fortran-output.h, mpi-f08-types.F90 (and ompi_info) + AC_SUBST([OMPI_FORTRAN_HAVE_PROTECTED]) + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_HAVE_PROTECTED], + [$OMPI_FORTRAN_HAVE_PROTECTED], + [For mpi-f08-types.f90 and .F90 and ompi_info: whether the compiler supports the "protected" keyword or not]) + + # For configure-fortran-output.h, mpi-f08-interfaces-callbacks.F90 + # (and ompi_info) + AC_SUBST([OMPI_FORTRAN_HAVE_ABSTRACT]) + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_HAVE_ABSTRACT], + [$OMPI_FORTRAN_HAVE_ABSTRACT], + [For mpi-f08-interfaces-callbacks.f90 and ompi_info: whether the compiler supports the "abstract" keyword or not]) + + # For configure-fortran-output.h, various files in + # ompi/mpi/fortran/use-mpi-f08/*.F90 and *.h files (and ompi_info) + AC_SUBST([OMPI_FORTRAN_HAVE_ASYNCHRONOUS]) + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_HAVE_ASYNCHRONOUS], + [$OMPI_FORTRAN_HAVE_ASYNCHRONOUS], + [For ompi/mpi/fortran/use-mpi-f08/blah.F90 and blah.h and ompi_info: whether the compiler supports the "asynchronous" keyword or not]) + + # For configure-fortran-output.h, various files in + # ompi/mpi/fortran/use-mpi-f08/*.F90 and *.h files (and ompi_info) + AC_SUBST([OMPI_FORTRAN_HAVE_PROCEDURE]) + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_HAVE_PROCEDURE], + [$OMPI_FORTRAN_HAVE_PROCEDURE], + [For ompi/mpi/fortran/use-mpi-f08/blah.F90 and blah.h and ompi_info: whether the compiler supports the "procedure" keyword or not]) + + # For configure-fortran-output.h, various files in + # ompi/mpi/fortran/use-mpi-f08/*.F90 and *.h files (and ompi_info) + AC_SUBST([OMPI_FORTRAN_HAVE_USE_ONLY]) + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_HAVE_USE_ONLY], + [$OMPI_FORTRAN_HAVE_USE_ONLY], + [For ompi/mpi/fortran/use-mpi-f08/blah.F90 and blah.h and ompi_info: whether the compiler supports "USE ... ONLY" notation properly or not]) + + # For configure-fortran-output.h, various files in + # ompi/mpi/fortran/use-mpi-f08/*.F90 and *.h files (and ompi_info) + AC_SUBST([OMPI_FORTRAN_HAVE_C_FUNLOC]) + AC_DEFINE_UNQUOTED([OMPI_FORTRAN_HAVE_C_FUNLOC], + [$OMPI_FORTRAN_HAVE_C_FUNLOC], + [For ompi/mpi/fortran/use-mpi-f08/blah.F90 and blah.h and ompi_info: whether the compiler supports c_funloc or not]) + + # For configure-fortran-output.h + AC_SUBST(OMPI_FORTRAN_HAVE_BIND_C) + + # Somewhat redundant because ompi/Makefile.am won't traverse into + # ompi/mpi/fortran/use-mpi-f08 if it's not to be built, but we + # might as well have ompi/mpi/fortran/use-mpi-f08/Makefile.am be + # safe, too. + AM_CONDITIONAL(OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS, + [test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS]) + + AC_DEFINE_UNQUOTED(OMPI_BUILD_FORTRAN_BINDINGS, + $OMPI_BUILD_FORTRAN_BINDINGS, + [The level of fortran bindings to be built]) +]) diff --git a/config/ompi_setup_mpi_profiling.m4 b/config/ompi_setup_mpi_profiling.m4 new file mode 100644 index 00000000..2fc2ba1f --- /dev/null +++ b/config/ompi_setup_mpi_profiling.m4 @@ -0,0 +1,50 @@ +# -*- shell-script -*- +# +# Copyright (c) 2004-2009 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2007 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2006-2008 Sun Microsystems, Inc. All rights reserved. +# Copyright (c) 2006-2007 Los Alamos National Security, LLC. All rights +# reserved. +# Copyright (c) 2009 Oak Ridge National Labs. All rights reserved. +# Copyright (c) 2015 Research Organization for Information Science +# and Technology (RIST). All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# OMPI-specific configuration + +AC_DEFUN([OMPI_SETUP_MPI_PROFILING],[ + # There are 2 layers to the MPI Language binidings One layer + # generates MPI_* bindings. The other layer generates PMPI_* + # bindings. The following conditions determine whether each (or + # both) these layers are built. + # 1. MPI_* bindings are needed if: + # - Profiling is not required + # - Profiling is required but weak symbols are not + # supported + # 2. PMPI_* bindings are needed if profiling is required. Hence we + # define 2 conditionals which tell us whether each of these layers + # need to be built or NOT + # + + AM_CONDITIONAL(BUILD_MPI_BINDINGS_LAYER, + test "$OMPI_PROFILING_COMPILE_SEPARATELY" = 1) + + AM_CONDITIONAL(COMPILE_PROFILING_SEPARATELY, + test "$OMPI_PROFILING_COMPILE_SEPARATELY" = 1) + AC_DEFINE_UNQUOTED(OPAL_HAVE_WEAK_SYMBOLS, $OPAL_C_HAVE_WEAK_SYMBOLS, + [Whether we have weak symbols or not]) +]) diff --git a/config/opal_case_sensitive_fs_setup.m4 b/config/opal_case_sensitive_fs_setup.m4 new file mode 100644 index 00000000..d6592e10 --- /dev/null +++ b/config/opal_case_sensitive_fs_setup.m4 @@ -0,0 +1,103 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +AC_DEFUN([OPAL_CASE_SENSITIVE_FS_SETUP],[ +# +# Arguments: none +# +# Dependencies: None +# +# See if we are on a case sensitive filesystem. Some filesystems +# (like HFS+ on MacOS X and MS Windows) are not case sensitive - opalcc +# and opalCC are the same file. +# +# Sets prefix_OS_HAVE_CASE_SENSITIVE_FS to 1 if filesystem is case +# sensitive (ie, mpicc and mpiCC will be different files) or 0 if +# filesystem is not case sensitive (ie, mpicc and mpiCC will be +# the same file). +# +# + +have_cs_fs=1 + +AC_MSG_CHECKING([if build filesystem is case sensitive]) +cat > conf_fs_test.$$ < CONF_FS_TEST.$$ < + /* Check for the longest available __attribute__ (since gcc-2.3) */ + struct foo { + char a; + int x[2] __attribute__ ((__packed__)); + }; + ], + [], + [opal_cv___attribute__=1], + [opal_cv___attribute__=0], + ) + + if test "$opal_cv___attribute__" = "1" ; then + AC_TRY_COMPILE( + [#include + /* Check for the longest available __attribute__ (since gcc-2.3) */ + struct foo { + char a; + int x[2] __attribute__ ((__packed__)); + }; + ], + [], + [opal_cv___attribute__=1], + [opal_cv___attribute__=0], + ) + fi + ]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE, [$opal_cv___attribute__], + [Whether your compiler has __attribute__ or not]) + +# +# Now that we know the compiler support __attribute__ let's check which kind of +# attributed are supported. +# + if test "$opal_cv___attribute__" = "0" ; then + AC_MSG_RESULT([no]) + opal_cv___attribute__aligned=0 + opal_cv___attribute__always_inline=0 + opal_cv___attribute__cold=0 + opal_cv___attribute__const=0 + opal_cv___attribute__deprecated=0 + opal_cv___attribute__deprecated_argument=0 + opal_cv___attribute__format=0 + opal_cv___attribute__format_funcptr=0 + opal_cv___attribute__hot=0 + opal_cv___attribute__malloc=0 + opal_cv___attribute__may_alias=0 + opal_cv___attribute__no_instrument_function=0 + opal_cv___attribute__noinline=0 + opal_cv___attribute__nonnull=0 + opal_cv___attribute__noreturn=0 + opal_cv___attribute__noreturn_funcptr=0 + opal_cv___attribute__packed=0 + opal_cv___attribute__pure=0 + opal_cv___attribute__sentinel=0 + opal_cv___attribute__unused=0 + opal_cv___attribute__visibility=0 + opal_cv___attribute__warn_unused_result=0 + opal_cv___attribute__weak_alias=0 + opal_cv___attribute__destructor=0 + opal_cv___attribute__optnone=0 + else + AC_MSG_RESULT([yes]) + + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([aligned], + [struct foo { char text[4]; } __attribute__ ((__aligned__(8)));], + [], + []) + + # + # Ignored by PGI-6.2.5; -- recognized by output-parser + # + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([always_inline], + [int foo (int arg) __attribute__ ((__always_inline__));], + [], + []) + + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([cold], + [ + int foo(int arg1, int arg2) __attribute__ ((__cold__)); + int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } + ], + [], + []) + + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([const], + [ + int foo(int arg1, int arg2) __attribute__ ((__const__)); + int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } + ], + [], + []) + + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([deprecated], + [ + int foo(int arg1, int arg2) __attribute__ ((__deprecated__)); + int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } + ], + [], + []) + + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([deprecated_argument], + [ + int foo(int arg1, int arg2) __attribute__ ((__deprecated__("compiler allows argument"))); + int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } + ], + [], + []) + + ATTRIBUTE_CFLAGS= + case "$opal_c_vendor" in + gnu) + ATTRIBUTE_CFLAGS="-Wall" + ;; + intel) + # we want specifically the warning on format string conversion + ATTRIBUTE_CFLAGS="-we181" + ;; + esac + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([format], + [ + int this_printf (void *my_object, const char *my_format, ...) __attribute__ ((__format__ (__printf__, 2, 3))); + ], + [ + static int usage (int * argument); + extern int this_printf (int arg1, const char *my_format, ...) __attribute__ ((__format__ (__printf__, 2, 3))); + + static int usage (int * argument) { + return this_printf (*argument, "%d", argument); /* This should produce a format warning */ + } + /* The autoconf-generated main-function is int main(), which produces a warning by itself */ + int main(void); + ], + [$ATTRIBUTE_CFLAGS]) + + ATTRIBUTE_CFLAGS= + case "$opal_c_vendor" in + gnu) + ATTRIBUTE_CFLAGS="-Wall" + ;; + intel) + # we want specifically the warning on format string conversion + ATTRIBUTE_CFLAGS="-we181" + ;; + esac + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([format_funcptr], + [ + int (*this_printf)(void *my_object, const char *my_format, ...) __attribute__ ((__format__ (__printf__, 2, 3))); + ], + [ + static int usage (int * argument); + extern int (*this_printf) (int arg1, const char *my_format, ...) __attribute__ ((__format__ (__printf__, 2, 3))); + + static int usage (int * argument) { + return (*this_printf) (*argument, "%d", argument); /* This should produce a format warning */ + } + /* The autoconf-generated main-function is int main(), which produces a warning by itself */ + int main(void); + ], + [$ATTRIBUTE_CFLAGS]) + + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([hot], + [ + int foo(int arg1, int arg2) __attribute__ ((__hot__)); + int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } + ], + [], + []) + + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([malloc], + [ +#ifdef HAVE_STDLIB_H +# include +#endif + int * foo(int arg1) __attribute__ ((__malloc__)); + int * foo(int arg1) { return (int*) malloc(arg1); } + ], + [], + []) + + + # + # Attribute may_alias: No suitable cross-check available, that works for non-supporting compilers + # Ignored by intel-9.1.045 -- turn off with -wd1292 + # Ignored by PGI-6.2.5; ignore not detected due to missing cross-check + # + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([may_alias], + [int * p_value __attribute__ ((__may_alias__));], + [], + []) + + + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([no_instrument_function], + [int * foo(int arg1) __attribute__ ((__no_instrument_function__));], + [], + []) + + + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([noinline], + [ + int foo(int arg1, int arg2) __attribute__ ((__noinline__)); + int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } + static int bar(int arg1, int arg2) __attribute__ ((__noinline__)); + static int bar(int arg1, int arg2) { return arg1 * arg2 + arg1; } + ], + [], + []) + + # + # Attribute nonnull: + # Ignored by intel-compiler 9.1.045 -- recognized by cross-check + # Ignored by PGI-6.2.5 (pgCC) -- recognized by cross-check + # + ATTRIBUTE_CFLAGS= + case "$opal_c_vendor" in + gnu) + ATTRIBUTE_CFLAGS="-Wall" + ;; + intel) + # we do not want to get ignored attributes warnings, but rather real warnings + ATTRIBUTE_CFLAGS="-wd1292" + ;; + esac + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([nonnull], + [ + int square(int *arg) __attribute__ ((__nonnull__)); + int square(int *arg) { return *arg; } + ], + [ + static int usage(int * argument); + int square(int * argument) __attribute__ ((__nonnull__)); + int square(int * argument) { return (*argument) * (*argument); } + + static int usage(int * argument) { + return square( ((void*)0) ); /* This should produce an argument must be nonnull warning */ + } + /* The autoconf-generated main-function is int main(), which produces a warning by itself */ + int main(void); + ], + [$ATTRIBUTE_CFLAGS]) + + + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([noreturn], + [ +#ifdef HAVE_UNISTD_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif + void fatal(int arg1) __attribute__ ((__noreturn__)); + void fatal(int arg1) { exit(arg1); } + ], + [], + []) + + + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([noreturn_funcptr], + [ +#ifdef HAVE_UNISTD_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif + extern void (*fatal_exit)(int arg1) __attribute__ ((__noreturn__)); + void fatal(int arg1) { fatal_exit (arg1); } + ], + [], + [$ATTRIBUTE_CFLAGS]) + + + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([packed], + [ + struct foo { + char a; + int x[2] __attribute__ ((__packed__)); + }; + ], + [], + []) + + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([pure], + [ + int square(int arg) __attribute__ ((__pure__)); + int square(int arg) { return arg * arg; } + ], + [], + []) + + # + # Attribute sentinel: + # Ignored by the intel-9.1.045 -- recognized by cross-check + # intel-10.0beta works fine + # Ignored by PGI-6.2.5 (pgCC) -- recognized by output-parser and cross-check + # Ignored by pathcc-2.2.1 -- recognized by cross-check (through grep ignore) + # + ATTRIBUTE_CFLAGS= + case "$opal_c_vendor" in + gnu) + ATTRIBUTE_CFLAGS="-Wall" + ;; + intel) + # we do not want to get ignored attributes warnings + ATTRIBUTE_CFLAGS="-wd1292" + ;; + esac + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([sentinel], + [ + int my_execlp(const char * file, const char *arg, ...) __attribute__ ((__sentinel__)); + ], + [ + static int usage(int * argument); + int my_execlp(const char * file, const char *arg, ...) __attribute__ ((__sentinel__)); + + static int usage(int * argument) { + void * last_arg_should_be_null = argument; + return my_execlp ("lala", "/home/there", last_arg_should_be_null); /* This should produce a warning */ + } + /* The autoconf-generated main-function is int main(), which produces a warning by itself */ + int main(void); + ], + [$ATTRIBUTE_CFLAGS]) + + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([unused], + [ + int square(int arg1 __attribute__ ((__unused__)), int arg2); + int square(int arg1, int arg2) { return arg2; } + ], + [], + []) + + + # + # Ignored by PGI-6.2.5 (pgCC) -- recognized by the output-parser + # + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([visibility], + [ + int square(int arg1) __attribute__ ((__visibility__("hidden"))); + ], + [], + []) + + + # + # Attribute warn_unused_result: + # Ignored by the intel-compiler 9.1.045 -- recognized by cross-check + # Ignored by pathcc-2.2.1 -- recognized by cross-check (through grep ignore) + # + ATTRIBUTE_CFLAGS= + case "$opal_c_vendor" in + gnu) + ATTRIBUTE_CFLAGS="-Wall" + ;; + intel) + # we do not want to get ignored attributes warnings + ATTRIBUTE_CFLAGS="-wd1292" + ;; + esac + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([warn_unused_result], + [ + int foo(int arg) __attribute__ ((__warn_unused_result__)); + int foo(int arg) { return arg + 3; } + ], + [ + static int usage(int * argument); + int foo(int arg) __attribute__ ((__warn_unused_result__)); + + int foo(int arg) { return arg + 3; } + static int usage(int * argument) { + foo (*argument); /* Should produce an unused result warning */ + return 0; + } + + /* The autoconf-generated main-function is int main(), which produces a warning by itself */ + int main(void); + ], + [$ATTRIBUTE_CFLAGS]) + + + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([weak_alias], + [ + int foo(int arg); + int foo(int arg) { return arg + 3; } + int foo2(int arg) __attribute__ ((__weak__, __alias__("foo"))); + ], + [], + []) + + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([destructor], + [ + void foo(void) __attribute__ ((__destructor__)); + void foo(void) { return ; } + ], + [], + []) + + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([optnone], + [ + void __attribute__ ((__optnone__)) foo(void); + void foo(void) { return ; } + ], + [], + []) + + _OPAL_CHECK_SPECIFIC_ATTRIBUTE([extension], + [ + int i = __extension__ 3; + ], + [], + []) + fi + + # Now that all the values are set, define them + + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_ALIGNED, [$opal_cv___attribute__aligned], + [Whether your compiler has __attribute__ aligned or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_ALWAYS_INLINE, [$opal_cv___attribute__always_inline], + [Whether your compiler has __attribute__ always_inline or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_COLD, [$opal_cv___attribute__cold], + [Whether your compiler has __attribute__ cold or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_CONST, [$opal_cv___attribute__const], + [Whether your compiler has __attribute__ const or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_DEPRECATED, [$opal_cv___attribute__deprecated], + [Whether your compiler has __attribute__ deprecated or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_DEPRECATED_ARGUMENT, [$opal_cv___attribute__deprecated_argument], + [Whether your compiler has __attribute__ deprecated with optional argument]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_FORMAT, [$opal_cv___attribute__format], + [Whether your compiler has __attribute__ format or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_FORMAT_FUNCPTR, [$opal_cv___attribute__format_funcptr], + [Whether your compiler has __attribute__ format and it works on function pointers]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_HOT, [$opal_cv___attribute__hot], + [Whether your compiler has __attribute__ hot or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_MALLOC, [$opal_cv___attribute__malloc], + [Whether your compiler has __attribute__ malloc or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_MAY_ALIAS, [$opal_cv___attribute__may_alias], + [Whether your compiler has __attribute__ may_alias or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_NO_INSTRUMENT_FUNCTION, [$opal_cv___attribute__no_instrument_function], + [Whether your compiler has __attribute__ no_instrument_function or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_NOINLINE, [$opal_cv___attribute__noinline], + [Whether your compiler has __attribute__ noinline or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_NONNULL, [$opal_cv___attribute__nonnull], + [Whether your compiler has __attribute__ nonnull or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_NORETURN, [$opal_cv___attribute__noreturn], + [Whether your compiler has __attribute__ noreturn or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_NORETURN_FUNCPTR, [$opal_cv___attribute__noreturn_funcptr], + [Whether your compiler has __attribute__ noreturn and it works on function pointers]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_PACKED, [$opal_cv___attribute__packed], + [Whether your compiler has __attribute__ packed or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_PURE, [$opal_cv___attribute__pure], + [Whether your compiler has __attribute__ pure or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_SENTINEL, [$opal_cv___attribute__sentinel], + [Whether your compiler has __attribute__ sentinel or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_UNUSED, [$opal_cv___attribute__unused], + [Whether your compiler has __attribute__ unused or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_VISIBILITY, [$opal_cv___attribute__visibility], + [Whether your compiler has __attribute__ visibility or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_WARN_UNUSED_RESULT, [$opal_cv___attribute__warn_unused_result], + [Whether your compiler has __attribute__ warn unused result or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_WEAK_ALIAS, [$opal_cv___attribute__weak_alias], + [Whether your compiler has __attribute__ weak alias or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_DESTRUCTOR, [$opal_cv___attribute__destructor], + [Whether your compiler has __attribute__ destructor or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_OPTNONE, [$opal_cv___attribute__optnone], + [Whether your compiler has __attribute__ optnone or not]) + AC_DEFINE_UNQUOTED(OPAL_HAVE_ATTRIBUTE_EXTENSION, [$opal_cv___attribute__extension], + [Whether your compiler has __attribute__ extension or not]) +]) diff --git a/config/opal_check_broken_qsort.m4 b/config/opal_check_broken_qsort.m4 new file mode 100644 index 00000000..7d70c6a0 --- /dev/null +++ b/config/opal_check_broken_qsort.m4 @@ -0,0 +1,54 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. +dnl Copyright (c) 2014 Intel, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl +dnl There was some mentioning of broken qsort happened for Solaris that could +dnl cause qsort to return a bad pointer which could cause some badness. +dnl The problem should have been corrected with these patches from SunSolve. +dnl Solaris 10 should be free from this problem. +dnl +dnl 5.8_sparc #108827-27 or later +dnl 5.8_x86 #108828-28 or later +dnl 5.9_sparc #112874-20 or later +dnl 5.9_x86 #114432-07 or later +dnl +dnl For users who could not patch their systems or are convinced that their +dnl native qsort is broken, they could specify this configure flag to use +dnl the opal_qsort instead. + +# check for broken qsort +# OPAL_CHECK_BROKEN_QSORT(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +AC_DEFUN([OPAL_CHECK_BROKEN_QSORT],[ + AC_ARG_WITH([broken-qsort], + [AC_HELP_STRING([--with-broken-qsort], + [Build with FreeBSD qsort instead of native qsort (default: no)])]) + AC_MSG_CHECKING([for broken qsort]) + + if test "$with_broken_qsort" = "yes"; then + result="yes" + define_result=1 + else + result="no" + define_result=0 + fi + AC_MSG_RESULT([$result]) + AC_DEFINE_UNQUOTED([OPAL_HAVE_BROKEN_QSORT], [$define_result], + [whether qsort is broken or not]) +]) diff --git a/config/opal_check_cma.m4 b/config/opal_check_cma.m4 new file mode 100644 index 00000000..013f3947 --- /dev/null +++ b/config/opal_check_cma.m4 @@ -0,0 +1,136 @@ +# -*- shell-script -*- +# +# Copyright (c) 2009 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2009-2016 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2010-2012 IBM Corporation. All rights reserved. +# Copyright (c) 2013-2016 Los Alamos National Security, LLC. All rights +# reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# OPAL_CHECK_CMA(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +# check if cma support is wanted. +AC_DEFUN([OPAL_CHECK_CMA],[ + AC_ARG_WITH([cma], + [AC_HELP_STRING([--with-cma], + [Build Cross Memory Attach support (default: autodetect)])]) + + if test "x$with_cma" = "xno" ; then + opal_check_cma_happy=0 + fi + + # We only need to do the back-end test once + if test -z "$opal_check_cma_happy" ; then + OPAL_CHECK_CMA_BACKEND + fi + + AS_IF([test $opal_check_cma_happy -eq 1], + [$2], + [if test "$with_cma" = "yes"; then + AC_MSG_WARN([--with-cma support requested, but not available]) + AC_MSG_ERROR([Cannot continue]) + fi + $3]) +]) + +AC_DEFUN([OPAL_CHECK_CMA_BACKEND], +[ + OPAL_VAR_SCOPE_PUSH([opal_check_cma_need_defs opal_check_cma_kernel_version opal_check_cma_CFLAGS opal_check_cma_msg]) + + # Some systems have process_cm_readv() in libc, which means CMA is + # supported. Other systems do not have process_cm_readv() in + # libc, but have support for it in the kernel if we invoke it + # directly. Check for both. + AC_CHECK_HEADERS([sys/prctl.h]) + + AC_CHECK_FUNC([process_vm_readv], [opal_check_cma_need_defs=0], + [opal_check_cma_need_defs=1]) + AC_DEFINE_UNQUOTED([OPAL_CMA_NEED_SYSCALL_DEFS], + [$opal_check_cma_need_defs], + [Need CMA syscalls defined]) + if test $opal_check_cma_need_defs -eq 1 ; then + opal_check_cma_CFLAGS=$CFLAGS + # Need some extra include paths to locate the appropriate headers + CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/opal/include" + AC_MSG_CHECKING([if internal syscall numbers for Linux CMA work]) + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ +#include +#include +#include +#include + +#include +#include +#include + +#include "opal/include/opal/sys/cma.h" + +static void do_check (pid_t pid, int *in, int *out) +{ + int check[4] = {0, 0, 0, 0}, i; + struct iovec rem_iov = {out, sizeof (check)}; + struct iovec loc_iov = {check, sizeof (check)}; + ssize_t rc; + + rc = process_vm_readv (pid, &loc_iov, 1, &rem_iov, 1, 0); + if (sizeof (check) != rc) { + exit (1); + } + + for (i = 0 ; i < 4 ; ++i) { + if (check[i] != i) { + exit (1); + } + + check[i] = i * 2; + } + + rem_iov.iov_base = in; + rc = process_vm_writev (pid, &loc_iov, 1, &rem_iov, 1, 0); + if (sizeof (check) != rc) { + exit (1); + } + + exit (0); +} +]],[[ + int i, in[4] = {-1, -1, -1, -1}, out[4] = {0, 1, 2, 3}; + + do_check (getpid (), in, out); + + for (i = 0 ; i < 4 ; ++i) { + if (in[i] != 2 * i) { + return 1; + } + } + + /* all good */ + return 0; +]])], + [AC_MSG_RESULT([yes]) + opal_check_cma_happy=1], + [AC_MSG_RESULT([no]) + opal_check_cma_happy=0], + [AC_MSG_RESULT([no (cross-compiling)]) + opal_check_cma_happy=0]) + CFLAGS=$opal_check_cma_CFLAGS + else + # If we didn't need the defs, then we have process_vm_readv(), + # and CMA is happy. + opal_check_cma_happy=1 + fi + + OPAL_VAR_SCOPE_POP + + AS_IF([test $opal_check_cma_happy -eq 1], + [opal_check_cma_msg=yes], + [opal_check_cma_msg=no]) + OPAL_SUMMARY_ADD([[Transports]],[[Shared memory/Linux CMA]],[$1],[$opal_check_cma_msg]) +]) diff --git a/config/opal_check_compiler_version.m4 b/config/opal_check_compiler_version.m4 new file mode 100644 index 00000000..da8321cd --- /dev/null +++ b/config/opal_check_compiler_version.m4 @@ -0,0 +1,123 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2009 Oak Ridge National Labs. All rights reserved. +dnl +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + + +# OPAL_CHECK_COMPILER_VERSION_ID() +# ---------------------------------------------------- +# Try to figure out the compiler's name and version to detect cases, +# where users compile Open MPI with one version and compile the application +# with a different compiler. +# +AC_DEFUN([OPAL_CHECK_COMPILER_VERSION_ID], +[ + OPAL_CHECK_COMPILER(FAMILYID) + OPAL_CHECK_COMPILER_STRINGIFY(FAMILYNAME) + OPAL_CHECK_COMPILER(VERSION) + OPAL_CHECK_COMPILER_STRING(VERSION_STR) +])dnl + + +AC_DEFUN([OPAL_CHECK_COMPILER], [ + lower=m4_tolower($1) + AC_CACHE_CHECK([for compiler $lower], opal_cv_compiler_[$1], + [ + CPPFLAGS_orig=$CPPFLAGS + CPPFLAGS="-I${OPAL_TOP_SRCDIR}/opal/include/opal $CPPFLAGS" + AC_TRY_RUN([ +#include +#include +#include "opal_portable_platform.h" + +int main (int argc, char * argv[]) +{ + FILE * f; + f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf (f, "%d", PLATFORM_COMPILER_$1); + return 0; +} + ], [ + eval opal_cv_compiler_$1=`cat conftestval`; + ], [ + eval opal_cv_compiler_$1=0 + ], [ + eval opal_cv_compiler_$1=0 + ]) + CPPFLAGS=$CPPFLAGS_orig + ]) + AC_DEFINE_UNQUOTED([OPAL_BUILD_PLATFORM_COMPILER_$1], $opal_cv_compiler_[$1], + [The compiler $lower which OMPI was built with]) +])dnl + +AC_DEFUN([OPAL_CHECK_COMPILER_STRING], [ + lower=m4_tolower($1) + AC_CACHE_CHECK([for compiler $lower], opal_cv_compiler_[$1], + [ + CPPFLAGS_orig=$CPPFLAGS + CPPFLAGS="-I${OPAL_TOP_SRCDIR}/opal/include/opal $CPPFLAGS" + AC_TRY_RUN([ +#include +#include +#include "opal_portable_platform.h" + +int main (int argc, char * argv[]) +{ + FILE * f; + f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf (f, "%s", PLATFORM_COMPILER_$1); + return 0; +} + ], [ + eval opal_cv_compiler_$1=`cat conftestval`; + ], [ + eval opal_cv_compiler_$1=UNKNOWN + ], [ + eval opal_cv_compiler_$1=UNKNOWN + ]) + CPPFLAGS=$CPPFLAGS_orig + ]) + AC_DEFINE_UNQUOTED([OPAL_BUILD_PLATFORM_COMPILER_$1], $opal_cv_compiler_[$1], + [The compiler $lower which OMPI was built with]) +])dnl + + +AC_DEFUN([OPAL_CHECK_COMPILER_STRINGIFY], [ + lower=m4_tolower($1) + AC_CACHE_CHECK([for compiler $lower], opal_cv_compiler_[$1], + [ + CPPFLAGS_orig=$CPPFLAGS + CPPFLAGS="-I${OPAL_TOP_SRCDIR}/opal/include/opal $CPPFLAGS" + AC_TRY_RUN([ +#include +#include +#include "opal_portable_platform.h" + +int main (int argc, char * argv[]) +{ + FILE * f; + f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf (f, "%s", _STRINGIFY(PLATFORM_COMPILER_$1)); + return 0; +} + ], [ + eval opal_cv_compiler_$1=`cat conftestval`; + ], [ + eval opal_cv_compiler_$1=UNKNOWN + ], [ + eval opal_cv_compiler_$1=UNKNOWN + ]) + CPPFLAGS=$CPPFLAGS_orig + ]) + AC_DEFINE_UNQUOTED([OPAL_BUILD_PLATFORM_COMPILER_$1], $opal_cv_compiler_[$1], + [The compiler $lower which OMPI was built with]) +])dnl diff --git a/config/opal_check_compiler_works.m4 b/config/opal_check_compiler_works.m4 new file mode 100644 index 00000000..f632c0c8 --- /dev/null +++ b/config/opal_check_compiler_works.m4 @@ -0,0 +1,57 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2006 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl Copyright (c) 2010-2012 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2014 Intel, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OPAL_CHECK_COMPILER_WORKS(language, headers, body, +# [action-if-found], [action-if-not-found]) +# ---------------------------------------------------- +# Try to compile and run a simple application in 'language'. A +# warning is always printed if the application fails to run. +# Action-if-found is evaluated if the application runs successfully +# (or compiles if cross-compiling), and action-if-not-found is +# evaluated if the application fails to run. +# +# headers are any headers needed to compile the body (e.g., #include +# statements), and body is the program to compile. It should include +# a clean exit from the application (e.g., "return 0" in C/C++, empty in +# fortran). +AC_DEFUN([OPAL_CHECK_COMPILER_WORKS], +[ AS_VAR_PUSHDEF([lang_var], [opal_cv_$1_works]) + + AC_CACHE_CHECK([if $1 compiler works], lang_var, + [AC_LANG_PUSH($1) + AC_RUN_IFELSE([AC_LANG_PROGRAM([$2], [$3])], + [AS_VAR_SET(lang_var, ["yes"])], + [AS_VAR_SET(lang_var, ["no"])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM([$2], [$3])], + [AS_VAR_SET(lang_var, ["links (cross compiling)"])], + [AS_VAR_SET(lang_var, ["no"])])]) + AC_LANG_POP($1)]) + AS_VAR_IF(lang_var, [no], + [cat <&2 +********************************************************************** +* It appears that your $1 compiler is unable to produce working +* executables. A simple test application failed to properly +* execute. Note that this is likely not a problem with Open MPI, +* but a problem with the local compiler installation. More +* information (including exactly what command was given to the +* compiler and what error resulted when the command was executed) is +* available in the config.log file in the Open MPI build directory. +********************************************************************** +EOF + $5], [$4]) + + AS_VAR_POPDEF([lang_var])dnl +]) diff --git a/config/opal_check_cray_pmi.m4 b/config/opal_check_cray_pmi.m4 new file mode 100644 index 00000000..8e3dfee5 --- /dev/null +++ b/config/opal_check_cray_pmi.m4 @@ -0,0 +1,107 @@ +dnl -*- shell-script ; indent-tabs-mode:nil -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2009-2011 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2011-2014 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl Copyright (c) 2014-2015 Intel, Inc. All rights reserved. +dnl Copyright (c) 2014-2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +AC_DEFUN([OPAL_CHECK_CRAY_PMI_EXPLICIT],[ + + opal_cray_pmi_lib_good=0 + opal_cray_pmi_include_good=0 + + AC_MSG_CHECKING([Checking for Cray PMI with explicit path $with_cray_pmi]) + AS_IF([test -d "$with_cray_pmi/lib64"], + [opal_cray_pmi_lib_good=1], + [opal_cray_pmi_lib_good=0 + AC_MSG_WARN([No libpmi in path specified by $with_cray_pmi])]) + + AS_IF([test -f "$with_cray_pmi/include/pmi.h"], + [opal_cray_pmi_include_good=1], + [opal_cray_pmi_include_good=0 + AC_MSG_WARN([No pmi.h in path specified by $with_cray_pmi])]) + + AS_IF([test "$opal_cray_pmi_lib_good" -eq 1 && test "$opal_cray_pmi_include_good" -eq 1], + [CRAY_PMI_LDFLAGS="-L$with_cray_pmi/lib64 -L/usr/lib/alps" + CRAY_PMI_LIBS="-L$with_cray_pmi/lib64 -lpmi" + CRAY_PMI_CFLAGS="-I $with_cray_pmi/include" + $1], + [$2]) + +# +# this logic assumes knowledge about all the dependencies of the Cray PMI library, +# something that Cray doesn't generally document +# + AS_IF([test "$enable_static" = "yes"], + [AS_IF([test -d /usr/lib/alps], + [AC_MSG_RESULT([Detected presense of /usr/lib/alps]) + CRAY_PMI_LDFLAGS="$CRAY_PMI_LDFLAGS -L/usr/lib/alps -lalpslli -lalpsutil" + CRAY_PMI_LIBS="$CRAY_PMI_LIBS -L/usr/lib/alps -lalpslli -lalpsutil"], + [AS_IF([test -d /opt/cray/xe-sysroot/default/usr/lib/alps], + [AC_MSG_RESULT([Detected presense of /opt/cray/xe-sysroot/default/usr/lib/alps]) + CRAY_PMI_LDFLAGS="$CRAY_PMI_LDFLAGS -L/opt/cray/xe-sysroot/default/usr/lib/alps -lalpslli -lalpsutil" + CRAY_PMI_LIBS="$CRAY_PMI_LIBS -L/opt/cray/xe-sysroot/default/usr/lib/alps -lalpslli -lalpsutil"], + [AC_MSG_ERROR([Requested enabling static linking but unable to local libalpslli and libalpsutil])]) + ]) + ]) +]) + +# +# special check for cray pmi, uses macro(s) from pkg.m4 +# +# OPAL_CHECK_CRAY_PMI(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +AC_DEFUN([OPAL_CHECK_CRAY_PMI],[ + AC_ARG_WITH([cray_pmi], + [AC_HELP_STRING([--with-cray-pmi(=DIR)], + [Build Cray PMI support, optionally adding DIR to the search path (default: auto)])], + [], with_cray_pmi=auto) + AC_MSG_CHECKING([for Cray PMI support]) + AS_IF([test "$with_cray_pmi" = "no"], + [AC_MSG_RESULT([no]) + $3], + [AS_IF([test "$with_cray_pmi" = "auto" || test "$with_cray_pmi" = "yes"], + [PKG_CHECK_MODULES_STATIC([CRAY_PMI], [cray-pmi], + [opal_check_cray_pmi_happy="yes"], + [opal_check_cray_pmi_happy="no"] + [AS_IF([test "$with_cray_pmi" = "yes"], + [AC_MSG_WARN([Cray PMI support requested but pkg-config failed.]) + AC_MSG_WARN([Need to explicitly indicate cray pmi directory]) + AC_MSG_WARN([on the configure line using --with-cray-pmi option.]) + AC_MSG_ERROR([Aborting])],[])] + )], + [OPAL_CHECK_CRAY_PMI_EXPLICIT([opal_check_cray_pmi_happy="yes"], + [opal_check_cray_pmi_happy="no"]) + AC_MSG_WARN([opal_chack_cray_pmi_happy = $opal_check_cray_pmi_happy])]) + ]) + + AS_IF([test "$opal_check_cray_pmi_happy" = "yes" && test "$enable_static" = "yes"], + [CRAY_PMI_LIBS = $CRAY_PMI_STATIC_LIBS],[]) + + AS_IF([test "$opal_check_cray_pmi_happy" = "yes"], + [$1_LDFLAGS="$CRAY_PMI_LIBS" + $1_CPPFLAGS="$CRAY_PMI_CFLAGS" + $1_LIBS="$CRAY_PMI_LIBS" + $2], [$3]) +]) + + + diff --git a/config/opal_check_cuda.m4 b/config/opal_check_cuda.m4 new file mode 100644 index 00000000..fd7816e3 --- /dev/null +++ b/config/opal_check_cuda.m4 @@ -0,0 +1,165 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2006-2016 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. +dnl Copyright (c) 2009 IBM Corporation. All rights reserved. +dnl Copyright (c) 2009 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl Copyright (c) 2009-2011 Oak Ridge National Labs. All rights reserved. +dnl Copyright (c) 2011-2015 NVIDIA Corporation. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +AC_DEFUN([OPAL_CHECK_CUDA],[ +# +# Check to see if user wants CUDA support +# +AC_ARG_WITH([cuda], + [AC_HELP_STRING([--with-cuda(=DIR)], + [Build cuda support, optionally adding DIR/include])]) +AC_MSG_CHECKING([if --with-cuda is set]) + +# Note that CUDA support is off by default. To turn it on, the user has to +# request it. The user can just ask for --with-cuda and it that case we +# look for the cuda.h file in /usr/local/cuda. Otherwise, they can give +# us a directory. If they provide a directory, we will look in that directory +# as well as the directory with the "include" string appended to it. The fact +# that we check in two directories precludes us from using the OMPI_CHECK_DIR +# macro as that would error out after not finding it in the first directory. +# Note that anywhere CUDA aware code is in the Open MPI repository requires +# us to make use of AC_REQUIRE to ensure this check has been done. +AS_IF([test "$with_cuda" = "no" || test "x$with_cuda" = "x"], + [opal_check_cuda_happy="no" + AC_MSG_RESULT([not set (--with-cuda=$with_cuda)])], + [AS_IF([test "$with_cuda" = "yes"], + [AS_IF([test "x`ls /usr/local/cuda/include/cuda.h 2> /dev/null`" = "x"], + [AC_MSG_RESULT([not found in standard location]) + AC_MSG_WARN([Expected file /usr/local/cuda/include/cuda.h not found]) + AC_MSG_ERROR([Cannot continue])], + [AC_MSG_RESULT([found]) + opal_check_cuda_happy=yes + opal_cuda_incdir=/usr/local/cuda/include])], + [AS_IF([test ! -d "$with_cuda"], + [AC_MSG_RESULT([not found]) + AC_MSG_WARN([Directory $with_cuda not found]) + AC_MSG_ERROR([Cannot continue])], + [AS_IF([test "x`ls $with_cuda/include/cuda.h 2> /dev/null`" = "x"], + [AS_IF([test "x`ls $with_cuda/cuda.h 2> /dev/null`" = "x"], + [AC_MSG_RESULT([not found]) + AC_MSG_WARN([Could not find cuda.h in $with_cuda/include or $with_cuda]) + AC_MSG_ERROR([Cannot continue])], + [opal_check_cuda_happy=yes + opal_cuda_incdir=$with_cuda + AC_MSG_RESULT([found ($with_cuda/cuda.h)])])], + [opal_check_cuda_happy=yes + opal_cuda_incdir="$with_cuda/include" + AC_MSG_RESULT([found ($opal_cuda_incdir/cuda.h)])])])])]) + +dnl We cannot have CUDA support without dlopen support. HOWEVER, at +dnl this point in configure, we can't know whether the DL framework +dnl has been configured or not yet (it likely hasn't, since CUDA is a +dnl common framework, and likely configured first). So we have to +dnl defer this check until later (see the OPAL_CHECK_CUDA_AFTER_OPAL_DL m4 +dnl macro, below). :-( + +# We require CUDA IPC support which started in CUDA 4.1. Error +# out if the support is not there. +AS_IF([test "$opal_check_cuda_happy" = "yes"], + [AC_CHECK_MEMBER([struct CUipcMemHandle_st.reserved], + [], + [AC_MSG_ERROR([Cannot continue because CUDA 4.1 or later is required])], + [#include <$opal_cuda_incdir/cuda.h>])], + []) + +# If we have CUDA support, check to see if we have support for SYNC_MEMOPS +# which was first introduced in CUDA 6.0. +AS_IF([test "$opal_check_cuda_happy"="yes"], + AC_CHECK_DECL([CU_POINTER_ATTRIBUTE_SYNC_MEMOPS], [CUDA_SYNC_MEMOPS=1], [CUDA_SYNC_MEMOPS=0], + [#include <$opal_cuda_incdir/cuda.h>]), + []) + +# If we have CUDA support, check to see if we have CUDA 6.0 or later. +AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[#include <$opal_cuda_incdir/cuda.h>]], + [[ +#if CUDA_VERSION < 6000 +#error "CUDA_VERSION is less than 6000" +#endif + ]])], + [CUDA_VERSION_60_OR_GREATER=1], + [CUDA_VERSION_60_OR_GREATER=0]) + +# If we have CUDA support, check to see if we have support for cuPointerGetAttributes +# which was first introduced in CUDA 7.0. +AS_IF([test "$opal_check_cuda_happy"="yes"], + AC_CHECK_DECL([cuPointerGetAttributes], [CUDA_GET_ATTRIBUTES=1], [CUDA_GET_ATTRIBUTES=0], + [#include <$opal_cuda_incdir/cuda.h>]), + []) + +AC_MSG_CHECKING([if have cuda support]) +if test "$opal_check_cuda_happy" = "yes"; then + AC_MSG_RESULT([yes (-I$opal_cuda_incdir)]) + CUDA_SUPPORT=1 + opal_datatype_cuda_CPPFLAGS="-I$opal_cuda_incdir" + AC_SUBST([opal_datatype_cuda_CPPFLAGS]) +else + AC_MSG_RESULT([no]) + CUDA_SUPPORT=0 +fi + +OPAL_SUMMARY_ADD([[Miscellaneous]],[[CUDA support]],[opal_cuda], [$opal_check_cuda_happy]) + +AM_CONDITIONAL([OPAL_cuda_support], [test "x$CUDA_SUPPORT" = "x1"]) +AC_DEFINE_UNQUOTED([OPAL_CUDA_SUPPORT],$CUDA_SUPPORT, + [Whether we want cuda device pointer support]) + +AM_CONDITIONAL([OPAL_cuda_sync_memops], [test "x$CUDA_SYNC_MEMOPS" = "x1"]) +AC_DEFINE_UNQUOTED([OPAL_CUDA_SYNC_MEMOPS],$CUDA_SYNC_MEMOPS, + [Whether we have CUDA CU_POINTER_ATTRIBUTE_SYNC_MEMOPS support available]) + +AM_CONDITIONAL([OPAL_cuda_get_attributes], [test "x$CUDA_GET_ATTRIBUTES" = "x1"]) +AC_DEFINE_UNQUOTED([OPAL_CUDA_GET_ATTRIBUTES],$CUDA_GET_ATTRIBUTES, + [Whether we have CUDA cuPointerGetAttributes function available]) + +# There is nothing specific we can check for to see if GPU Direct RDMA is available. +# Therefore, we check to see whether we have CUDA 6.0 or later. +AM_CONDITIONAL([OPAL_cuda_gdr_support], [test "x$CUDA_VERSION_60_OR_GREATER" = "x1"]) +AC_DEFINE_UNQUOTED([OPAL_CUDA_GDR_SUPPORT],$CUDA_VERSION_60_OR_GREATER, + [Whether we have CUDA GDR support available]) + +]) + +dnl +dnl CUDA support requires DL support (it dynamically opens the CUDA +dnl library at run time). But we do not check for OPAL DL support +dnl until lafter the initial OPAL_CHECK_CUDA is called. So put the +dnl CUDA+DL check in a separate macro that can be called after the DL MCA +dnl framework checks in the top-level configure.ac. +dnl +AC_DEFUN([OPAL_CHECK_CUDA_AFTER_OPAL_DL],[ + + # We cannot have CUDA support without OPAL DL support. Error out + # if the user wants CUDA but we do not have OPAL DL support. + AS_IF([test $OPAL_HAVE_DL_SUPPORT -eq 0 && \ + test "$opal_check_cuda_happy" = "yes"], + [AC_MSG_WARN([--with-cuda was specified, but dlopen support is disabled.]) + AC_MSG_WARN([You must reconfigure Open MPI with dlopen ("dl") support.]) + AC_MSG_ERROR([Cannot continue.])]) +]) diff --git a/config/opal_check_icc.m4 b/config/opal_check_icc.m4 new file mode 100644 index 00000000..9c60fa29 --- /dev/null +++ b/config/opal_check_icc.m4 @@ -0,0 +1,60 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2014 Intel, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +AC_DEFUN([OPAL_CHECK_ICC_VARARGS],[ +dnl +dnl On EM64T, icc-8.1 before version 8.1.027 segfaulted, since +dnl va_start was miscompiled... +dnl +AC_MSG_CHECKING([whether icc-8.1 for EM64T works with variable arguments]) +AC_TRY_RUN([ +#include +#include +#include + +void func (int c, char * f, ...) +{ + va_list arglist; + va_start (arglist, f); + /* vprintf (f, arglist); */ + va_end (arglist); +} + +int main () +{ + FILE *f; + func (4711, "Help %d [%s]\n", 10, "ten"); + f=fopen ("conftestval", "w"); + if (!f) exit (1); + return 0; +} + +],[opal_ac_icc_varargs=`test -f conftestval`],[opal_ac_icc_varargs=1],[opal_ac_icc_varargs=1]) + +if test "$opal_ac_icc_varargs" = "1"; then + AC_MSG_WARN([*** Problem running configure test!]) + AC_MSG_WARN([*** Your icc-8.1 compiler seems to miscompile va_start!]) + AC_MSG_WARN([*** Please upgrade compiler to at least version 8.1.027]) + AC_MSG_ERROR([*** Cannot continue.]) +fi + +AC_MSG_RESULT([yes]) + +rm -rf conftest*])dnl diff --git a/config/opal_check_ident.m4 b/config/opal_check_ident.m4 new file mode 100644 index 00000000..7f79b686 --- /dev/null +++ b/config/opal_check_ident.m4 @@ -0,0 +1,101 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. +dnl Copyright (c) 2014 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl +dnl defines: +dnl OPAL_$1_USE_PRAGMA_IDENT +dnl OPAL_$1_USE_IDENT +dnl OPAL_$1_USE_CONST_CHAR_IDENT +dnl + +# OPAL_CHECK_IDENT(compiler-env, compiler-flags, +# file-suffix, lang) Try to compile a source file containing +# a #pragma ident, and determine whether the ident was +# inserted into the resulting object file +# ----------------------------------------------------------- +AC_DEFUN([OPAL_CHECK_IDENT], [ + AC_MSG_CHECKING([for $4 ident string support]) + + opal_pragma_ident_happy=0 + opal_ident_happy=0 + opal_static_const_char_happy=0 + _OPAL_CHECK_IDENT( + [$1], [$2], [$3], + [[#]pragma ident], [], + [opal_pragma_ident_happy=1 + opal_message="[#]pragma ident"], + _OPAL_CHECK_IDENT( + [$1], [$2], [$3], + [[#]ident], [], + [opal_ident_happy=1 + opal_message="[#]ident"], + _OPAL_CHECK_IDENT( + [$1], [$2], [$3], + [[#]pragma comment(exestr, ], [)], + [opal_pragma_comment_happy=1 + opal_message="[#]pragma comment"], + [opal_static_const_char_happy=1 + opal_message="static const char[[]]"]))) + + AC_DEFINE_UNQUOTED([OPAL_$1_USE_PRAGMA_IDENT], + [$opal_pragma_ident_happy], [Use #pragma ident strings for $4 files]) + AC_DEFINE_UNQUOTED([OPAL_$1_USE_IDENT], + [$opal_ident_happy], [Use #ident strings for $4 files]) + AC_DEFINE_UNQUOTED([OPAL_$1_USE_PRAGMA_COMMENT], + [$opal_pragma_comment_happy], [Use #pragma comment for $4 files]) + AC_DEFINE_UNQUOTED([OPAL_$1_USE_CONST_CHAR_IDENT], + [$opal_static_const_char_happy], [Use static const char[] strings for $4 files]) + + AC_MSG_RESULT([$opal_message]) + + unset opal_pragma_ident_happy opal_ident_happy opal_static_const_char_happy opal_message +]) + +# _OPAL_CHECK_IDENT(compiler-env, compiler-flags, +# file-suffix, header_prefix, header_suffix, action-if-success, action-if-fail) +# Try to compile a source file containing a #-style ident, +# and determine whether the ident was inserted into the +# resulting object file +# ----------------------------------------------------------- +AC_DEFUN([_OPAL_CHECK_IDENT], [ + eval opal_compiler="\$$1" + eval opal_flags="\$$2" + + opal_ident="string_not_coincidentally_inserted_by_the_compiler" + cat > conftest.$3 <&1 1>/dev/null + opal_status=$? + AS_IF([test "$opal_output" != "" || test "$opal_status" = "0"], + [$6], + [$7])], + [OPAL_LOG_MSG([the failed program was:]) + OPAL_LOG_FILE([conftest.$3]) + $7] + [$7])]) + + unset opal_compiler opal_flags opal_output opal_status + rm -rf conftest.* conftest${EXEEXT} +])dnl diff --git a/config/opal_check_knem.m4 b/config/opal_check_knem.m4 new file mode 100644 index 00000000..2e999f1f --- /dev/null +++ b/config/opal_check_knem.m4 @@ -0,0 +1,74 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2009 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2009-2016 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2010-2012 IBM Corporation. All rights reserved. +dnl Copyright (c) 2014-2016 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OPAL_CHECK_KNEM(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +# check if knem support can be found. sets prefix_{CPPFLAGS, +# LDFLAGS, LIBS} as needed and runs action-if-found if there is +# support, otherwise executes action-if-not-found +AC_DEFUN([OPAL_CHECK_KNEM],[ + if test -z "$opal_check_knem_happy" ; then + OPAL_VAR_SCOPE_PUSH([opal_check_knem_$1_save_CPPFLAGS opal_check_knem_dir]) + AC_ARG_WITH([knem], + [AC_HELP_STRING([--with-knem(=DIR)], + [Build knem Linux kernel module support, searching for headers in DIR/include])]) + + OPAL_CHECK_WITHDIR([knem], [$with_knem], [include/knem_io.h]) + opal_check_knem_$1_save_CPPFLAGS="$CPPFLAGS" + + opal_check_knem_happy=no + + AS_IF([test "$with_knem" != "no"], + [AS_IF([test ! -z "$with_knem" && test "$with_knem" != "yes"], + [opal_check_knem_dir="$with_knem"]) + + _OPAL_CHECK_PACKAGE_HEADER([ompi_check_knem], + [knem_io.h], + [$opal_check_knem_dir], + [opal_check_knem_happy="yes"], + [])], + []) + + CPPFLAGS="$CPPFLAGS $ompi_check_knem_CPPFLAGS" + + # need at least version 0x0000000b + if test "$opal_check_knem_happy" = "yes" ; then + AC_PREPROC_IFELSE([AC_LANG_PROGRAM([ +#include + ],[ +#if KNEM_ABI_VERSION < 0xc +#error "Version less than 0xc" +#endif + ])], + [opal_check_knem_happy=yes], + [opal_check_knem_happy=no]) + fi + + CPPFLAGS="$opal_check_knem_$1_save_CPPFLAGS" + + OPAL_SUMMARY_ADD([[Transports]],[[Shared memory/Linux KNEM]],[$1],[$opal_check_knem_happy]) + OPAL_VAR_SCOPE_POP + fi + + AS_IF([test "$opal_check_knem_happy" = "yes"], + [$1_CPPFLAGS="[$]$1_CPPFLAGS $ompi_check_knem_CPPFLAGS" + $2], + [AS_IF([test ! -z "$with_knem" && test "$with_knem" != "no"], + [AC_MSG_ERROR([KNEM support requested but not found. Aborting])]) + $3]) +])dnl diff --git a/config/opal_check_libfabric.m4 b/config/opal_check_libfabric.m4 new file mode 100644 index 00000000..142c7c61 --- /dev/null +++ b/config/opal_check_libfabric.m4 @@ -0,0 +1,95 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2015-2016 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2016 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + + +# OPAL_CHECK_LIBFABRIC(prefix, [action-if-found], [action-if-not-found] +# -------------------------------------------------------- +# Check if libfabric support can be found. +# +# Sets prefix_{CPPFLAGS, LDFLAGs, LIBS} as needed and runs +# action-if-found if there is support; otherwise executes +# action-if-not-found. +# +AC_DEFUN([OPAL_CHECK_LIBFABRIC],[ + if test -z "$opal_check_libfabric_happy" ; then + OPAL_VAR_SCOPE_PUSH([opal_check_libfabric_$1_save_CPPFLAGS opal_check_libfabric_$1_save_LDFLAGS opal_check_libfabric_$1_save_LIBS]) + + # Add --with options + AC_ARG_WITH([libfabric], + [AC_HELP_STRING([--with-libfabric=DIR], + [Specify location of libfabric installation, adding DIR/include to the default search location for libfabric headers, and DIR/lib or DIR/lib64 to the default search location for libfabric libraries. Error if libfabric support cannot be found.])]) + AC_ARG_WITH([libfabric-libdir], + [AC_HELP_STRING([--with-libfabric-libdir=DIR], + [Search for libfabric libraries in DIR])]) + + # Sanity check the --with values + OPAL_CHECK_WITHDIR([libfabric], [$with_libfabric], + [include/rdma/fabric.h]) + OPAL_CHECK_WITHDIR([libfabric-libdir], [$with_libfabric_libdir], + [libfabric.*]) + + opal_check_libfabric_$1_save_CPPFLAGS=$CPPFLAGS + opal_check_libfabric_$1_save_LDFLAGS=$LDFLAGS + opal_check_libfabric_$1_save_LIBS=$LIBS + + opal_check_libfabric_happy=yes + AS_IF([test "$with_libfabric" = "no"], + [opal_check_libfabric_happy=no]) + + AS_IF([test $opal_check_libfabric_happy = yes], + [AC_MSG_CHECKING([looking for libfabric in]) + AS_IF([test "$with_libfabric" != "yes"], + [opal_libfabric_dir=$with_libfabric + AC_MSG_RESULT([($opal_libfabric_dir)])], + [AC_MSG_RESULT([(default search paths)])]) + AS_IF([test ! -z "$with_libfabric_libdir" && \ + test "$with_libfabric_libdir" != "yes"], + [opal_libfabric_libdir=$with_libfabric_libdir]) + ]) + + AS_IF([test $opal_check_libfabric_happy = yes], + [OPAL_CHECK_PACKAGE([opal_check_libfabric], + [rdma/fabric.h], + [fabric], + [fi_getinfo], + [], + [$opal_libfabric_dir], + [$opal_libfabric_libdir], + [], + [opal_check_libfabric_happy=no])]) + + CPPFLAGS=$opal_check_libfabric_$1_save_CPPFLAGS + LDFLAGS=$opal_check_libfabric_$1_save_LDFLAGS + LIBS=$opal_check_libfabric_$1_save_LIBS + + OPAL_SUMMARY_ADD([[Transports]],[[OpenFabrics Libfabric]],[$1],[$opal_check_libfabric_happy]) + + OPAL_VAR_SCOPE_POP + fi + + if test $opal_check_libfabric_happy = yes ; then + $1_CPPFLAGS="[$]$1_CPPFLAGS $opal_check_libfabric_CPPFLAGS" + $1_LIBS="[$]$1_LIBS $opal_check_libfabric_LIBS" + $1_LDFLAGS="[$]$1_LDFLAGS $opal_check_libfabric_LDFLAGS" + + AC_SUBST($1_CPPFLAGS) + AC_SUBST($1_LDFLAGS) + AC_SUBST($1_LIBS) + fi + + AS_IF([test $opal_check_libfabric_happy = yes], + [$2], + [AS_IF([test -n "$with_libfabric" && test "$with_libfabric" != "no"], + [AC_MSG_WARN([libfabric support requested (via --with-libfabric), but not found.]) + AC_MSG_ERROR([Cannot continue.])]) + $3]) +])dnl diff --git a/config/opal_check_libnl.m4 b/config/opal_check_libnl.m4 new file mode 100644 index 00000000..68c13c06 --- /dev/null +++ b/config/opal_check_libnl.m4 @@ -0,0 +1,368 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2015-2017 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl Copyright (c) 2017 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +dnl +dnl More libnl v1/v3 sadness: the two versions are not compatible +dnl and will not work correctly if simultaneously linked into the +dnl same applications. Unfortunately, they *will* link into the +dnl same image! On platforms like CentOS 7, libibverbs depends on +dnl libnl-3.so.200 and friends, so if libnl3-devel packages are not +dnl installed, but libnl-devel are, Open MPI should not try to use libnl. +dnl +dnl GROSS: libnl wants us to either use pkg-config (which we +dnl cannot assume is always present) or we need to look in a +dnl particular directory for the right libnl3 include files. For +dnl now, just hard code the special path into this logic. +dnl +dnl _OPAL_CHECK_PACKAGE_LIB() invokes OPAL_LIBNL_SANITY_CHECK() in order +dnl to keep track of which libraries depend on libnl and which libraries +dnl depend on libnl3. +dnl Open MPI will not be able to build a component vs a given version of libnl +dnl if the other libnl version is required by some third party components. +dnl At the end of configure, display a summary of who is using what, and aborts +dnl if both libnl versions are required. + +dnl OPAL_LIBNL_SANITY_INIT() +dnl -------------------------------------------------------------------- +AC_DEFUN([OPAL_LIBNL_SANITY_INIT], [ + opal_libnl_version=0 + opal_libnlv1_libs= + opal_libnlv3_libs= + AC_ARG_WITH([libnl], + [AC_HELP_STRING([--with-libnl(=DIR)], + [Directory prefix for libnl (typically only necessary if libnl is installed in a location that the compiler/linker will not search by default)])]) + + # The --with options carry two pieces of information: 1) do + # you want a specific version of libnl, and 2) where that + # version of libnl lives. For simplicity, let's separate + # those two pieces of information. + case "$with_libnl" in + no) + # Nope, don't want it + opal_want_libnl=no + ;; + "") + # Just try to build with libnl + opal_want_libnl=try + opal_libnl_location= + ;; + yes) + # Yes, definitely want it + opal_want_libnl=yes + opal_libnl_location= + ;; + *) + # Yes, definitely want it -- at a specific location + opal_want_libnl=yes + opal_libnl_location=$with_libnl + ;; + esac +]) + +dnl OPAL_LIBNL_SANITY_FAIL_MSG(lib) +dnl +dnl Helper to pring a big warning message when we detect a libnl conflict. +dnl +dnl -------------------------------------------------------------------- +AC_DEFUN([OPAL_LIBNL_SANITY_FAIL_MSG], [ + AC_MSG_WARN([This is a configuration that is *known* to cause run-time crashes.]) + AC_MSG_WARN([This is an error in lib$1 (not Open MPI).]) + AC_MSG_WARN([Open MPI will therefore skip using lib$1.]) +]) + +dnl OPAL_LIBNL_SANITY_CHECK(lib, function, LIBS, libnl_check_ok) +dnl +dnl This macro is invoked from OPAL_CHECK_PACKAGE to make sure that +dnl new libraries that are added to LIBS do not pull in conflicting +dnl versions of libnl. E.g., if we already have a library in LIBS +dnl that pulls in libnl v3, if OPAL_CHECK_PACKAGE is later called that +dnl pulls in a library that pulls in libnl v1, this macro will detect +dnl the conflict and will abort configure. +dnl +dnl We abort rather than silently ignore this library simply because +dnl we are now multiple levels deep in the M4 "call stack", and this +dnl layer does not know the intent of the user. Hence, all we can do +dnl is abort with a hopefully helpful error message (that we aborted +dnl because Open MPI would have been built in a configuration that is +dnl known to crash). +dnl +dnl -------------------------------------------------------------------- +AC_DEFUN([OPAL_LIBNL_SANITY_CHECK], [ + OPAL_VAR_SCOPE_PUSH([opal_libnl_sane]) + opal_libnl_sane=1 + case $host in + *linux*) + OPAL_LIBNL_SANITY_CHECK_LINUX($1, $2, $3, opal_libnl_sane) + ;; + esac + + $4=$opal_libnl_sane + OPAL_VAR_SCOPE_POP([opal_libnl_sane]) +]) + +dnl +dnl Simple helper for OPAL_LIBNL_SANITY_CHECK +dnl $1: library name +dnl $2: function +dnl $3: LIBS +dnl $4: output variable (1=ok, 0=not ok) +dnl +AC_DEFUN([OPAL_LIBNL_SANITY_CHECK_LINUX], [ + OPAL_VAR_SCOPE_PUSH([this_requires_v1 libnl_sane this_requires_v3 ldd_output result_msg]) + + AC_LANG_PUSH(C) + + AC_MSG_CHECKING([if lib$1 requires libnl v1 or v3]) + cat > conftest_c.$ac_ext << EOF +extern void $2 (void); +int main(int argc, char *argv[[]]) { + $2 (); + return 0; +} +EOF + + this_requires_v1=0 + this_requires_v3=0 + result_msg= + OPAL_LOG_COMMAND([$CC -o conftest $CFLAGS $CPPFLAGS conftest_c.$ac_ext $LDFLAGS -l$1 $LIBS $3], + [ldd_output=`ldd conftest` + AS_IF([echo $ldd_output | grep -q libnl-3.so], + [this_requires_v3=1 + result_msg="v3"]) + AS_IF([echo $ldd_output | grep -q libnl.so], + [this_requires_v1=1 + result_msg="v1 $result_msg"]) + AC_MSG_RESULT([$result_msg]) + ], + [AC_MSG_WARN([Could not link a simple program with lib $1]) + ]) + + # Assume that our configuration is sane; this may get reset below + libnl_sane=1 + + # Note: in all the checks below, only add this library to the list + # of libraries (for v1 or v3 as relevant) if we do not fail. + # I.e., assume that a higher level will refuse to use this library + # if we return failure. + + # Does this library require both v1 and v3? If so, fail. + AS_IF([test $this_requires_v1 -eq 1 && test $this_requires_v3 -eq 1], + [AC_MSG_WARN([Unfortunately, lib$1 links to both libnl and libnl-3.]) + OPAL_LIBNL_SANITY_FAIL_MSG($1) + libnl_sane=0]) + + # Does this library require v1, but some prior library required + # v3? If so, fail. + AS_IF([test $libnl_sane -eq 1 && test $this_requires_v1 -eq 1], + [AS_IF([test $opal_libnl_version -eq 3], + [AC_MSG_WARN([libnl version conflict: $opal_libnlv3_libs requires libnl-3 whereas $1 requires libnl]) + OPAL_LIBNL_SANITY_FAIL_MSG($1) + libnl_sane=0], + [opal_libnlv1_libs="$opal_libnlv1_libs $1" + OPAL_UNIQ([opal_libnlv1_libs]) + opal_libnl_version=1]) + ]) + + # Does this library require v3, but some prior library required + # v1? If so, fail. + AS_IF([test $libnl_sane -eq 1 && test $this_requires_v3 -eq 1], + [AS_IF([test $opal_libnl_version -eq 1], + [AC_MSG_WARN([libnl version conflict: $opal_libnlv1_libs requires libnl whereas lib$1 requires libnl-3]) + OPAL_LIBNL_SANITY_FAIL_MSG($1) + libnl_sane=0], + [opal_libnlv3_libs="$opal_libnlv3_libs $1" + OPAL_UNIQ([opal_libnlv3_libs]) + opal_libnl_version=3]) + ]) + + AC_LANG_POP(C) + rm -f conftest conftest_c.$ac_ext + + $4=$libnl_sane + + OPAL_VAR_SCOPE_POP([ldd_output libnl_sane this_requires_v1 this_requires_v3 result_msg]) +]) + +dnl +dnl Check for libnl-3. +dnl +dnl Inputs: +dnl +dnl $1: prefix where to look for libnl-3 +dnl $2: var name prefix of _CPPFLAGS and _LDFLAGS and _LIBS +dnl +dnl Outputs: +dnl +dnl - Set $2_CPPFLAGS necessary to compile with libnl-3 +dnl - Set $2_LDFLAGS necessary to link with libnl-3 +dnl - Set $2_LIBS necessary to link with libnl-3 +dnl - Set OPAL_HAVE_LIBNL3 1 if libnl-3 will be used +dnl +AC_DEFUN([OPAL_CHECK_LIBNL_V3],[ + OPAL_VAR_SCOPE_PUSH([CPPFLAGS_save opal_tmp_CPPFLAGS LIBS_save LDFLAGS_save]) + AC_MSG_NOTICE([checking for libnl v3]) + + AS_IF([test "$opal_want_libnl" != "no"], + [AS_IF([test -z "$opal_libnl_location"], + [AC_MSG_CHECKING([for /usr/include/libnl3]) + AS_IF([test -d "/usr/include/libnl3"], + [opal_tmp_CPPFLAGS=-I/usr/include/libnl3 + opal_libnlv3_happy=1 + AC_MSG_RESULT([found])], + [AC_MSG_RESULT([not found]) + AC_MSG_CHECKING([for /usr/local/include/libnl3]) + AS_IF([test -d "/usr/local/include/libnl3"], + [opal_tmp_CPPFLAGS=-I/usr/local/include/netlink3 + opal_libnlv3_happy=1 + AC_MSG_RESULT([found])], + [opal_libnlv3_happy=0 + AC_MSG_RESULT([not found])])])], + [AC_MSG_CHECKING([for $1/include/libnl3]) + AS_IF([test -d "$1/include/libnl3"], + [opal_tmp_CPPFLAGS="-I$1/include/libnl3" + opal_libnlv3_happy=1 + AC_MSG_RESULT([found])], + [opal_libnlv3_happy=0 + AC_MSG_RESULT([not found])])]) + CPPFLAGS_save=$CPPFLAGS + CPPFLAGS="$opal_tmp_CPPFLAGS $CPPFLAGS" + + # Random note: netlink/version.h is only in libnl v3 - it is not in libnl v1. + # Also, nl_recvmsgs_report is only in libnl v3. + AS_IF([test $opal_libnlv3_happy -eq 1], + [OPAL_CHECK_PACKAGE([$2], + [netlink/version.h], + [nl-3], + [nl_recvmsgs_report], + [], + [$1], + [], + [], + [opal_libnlv3_happy=0]) + + # Note that OPAL_CHECK_PACKAGE is going to add + # -I$dir/include into $2_CPPFLAGS. But because libnl v3 + # puts the headers in $dir/include/libnl3, we need to + # overwrite $2_CPPFLAGS with -I$dir/include/libnl3. We can do + # this unconditionally; we don't have to check for + # success (checking for success occurs below). + $2_CPPFLAGS=$opal_tmp_CPPFLAGS]) + + # If we found libnl-3, we *also* need libnl-route-3 + LIBS_save=$LIBS + LDFLAGS_save=$LDFLAGS + AS_IF([test -n "$$2_LDFLAGS"], + [LDFLAGS="$$2_LDFLAGS $LDFLAGS"]) + AS_IF([test $opal_libnlv3_happy -eq 1], + [AC_SEARCH_LIBS([nl_rtgen_request], + [nl-route-3], + [], + [opal_libnlv3_happy=0])]) + LIBS=$LIBS_save + LDFLAGS=$LDFLAGS_save + + # Just because libnl* is evil, double check that the + # netlink/version.h we found was for libnl v3. As far as we + # know, netlink/version.h only first appeared in version + # 3... but let's really be sure. + AS_IF([test $opal_libnlv3_happy -eq 1], + [AC_MSG_CHECKING([to ensure these really are libnl v3 headers]) + AS_IF([test -n "$$2_CPPFLAGS"], + [CPPFLAGS="$$2_CPPFLAGS $CPPFLAGS"]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#include +#ifndef LIBNL_VER_MAJ +#error "LIBNL_VER_MAJ not defined!" +#endif +/* to the best of our knowledge, version.h only exists in libnl v3 */ +#if LIBNL_VER_MAJ != 3 +#error "LIBNL_VER_MAJ != 3, I am sad" +#endif + ]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + opal_libnlv3_happy=0])]) + + CPPFLAGS=$CPPFLAGS_save], + + [opal_libnlv3_happy=0]) + + # If we found everything + AS_IF([test $opal_libnlv3_happy -eq 1], + [$2_LIBS="-lnl-3 -lnl-route-3" + OPAL_HAVE_LIBNL3=1], + [# OPAL_CHECK_PACKAGE(...,nl_recvmsgs_report,...) might have set the variables below + # so reset them if libnl v3 cannot be used + $2_CPPFLAGS="" + $2_LDFLAGS="" + $2_LIBS=""]) + + OPAL_VAR_SCOPE_POP +]) + +dnl +dnl Check for libnl. +dnl +dnl Inputs: +dnl +dnl $1: prefix where to look for libnl +dnl $2: var name prefix of _CPPFLAGS and _LDFLAGS and _LIBS +dnl +dnl Outputs: +dnl +dnl - Set $2_CPPFLAGS necessary to compile with libnl +dnl - Set $2_LDFLAGS necessary to link with libnl +dnl - Set $2_LIBS necessary to link with libnl +dnl - Set OPAL_HAVE_LIBNL3 0 if libnl will be used +dnl +AC_DEFUN([OPAL_CHECK_LIBNL_V1],[ + AC_MSG_NOTICE([checking for libnl v1]) + + AS_IF([test "$opal_want_libnl" != "no"], + [OPAL_CHECK_PACKAGE([$2], + [netlink/netlink.h], + [nl], + [nl_connect], + [-lm], + [$1], + [], + [opal_libnlv1_happy=1], + [opal_libnlv1_happy=0])], + [opal_libnlv1_happy=0]) + + AS_IF([test $opal_libnlv1_happy -eq 1], + [$2_LIBS="-lnl -lm" + OPAL_HAVE_LIBNL3=0]) +]) + +dnl +dnl Summarize libnl and libnl3 usage, +dnl and abort if conflict is found +dnl +dnl Print the list of libraries that use libnl, +dnl the list of libraries that use libnl3, +dnl and aborts if both libnl and libnl3 are used. +dnl +AC_DEFUN([OPAL_CHECK_LIBNL_SUMMARY],[ + AC_MSG_CHECKING([for libraries that use libnl v1]) + AS_IF([test -n "$opal_libnlv1_libs"], + [AC_MSG_RESULT([$opal_libnlv1_libs])], + [AC_MSG_RESULT([(none)])]) + AC_MSG_CHECKING([for libraries that use libnl v3]) + AS_IF([test -n "$opal_libnlv3_libs"], + [AC_MSG_RESULT([$opal_libnlv3_libs])], + [AC_MSG_RESULT([(none)])]) + AS_IF([test -n "$opal_libnlv1_libs" && test -n "$opal_libnlv3_libs"], + [AC_MSG_WARN([libnl v1 and libnl v3 have been found as dependent libraries]) + AC_ERROR([This is a configuration that is known to cause run-time crashes])]) +]) diff --git a/config/opal_check_offsetof.m4 b/config/opal_check_offsetof.m4 new file mode 100644 index 00000000..fc8c0cae --- /dev/null +++ b/config/opal_check_offsetof.m4 @@ -0,0 +1,43 @@ +# -*- shell-script -*- +# +# Copyright (c) 2009 IBM Corporation. All rights reserved. +# Copyright (c) 2009 Cisco Systems, Inc. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# This macro checks to ensure that the compiler properly supports +# offsetof(). The PGI compilers had a problem with this macro in some +# versions of their compiler on some platforms (e.g., 9.0-1 on +# x86_64). The workaround is to use -DNO_PGI_OFFSET in these cases. +# A bug report was submitted to PGI support in late June 2009; the +# problem was apparently a trivial typo in one of their header files +# and should be fixed in subsequent releases (e.g., 9.0-2?). + +AC_DEFUN([OPAL_CHECK_OFFSETOF],[ + OPAL_VAR_SCOPE_PUSH([have_offsetof_msg]) + + AC_MSG_CHECKING(for functional offsetof macro) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include]], + [[struct foo {int a, b;}; size_t offset = offsetof(struct foo, b); ]])], + [have_offsetof_msg="yes"], [have_offsetof_msg="no"]) + if test "$have_offsetof_msg" = "no"; then + CPPFLAGS="$CPPFLAGS -DNO_PGI_OFFSET" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include]], + [[struct foo {int a, b;}; size_t offset = offsetof(struct foo, b); ]])], + [have_offsetof_msg="yes"], [have_offsetof_msg="no"]) + + if test "$have_offsetof_msg" = "no"; then + AC_MSG_RESULT([$have_offsetof_msg]) + AC_MSG_WARN([Your compiler does not support offsetof macro]) + AC_MSG_ERROR([Configure: Cannot continue]) + fi + fi + + AC_MSG_RESULT([$have_offsetof_msg]) + OPAL_VAR_SCOPE_POP +])dnl + diff --git a/config/opal_check_openfabrics.m4 b/config/opal_check_openfabrics.m4 new file mode 100644 index 00000000..3e773a72 --- /dev/null +++ b/config/opal_check_openfabrics.m4 @@ -0,0 +1,485 @@ +# -*- shell-script -*- +# +# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2006-2016 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2006-2017 Los Alamos National Security, LLC. All rights +# reserved. +# Copyright (c) 2006-2009 Mellanox Technologies. All rights reserved. +# Copyright (c) 2010-2012 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009-2012 Oak Ridge National Laboratory. All rights reserved. +# Copyright (c) 2014 Bull SAS. All rights reserved. +# Copyright (c) 2014-2016 Research Organization for Information Science +# and Technology (RIST). All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# OPAL_CHECK_OPENFABRICS(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +# check if OPENIB support can be found. sets prefix_{CPPFLAGS, +# LDFLAGS, LIBS} as needed and runs action-if-found if there is +# support, otherwise executes action-if-not-found +AC_DEFUN([OPAL_CHECK_OPENFABRICS],[ + OPAL_VAR_SCOPE_PUSH([$1_msg]) + + # Setup the --with switches to allow users to specify where + # verbs stuff lives. + AC_REQUIRE([OPAL_CHECK_VERBS_DIR]) + + if test -z "$opal_check_openib_happy" ; then + # + # Add padding to OpenIB header + # + AC_ARG_ENABLE([openib-control-hdr-padding], + [AC_HELP_STRING([--enable-openib-control-hdr-padding], + [Add padding bytes to the openib BTL control header (default:disabled)])]) + AC_MSG_CHECKING([if want to add padding to the openib BTL control header]) + if test "$enable_openib_control_hdr_padding" = "yes"; then + AC_MSG_RESULT([yes]) + ompi_openib_pad_hdr=1 + elif test "$enable_openib_control_hdr_padding" = "no"; then + AC_MSG_RESULT([no]) + ompi_openib_pad_hdr=0 + else + # + # Enable padding for SPARC platforms by default because the + # btl will segv otherwise. Keep padding disabled for other + # platforms since there are some performance implications with + # padding on for those plaforms. + # + case "${host}" in + sparc*) + AC_MSG_RESULT([yes (enabled by default on SPARC)]) + ompi_openib_pad_hdr=1 + ;; + *) + AC_MSG_RESULT([no]) + ompi_openib_pad_hdr=0 + ;; + esac + fi + AC_DEFINE_UNQUOTED([OPAL_OPENIB_PAD_HDR], [$ompi_openib_pad_hdr], + [Add padding bytes to the openib BTL control header]) + + AS_IF([test "$opal_want_verbs" = "no"], + [opal_check_openib_happy="no"], + [opal_check_openib_happy="yes"]) + + ompi_check_openib_$1_save_CPPFLAGS="$CPPFLAGS" + ompi_check_openib_$1_save_LDFLAGS="$LDFLAGS" + ompi_check_openib_$1_save_LIBS="$LIBS" + + AS_IF([test "$opal_check_openib_happy" = "yes"], + [AC_CHECK_HEADERS( + fcntl.h sys/poll.h, + [], + [AC_MSG_WARN([fcntl.h sys/poll.h not found. Can not build component.]) + opal_check_openib_happy="no"])]) + + AS_IF([test "$opal_check_openib_happy" = "yes"], + [OPAL_CHECK_PACKAGE([opal_check_openib], + [infiniband/verbs.h], + [ibverbs], + [ibv_open_device], + [], + [$opal_verbs_dir], + [$opal_verbs_libdir], + [opal_check_openib_happy="yes"], + [opal_check_openib_happy="no"])]) + + CPPFLAGS="$CPPFLAGS $opal_check_openib_CPPFLAGS" + LDFLAGS="$LDFLAGS $opal_check_openib_LDFLAGS" + LIBS="$LIBS $opal_check_openib_LIBS" + + AS_IF([test "$opal_check_openib_happy" = "yes"], + [AC_CACHE_CHECK( + [number of arguments to ibv_create_cq], + [ompi_cv_func_ibv_create_cq_args], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[ibv_create_cq(NULL, 0, NULL, NULL, 0);]])], + [ompi_cv_func_ibv_create_cq_args=5], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[ibv_create_cq(NULL, 0, NULL);]])], + [ompi_cv_func_ibv_create_cq_args=3], + [ompi_cv_func_ibv_create_cq_args="unknown"])])]) + AS_IF([test "$ompi_cv_func_ibv_create_cq_args" = "unknown"], + [AC_MSG_WARN([Can not determine number of args to ibv_create_cq.]) + AC_MSG_WARN([Not building component.]) + opal_check_openib_happy="no"], + [AC_DEFINE_UNQUOTED([OPAL_IBV_CREATE_CQ_ARGS], + [$ompi_cv_func_ibv_create_cq_args], + [Number of arguments to ibv_create_cq])])]) + + # + # OpenIB dynamic SL + # + AC_ARG_ENABLE([openib-dynamic-sl], + [AC_HELP_STRING([--enable-openib-dynamic-sl], + [Enable openib BTL to query Subnet Manager for IB SL (default: enabled)])]) + + # Set these up so that we can do an AC_DEFINE below + # (unconditionally) + opal_check_openib_have_xrc=0 + opal_check_openib_have_xrc_domains=0 + opal_check_openib_have_opensm_devel=0 + + # If we have the openib stuff available, find out what we've got + AS_IF([test "$opal_check_openib_happy" = "yes"], + [AC_CHECK_DECLS([IBV_EVENT_CLIENT_REREGISTER, IBV_ACCESS_SO, IBV_ATOMIC_HCA], [], [], + [#include ]) + AC_CHECK_FUNCS([ibv_get_device_list ibv_resize_cq]) + + # struct ibv_device.transport_type was added in OFED v1.2 + AC_CHECK_MEMBERS([struct ibv_device.transport_type], [], [], + [#include ]) + + # We have to check functions both exits *and* are declared + # since some distro ship broken ibverbs devel headers + # IBV_DEVICE_XRC is common to all OFED versions + # ibv_create_xrc_rcv_qp was added in OFED 1.3 + # ibv_cmd_open_xrcd (aka XRC Domains) was added in OFED 3.12 + if test "$enable_connectx_xrc" = "yes"; then + AC_CHECK_DECLS([IBV_DEVICE_XRC], + [opal_check_openib_have_xrc=1 + opal_check_openib_have_xrc_domains=1], + [], + [#include ]) + fi + if test "$enable_connectx_xrc" = "yes" \ + && test $opal_check_openib_have_xrc -eq 1; then + AC_CHECK_DECLS([ibv_create_xrc_rcv_qp], + [AC_CHECK_FUNCS([ibv_create_xrc_rcv_qp], + [], [opal_check_openib_have_xrc=0])], + [opal_check_openib_have_xrc=0], + [#include ]) + fi + if test "$enable_connectx_xrc" = "yes" \ + && test $opal_check_openib_have_xrc_domains -eq 1; then + AC_CHECK_DECLS([ibv_cmd_open_xrcd], + [AC_CHECK_DECLS([IBV_SRQT_XRC], + [AC_CHECK_FUNCS([ibv_cmd_open_xrcd], + [], [opal_check_openib_have_xrc_domains=0])], + [opal_check_openib_have_xrc_domains=0], + [#include ])], + [opal_check_openib_have_xrc_domains=0], + [#include ]) + # XRC and XRC Domains should be considered as exclusive + if test "$opal_check_openib_have_xrc" -eq 1 && \ + test "$opal_check_openib_have_xrc_domains" -eq 1; then + opal_check_openib_have_xrc=0 + fi + fi + + if test "no" != "$enable_openib_dynamic_sl"; then + # We need ib_types.h file, which is installed with opensm-devel + # package. However, ib_types.h has a bad include directive, + # which will cause AC_CHECK_HEADER to fail. + # So instead, we will look for another file that is also + # installed as part of opensm-devel package and included in + # ib_types.h, but it doesn't include any other IB-related files. + AC_CHECK_HEADER([infiniband/complib/cl_types_osd.h], + [AC_CHECK_LIB([osmcomp], [cl_map_init], + [opal_check_openib_have_opensm_devel=1],[])], + [], + []) + # Abort if dynamic SL support was explicitly requested but opensm-devel + # package wasn't found. Otherwise, OMPI will be built w/o dynamic SL. + AC_MSG_CHECKING([if can use dynamic SL support]) + AS_IF([test "$opal_check_openib_have_opensm_devel" = "1"], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + AS_IF([test "$enable_openib_dynamic_sl" = "yes"], + [AC_MSG_WARN([--enable-openib-dynamic-sl was specified but the]) + AC_MSG_WARN([appropriate header/library files could not be found]) + AC_MSG_WARN([Please install opensm-devel if you need dynamic SL support]) + AC_MSG_ERROR([Cannot continue])])]) + fi + + + # Check support for RDMAoE devices + $1_have_rdmaoe=0 + AC_CHECK_DECLS([IBV_LINK_LAYER_ETHERNET], + [$1_have_rdmaoe=1], [], + [#include ]) + + AC_MSG_CHECKING([if RDMAoE support is enabled]) + AC_DEFINE_UNQUOTED([OPAL_HAVE_RDMAOE], [$$1_have_rdmaoe], [Enable RDMAoE support]) + if test "1" = "$$1_have_rdmaoe"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + + ]) + + # Check to see if works. It is known to + # create problems on some platforms with some compilers (e.g., + # RHEL4U3 with the PGI 32 bit compiler). Use undocumented (in AC + # 2.63) feature of AC_CHECK_HEADERS: if you explicitly pass in + # AC_INCLUDES_DEFAULT as the 4th arg to AC_CHECK_HEADERS, the test + # will fail if the header is present but not compilable, *but it + # will not print the big scary warning*. See + # http://lists.gnu.org/archive/html/autoconf/2008-10/msg00143.html. + AS_IF([test "$opal_check_openib_happy" = "yes"], + [AC_CHECK_HEADERS([infiniband/driver.h], [], [], + [AC_INCLUDES_DEFAULT])]) + + AC_MSG_CHECKING([if ConnectX XRC support is enabled]) + AC_DEFINE_UNQUOTED([OPAL_HAVE_CONNECTX_XRC], [$opal_check_openib_have_xrc], + [Enable features required for ConnectX XRC support]) + if test "1" = "$opal_check_openib_have_xrc"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + + AC_MSG_CHECKING([if ConnectIB XRC support is enabled]) + AC_DEFINE_UNQUOTED([OPAL_HAVE_CONNECTX_XRC_DOMAINS], [$opal_check_openib_have_xrc_domains], + [Enable features required for XRC domains support]) + if test "1" = "$opal_check_openib_have_xrc_domains"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + + AC_MSG_CHECKING([if dynamic SL is enabled]) + AC_DEFINE_UNQUOTED([OPAL_ENABLE_DYNAMIC_SL], [$opal_check_openib_have_opensm_devel], + [Enable features required for dynamic SL support]) + if test "1" = "$opal_check_openib_have_opensm_devel"; then + AC_MSG_RESULT([yes]) + $1_LIBS="-losmcomp $$1_LIBS" + else + AC_MSG_RESULT([no]) + fi + + AS_IF([test -z "$opal_verbs_dir"], + [openib_include_dir="/usr/include"], + [openib_include_dir="$opal_verbs_dir/include"]) + opal_check_openib_CPPFLAGS="$opal_check_openib_CPPFLAGS -I$openib_include_dir/infiniband" + + CPPFLAGS="$ompi_check_openib_$1_save_CPPFLAGS" + LDFLAGS="$ompi_check_openib_$1_save_LDFLAGS" + LIBS="$ompi_check_openib_$1_save_LIBS" + + OPAL_SUMMARY_ADD([[Transports]],[[OpenFabrics Verbs]],[$1],[$opal_check_openib_happy]) + + OPAL_VAR_SCOPE_POP + fi + + $1_have_xrc=$opal_check_openib_have_xrc + $1_have_xrc_domains=$opal_check_openib_have_xrc_domains + $1_have_opensm_devel=$opal_check_openib_have_opensm_devel + + AS_IF([test "$opal_check_openib_happy" = "yes"], + [$1_CPPFLAGS="[$]$1_CPPFLAGS $opal_check_openib_CPPFLAGS" + $1_LDFLAGS="[$]$1_LDFLAGS $opal_check_openib_LDFLAGS" + $1_LIBS="[$]$1_LIBS $opal_check_openib_LIBS" + $2], + [AS_IF([test "$opal_want_verbs" = "yes"], + [AC_MSG_WARN([Verbs support requested (via --with-verbs) but not found.]) + AC_MSG_WARN([If you are using libibverbs v1.0 (i.e., OFED v1.0 or v1.1), you *MUST* have both the libsysfs headers and libraries installed. Later versions of libibverbs do not require libsysfs.]) + AC_MSG_ERROR([Aborting.])]) + $3]) + +]) + +AC_DEFUN([OPAL_CHECK_OPENFABRICS_CM_ARGS],[ + # + # ConnectX XRC support - disabled see issue #3890 + # +dnl AC_ARG_ENABLE([openib-connectx-xrc], +dnl [AC_HELP_STRING([--enable-openib-connectx-xrc], +dnl [Enable ConnectX XRC support in the openib BTL. (default: disabled)])], +dnl [enable_connectx_xrc="$enableval"], [enable_connectx_xrc="no"]) + enable_connectx_xrc="no" + # + # Unconnect Datagram (UD) based connection manager + # + AC_ARG_ENABLE([openib-udcm], + [AC_HELP_STRING([--enable-openib-udcm], + [Enable datagram connection support in openib BTL (default: enabled)])], + [enable_openib_udcm="$enableval"], [enable_openib_udcm="yes"]) + # Per discussion with Ralph and Nathan, disable UDCM for now. + # It's borked and needs some surgery to get back on its feet. + # enable_openib_udcm=no + + # + # Openfabrics RDMACM + # + AC_ARG_ENABLE([openib-rdmacm], + [AC_HELP_STRING([--enable-openib-rdmacm], + [Enable Open Fabrics RDMACM support in openib BTL (default: enabled)])]) + AC_ARG_ENABLE([openib-rdmacm-ibaddr], + [AC_HELP_STRING([--enable-openib-rdmacm-ibaddr], + [Enable Open Fabrics RDMACM with IB addressing support in openib BTL (default: disabled)])], + [enable_openib_rdmacm=yes]) +])dnl + +AC_DEFUN([OPAL_CHECK_OPENFABRICS_CM],[ + AC_REQUIRE([OPAL_CHECK_OPENFABRICS_CM_ARGS]) + $1_have_udcm=0 + $1_have_rdmacm=0 + + ompi_check_openib_$1_save_CPPFLAGS="$CPPFLAGS" + ompi_check_openib_$1_save_LDFLAGS="$LDFLAGS" + ompi_check_openib_$1_save_LIBS="$LIBS" + + # add back in all the InfiniBand flags so that these tests might work... + CPPFLAGS="$CPPFLAGS $$1_CPPFLAGS" + LDFLAGS="$LDFLAGS $$1_LDFLAGS" + LIBS="$LIBS $$1_LIBS" + + AS_IF([test "$opal_check_openib_happy" = "yes"], + [# Do we have a recent enough RDMA CM? Need to have the + # rdma_get_peer_addr (inline) function (originally appeared + # in OFED v1.3). + if test "$enable_openib_rdmacm" != "no"; then + AC_CHECK_HEADERS([rdma/rdma_cma.h], + [AC_CHECK_LIB([rdmacm], [rdma_create_id], + [AC_MSG_CHECKING([for rdma_get_peer_addr]) + $1_msg=no + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include "rdma/rdma_cma.h" + ]], [[void *ret = (void*) rdma_get_peer_addr((struct rdma_cm_id*)0);]])], + [$1_have_rdmacm=1 + $1_msg=yes]) + AC_MSG_RESULT([$$1_msg])])]) + + if test "1" = "$$1_have_rdmacm"; then + $1_LIBS="-lrdmacm $$1_LIBS" + else + AS_IF([test "$enable_openib_rdmacm" = "yes"], + [AC_MSG_WARN([--enable-openib-rdmacm was specified but the]) + AC_MSG_WARN([appropriate files could not be found]) + AC_MSG_WARN([Please install librdmacm and librdmacm-devel or disable rdmacm support]) + AC_MSG_ERROR([Cannot continue])]) + fi + fi + + # is udcm enabled + if test "$enable_openib_udcm" = "yes"; then + $1_have_udcm=1 + fi + ]) + + CPPFLAGS="$ompi_check_openib_$1_save_CPPFLAGS" + LDFLAGS="$ompi_check_openib_$1_save_LDFLAGS" + LIBS="$ompi_check_openib_$1_save_LIBS" + + AC_MSG_CHECKING([if UD CM is enabled]) + AC_DEFINE_UNQUOTED([OPAL_HAVE_UDCM], [$$1_have_udcm], + [Whether UD CM is available or not]) + if test "1" = "$$1_have_udcm"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + + AC_MSG_CHECKING([if OpenFabrics RDMACM support is enabled]) + AC_DEFINE_UNQUOTED([OPAL_HAVE_RDMACM], [$$1_have_rdmacm], + [Whether RDMA CM is available or not]) + if test "1" = "$$1_have_rdmacm"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi +])dnl + +AC_DEFUN([OPAL_CHECK_EXP_VERBS],[ + OPAL_VAR_SCOPE_PUSH([have_struct_ibv_exp_send_wr]) + + AC_MSG_CHECKING([whether expanded verbs are available]) + AC_TRY_COMPILE([#include ], [struct ibv_exp_send_wr;], + [have_struct_ibv_exp_send_wr=1 + AC_MSG_RESULT([yes])], + [have_struct_ibv_exp_send_wr=0 + AC_MSG_RESULT([no])]) + + AC_DEFINE_UNQUOTED([HAVE_EXP_VERBS], [$have_struct_ibv_exp_send_wr], [Experimental verbs]) + AC_CHECK_DECLS([IBV_EXP_ATOMIC_HCA_REPLY_BE, IBV_EXP_QP_CREATE_ATOMIC_BE_REPLY, ibv_exp_create_qp, ibv_exp_query_device, IBV_EXP_QP_INIT_ATTR_ATOMICS_ARG], + [], [], [#include ]) + AC_CHECK_MEMBERS([struct ibv_exp_device_attr.ext_atom, struct ibv_exp_device_attr.exp_atomic_cap], [], [], + [[#include ]]) + AS_IF([test '$have_struct_ibv_exp_send_wr' = 1], [$1], [$2]) + OPAL_VAR_SCOPE_POP +])dnl + +AC_DEFUN([OPAL_CHECK_MLNX_OPENFABRICS],[ + $1_have_mverbs=0 + $1_have_mqe=0 + + AS_IF([test "$opal_check_openib_happy" = "yes"], + [OPAL_CHECK_PACKAGE([$1], + [infiniband/mverbs.h], + [mverbs], + [ibv_m_query_device], + ["$$1_LIBS"], + [$opal_verbs_dir], + [$opal_verbs_libdir], + [$1_have_mverbs=1], + [])]) + + AS_IF([test "$opal_check_openib_happy" = "yes"], + [OPAL_CHECK_PACKAGE([$1], + [infiniband/mqe.h], + [mqe], + [mqe_context_create], + ["$$1_LIBS"], + [$opal_verbs_dir], + [$opal_verbs_libdir], + [$1_have_mqe=1], + [])]) + + AC_MSG_CHECKING([if Mellanox OpenFabrics VERBS is enabled]) + AC_DEFINE_UNQUOTED([OPAL_HAVE_MVERBS], [$$1_have_mverbs], + [Whether MVERBS is available or not]) + AS_IF([test "1" = "$$1_have_mverbs"], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])]) + + # save the CPPFLAGS since we would have to update it for next test + ompi_check_mellanox_openfabrics_$1_save_CPPFLAGS="$CPPFLAGS" + + # If openfabrics custom directory have been defined, we have + # to use it for MACRO test that uses mverbs.h file. + # + if test ! -z "$ompi_check_verbs_dir" ; then + CPPFLAGS="-I${opal_verbs_dir}/include $CPPFLAGS" + fi + + AS_IF([test "1" = "$$1_have_mverbs"], + [AC_CHECK_DECLS([IBV_M_WR_CALC_RDMA_WRITE_WITH_IMM], + [AC_DEFINE_UNQUOTED([OPAL_HAVE_IBOFFLOAD_CALC_RDMA], [1], + [Whether IBV_M_WR_CALC_SEND is defined or not])], + [AC_DEFINE_UNQUOTED([OPAL_HAVE_IBOFFLOAD_CALC_RDMA], [0], + [Whether IBV_M_WR_CALC_SEND is defined or not])], + [#include ])]) + + # restoring the CPPFLAGS + CPPFLAGS="$ompi_check_mellanox_openfabrics_$1_save_CPPFLAGS" + + AC_MSG_CHECKING([if Mellanox OpenFabrics MQE is enabled]) + AC_DEFINE_UNQUOTED([OPAL_HAVE_MQE], [$$1_have_mqe], + [Whether MQE is available or not]) + AS_IF([test "1" = "$$1_have_mqe"], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])]) + + AS_IF([test "1" = "$$1_have_mverbs" && test "1" = $$1_have_mqe], + [$2], [$3]) +])dnl diff --git a/config/opal_check_os_flavors.m4 b/config/opal_check_os_flavors.m4 new file mode 100644 index 00000000..e8eaba11 --- /dev/null +++ b/config/opal_check_os_flavors.m4 @@ -0,0 +1,69 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2010 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2014 Intel, Inc. All rights reserved. +dnl Copyright (c) 2014 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OPAL_CHECK_OS_FLAVOR_SPECIFIC() +# ---------------------------------------------------- +# Helper macro from OPAL-CHECK-OS-FLAVORS(), below. +# $1 = macro to look for +# $2 = suffix of env variable to set with results +AC_DEFUN([OPAL_CHECK_OS_FLAVOR_SPECIFIC], +[ + AC_MSG_CHECKING([$1]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM( + [[#ifndef $1 + error: this isnt $1 + #endif + ]])], + [opal_found_$2=yes], + [opal_found_$2=no]) + AC_MSG_RESULT([$opal_found_$2]) +])dnl + +# OPAL_CHECK_OS_FLAVORS() +# ---------------------------------------------------- +# Try to figure out the various OS flavors out there. +# +AC_DEFUN([OPAL_CHECK_OS_FLAVORS], +[ + OPAL_CHECK_OS_FLAVOR_SPECIFIC([__NetBSD__], [netbsd]) + OPAL_CHECK_OS_FLAVOR_SPECIFIC([__FreeBSD__], [freebsd]) + OPAL_CHECK_OS_FLAVOR_SPECIFIC([__OpenBSD__], [openbsd]) + OPAL_CHECK_OS_FLAVOR_SPECIFIC([__DragonFly__], [dragonfly]) + OPAL_CHECK_OS_FLAVOR_SPECIFIC([__386BSD__], [386bsd]) + OPAL_CHECK_OS_FLAVOR_SPECIFIC([__bsdi__], [bsdi]) + OPAL_CHECK_OS_FLAVOR_SPECIFIC([__APPLE__], [apple]) + OPAL_CHECK_OS_FLAVOR_SPECIFIC([__linux__], [linux]) + OPAL_CHECK_OS_FLAVOR_SPECIFIC([__sun__], [sun]) + AS_IF([test "$opal_found_sun" = "no"], + OPAL_CHECK_OS_FLAVOR_SPECIFIC([__sun], [sun])) + + AS_IF([test "$opal_found_sun" = "yes"], + [opal_have_solaris=1 + CFLAGS="$CFLAGS -D_REENTRANT" + CPPFLAGS="$CPPFLAGS -D_REENTRANT"], + [opal_have_solaris=0]) + AC_DEFINE_UNQUOTED([OPAL_HAVE_SOLARIS], + [$opal_have_solaris], + [Whether or not we have solaris]) + + # check for sockaddr_in (a good sign we have TCP) + AC_CHECK_HEADERS([netdb.h netinet/in.h netinet/tcp.h]) + AC_CHECK_TYPES([struct sockaddr_in], + [opal_found_sockaddr=yes], + [opal_found_sockaddr=no], + [AC_INCLUDES_DEFAULT +#ifdef HAVE_NETINET_IN_H +#include +#endif]) +])dnl diff --git a/config/opal_check_package.m4 b/config/opal_check_package.m4 new file mode 100644 index 00000000..18ba67a3 --- /dev/null +++ b/config/opal_check_package.m4 @@ -0,0 +1,229 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2012-2017 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved. +dnl Copyright (c) 2014 Intel, Inc. All rights reserved. +dnl Copyright (c) 2015-2016 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +dnl _OPAL_CHECK_PACKAGE_HEADER(prefix, header, dir-prefix, +dnl [action-if-found], [action-if-not-found], +dnl includes) +dnl -------------------------------------------------------------------- +AC_DEFUN([_OPAL_CHECK_PACKAGE_HEADER], [ + # This is stolen from autoconf to peek under the covers to get the + # cache variable for the library check. one should not copy this + # code into other places unless you want much pain and suffering + AS_VAR_PUSHDEF([opal_Header], [ac_cv_header_$2]) + OPAL_VAR_SCOPE_PUSH([dir_prefix]) + + # so this sucks, but there's no way to get through the progression + # of header includes without killing off the cache variable and trying + # again... + unset opal_Header + + # get rid of the trailing slash(es) + dir_prefix=$(echo $3 | sed -e 'sX/*$XXg') + opal_check_package_header_happy="no" + AS_IF([test "$dir_prefix" = "/usr" || \ + test "$dir_prefix" = "/usr/local"], + [ # try as is... + AC_VERBOSE([looking for header without includes]) + AC_CHECK_HEADERS([$2], [opal_check_package_header_happy="yes"], []) + AS_IF([test "$opal_check_package_header_happy" = "no"], + [# no go on the as is - reset the cache and try again + unset opal_Header])]) + + AS_IF([test "$opal_check_package_header_happy" = "no"], + [AS_IF([test "$dir_prefix" != ""], + [$1_CPPFLAGS="$$1_CPPFLAGS -I$dir_prefix/include" + CPPFLAGS="$CPPFLAGS -I$dir_prefix/include"]) + AC_CHECK_HEADERS([$2], [opal_check_package_header_happy="yes"], [], [$6]) + AS_IF([test "$opal_check_package_header_happy" = "yes"], [$4], [$5])], + [$4]) + unset opal_check_package_header_happy + + OPAL_VAR_SCOPE_POP([dir_prefix]) + AS_VAR_POPDEF([opal_Header])dnl +]) + + +dnl _OPAL_CHECK_PACKAGE_LIB(prefix, library, function, extra-libraries, +dnl dir-prefix, libdir, +dnl [action-if-found], [action-if-not-found]]) +dnl -------------------------------------------------------------------- +AC_DEFUN([_OPAL_CHECK_PACKAGE_LIB], [ + # This is stolen from autoconf to peek under the covers to get the + # cache variable for the library check. one should not copy this + # code into other places unless you want much pain and suffering + AS_VAR_PUSHDEF([opal_Lib], [ac_cv_search_$3]) + + # see comment above + unset opal_Lib + opal_check_package_lib_happy="no" + AS_IF([test "$6" != ""], + [ # libdir was specified - search only there + $1_LDFLAGS="$$1_LDFLAGS -L$6" + LDFLAGS="$LDFLAGS -L$6" + AC_SEARCH_LIBS([$3], [$2], + [opal_check_package_lib_happy="yes"], + [opal_check_package_lib_happy="no"], [$4]) + AS_IF([test "$opal_check_package_lib_happy" = "no"], + [LDFLAGS="$opal_check_package_$1_save_LDFLAGS" + $1_LDFLAGS="$opal_check_package_$1_orig_LDFLAGS" + unset opal_Lib])], + [ # libdir was not specified - go through search path + opal_check_package_libdir="$5" + AS_IF([test "$opal_check_package_libdir" = "" || \ + test "$opal_check_package_libdir" = "/usr" || \ + test "$opal_check_package_libdir" = "/usr/local"], + [ # try as is... + AC_VERBOSE([looking for library without search path]) + AC_SEARCH_LIBS([$3], [$2], + [opal_check_package_lib_happy="yes"], + [opal_check_package_lib_happy="no"], [$4]) + AS_IF([test "$opal_check_package_lib_happy" = "no"], + [ # no go on the as is.. see what happens later... + LDFLAGS="$opal_check_package_$1_save_LDFLAGS" + $1_LDFLAGS="$opal_check_package_$1_orig_LDFLAGS" + unset opal_Lib])]) + + AS_IF([test "$opal_check_package_lib_happy" = "no"], + [AS_IF([test "$opal_check_package_libdir" != ""], + [$1_LDFLAGS="$$1_LDFLAGS -L$opal_check_package_libdir/lib" + LDFLAGS="$LDFLAGS -L$opal_check_package_libdir/lib" + AC_VERBOSE([looking for library in lib]) + AC_SEARCH_LIBS([$3], [$2], + [opal_check_package_lib_happy="yes"], + [opal_check_package_lib_happy="no"], [$4]) + AS_IF([test "$opal_check_package_lib_happy" = "no"], + [ # no go on the as is.. see what happens later... + LDFLAGS="$opal_check_package_$1_save_LDFLAGS" + $1_LDFLAGS="$opal_check_package_$1_orig_LDFLAGS" + unset opal_Lib])])]) + + AS_IF([test "$opal_check_package_lib_happy" = "no"], + [AS_IF([test "$opal_check_package_libdir" != ""], + [$1_LDFLAGS="$$1_LDFLAGS -L$opal_check_package_libdir/lib64" + LDFLAGS="$LDFLAGS -L$opal_check_package_libdir/lib64" + AC_VERBOSE([looking for library in lib64]) + AC_SEARCH_LIBS([$3], [$2], + [opal_check_package_lib_happy="yes"], + [opal_check_package_lib_happy="no"], [$4]) + AS_IF([test "$opal_check_package_lib_happy" = "no"], + [ # no go on the as is.. see what happens later... + LDFLAGS="$opal_check_package_$1_save_LDFLAGS" + $1_LDFLAGS="$opal_check_package_$1_orig_LDFLAGS" + unset opal_Lib])])])]) + + AS_IF([test "$opal_check_package_lib_happy" = "yes"], + [ # libnl v1 and libnl3 are known to *not* coexist + # harmoniously in the same process. Check to see if this + # new package will introduce such a conflict. + OPAL_LIBNL_SANITY_CHECK([$2], [$3], [$$1_LIBS], + [opal_check_package_libnl_check_ok]) + AS_IF([test $opal_check_package_libnl_check_ok -eq 0], + [opal_check_package_lib_happy=no]) + ]) + + AS_IF([test "$opal_check_package_lib_happy" = "yes"], + [ # The result of AC SEARCH_LIBS is cached in $ac_cv_search_[function] + AS_IF([test "$ac_cv_search_$3" != "no" && + test "$ac_cv_search_$3" != "none required"], + [$1_LIBS="$ac_cv_search_$3 $4"], + [$1_LIBS="$4"]) + $7], + [$8]) + + AS_VAR_POPDEF([opal_Lib])dnl +]) + + +dnl OPAL_CHECK_PACKAGE(prefix, +dnl header, +dnl library, +dnl function, +dnl extra-libraries, +dnl dir-prefix, +dnl libdir-prefix, +dnl [action-if-found], [action-if-not-found], +dnl includes) +dnl ----------------------------------------------------------- +dnl Check for package defined by header and libs, and probably +dnl located in dir-prefix, possibly with libs in libdir-prefix. +dnl Both dir-prefix and libdir-prefix can be empty. Will set +dnl prefix_{CPPFLAGS, LDFLAGS, LIBS} as needed. +dnl +dnl The general intent of this macro is to provide finer-grained scoping +dnl of C preprocessor flags, linker flags, and libraries (as opposed to +dnl unconditionally adding to the top-level CPFLAGS, LDFLAGS, and LIBS, +dnl which get used to compile/link *everything*). +dnl +dnl Here is a breakdown of the parameters: +dnl +dnl * prefix: the macro sets $prefix_CPPFLAGS, $prefix_LDFLAGS, and +dnl $prefix_LIBS (and AC_SUBSTs all of them). For example, if a +dnl provider uses this macro to check for a header/library that it +dnl needs, it might well set prefix to be its provider name. +dnl * header_filename: the foo.h file to check for +dnl * library_name / function_name: check for function function_name in +dnl -llibrary_name. Specifically, for library_name, use the "foo" form, +dnl as opposed to "libfoo". +dnl * extra_libraries: if the library_name you are checking for requires +dnl additonal -l arguments to link successfully, list them here. +dnl * dir_prefix: if the header/library is located in a non-standard +dnl location (e.g., /opt/foo as opposed to /usr), list it here +dnl * libdir_prefix: if the library is not under $dir_prefix/lib or +dnl $dir_prefix/lib64, list it here. +dnl * action_if_found: if both the header and library are found and +dnl usable, execute action_if_found +dnl * action_if_not_found: otherwise, execute action_if_not_found +dnl * extra_includes: if including header_filename requires additional +dnl headers to be included first, list them here +dnl +dnl The output _CPPFLAGS, _LDFLAGS, and _LIBS can be used to limit the +dnl scope various flags in Makefiles. +dnl +AC_DEFUN([OPAL_CHECK_PACKAGE],[ + opal_check_package_$1_save_CPPFLAGS="$CPPFLAGS" + opal_check_package_$1_save_LDFLAGS="$LDFLAGS" + opal_check_package_$1_save_LIBS="$LIBS" + + opal_check_package_$1_orig_CPPFLAGS="$$1_CPPFLAGS" + opal_check_package_$1_orig_LDFLAGS="$$1_LDFLAGS" + opal_check_package_$1_orig_LIBS="$$1_LIBS" + + _OPAL_CHECK_PACKAGE_HEADER([$1], [$2], [$6], + [_OPAL_CHECK_PACKAGE_LIB([$1], [$3], [$4], [$5], [$6], [$7], + [opal_check_package_happy="yes"], + [opal_check_package_happy="no"])], + [opal_check_package_happy="no"], + [$10]) + + AS_IF([test "$opal_check_package_happy" = "yes"], + [$8], + [$1_CPPFLAGS="$opal_check_package_$1_orig_CPPFLAGS" + $1_LDFLAGS="$opal_check_package_$1_orig_LDFLAGS" + $1_LIBS="$opal_check_package_$1_orig_LIBS" + $9]) + + CPPFLAGS="$opal_check_package_$1_save_CPPFLAGS" + LDFLAGS="$opal_check_package_$1_save_LDFLAGS" + LIBS="$opal_check_package_$1_save_LIBS" +]) diff --git a/config/opal_check_pmi.m4 b/config/opal_check_pmi.m4 new file mode 100644 index 00000000..b62327e3 --- /dev/null +++ b/config/opal_check_pmi.m4 @@ -0,0 +1,371 @@ +# -*- shell-script ; indent-tabs-mode:nil -*- +# +# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2009-2015 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2011-2014 Los Alamos National Security, LLC. All rights +# reserved. +# Copyright (c) 2014-2016 Intel, Inc. All rights reserved. +# Copyright (c) 2014-2018 Research Organization for Information Science +# and Technology (RIST). All rights reserved. +# Copyright (c) 2016 IBM Corporation. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# define an internal function for checking the existence +# and validity of a PMI library +# +# OPAL_CHECK_PMI_LIB(installdir, libdir, pmi, function, [action-if-slurm], [action-if-valid], [action-if-not-valid]) +# -------------------------------------------------------- +AC_DEFUN([OPAL_CHECK_PMI_LIB], +[ + # save flags + opal_check_$3_save_CPPFLAGS=$CPPFLAGS + opal_check_$3_save_LDFLAGS=$LDFLAGS + opal_check_$3_save_LIBS=$LIBS + opal_check_$3_hdr_happy= + opal_check_$3_mycppflags= + + # check for the header + AS_IF([test -n "$1"], + [AC_MSG_CHECKING([for $3.h in $1]) + AS_IF([test -f $1/$3.h && test -r $1/$3.h], + [AC_MSG_RESULT([found]) + opal_check_$3_mycppflags="-I$1"], + [AC_MSG_RESULT([not found]) + AC_MSG_CHECKING([for $3.h in $1/include]) + AS_IF([test -f $1/include/$3.h && test -r $1/include/$3.h], + [AC_MSG_RESULT([found]) + opal_check_$3_mycppflags="-I$1/include"], + [AC_MSG_RESULT([not found]) + AC_MSG_CHECKING([for $3.h in $1/include/slurm]) + AS_IF([test -f $1/include/slurm/$3.h && test -r $1/include/slurm/$3.h], + [AC_MSG_RESULT([found]) + opal_check_$3_mycppflags="-I$1/include/slurm" + $5], + [AC_MSG_RESULT([not found]) + opal_check_$3_hdr_happy=no])])])], + [AC_MSG_CHECKING([for $3.h in /usr/include]) + AS_IF([test -f /usr/include/$3.h && test -r /usr/include/$3.h], + [AC_MSG_RESULT([found])], + [AC_MSG_RESULT([not found]) + AC_MSG_CHECKING([for $3.h in /usr/include/slurm]) + AS_IF([test -f /usr/include/slurm/$3.h && test -r /usr/include/slurm/$3.h], + [AC_MSG_RESULT([found]) + opal_check_$3_mycppflags="-I/usr/include/slurm" + $5], + [AC_MSG_RESULT([not found]) + opal_check_$3_hdr_happy=no])])]) + + AS_IF([test "$opal_check_$3_hdr_happy" != "no"], + [CPPFLAGS="$CPPFLAGS $opal_check_$3_mycppflags" + AC_CHECK_HEADER([$3.h], + [opal_check_$3_hdr_happy=yes + $3_CPPFLAGS="$opal_check_$3_mycppflags"], + [opal_check_$3_hdr_happy=no])]) + + # check for library and function + opal_check_$3_lib_happy= + LIBS="$LIBS -l$3" + + # check for the library in the given location in case + # an exact path was given + AS_IF([test -z "$1" && test -z "$2"], + [AC_CHECK_LIB([$3], [$4], + [opal_check_$3_lib_happy=yes], + [opal_check_$3_lib_happy=no])], + [AS_IF([test -n "$2"], + [AC_MSG_CHECKING([for lib$3 in $2]) + files=`ls $2/lib$3.* 2> /dev/null | wc -l` + AS_IF([test "$files" -gt "0"], + [AC_MSG_RESULT([found]) + LDFLAGS="$LDFLAGS -L$2" + AC_CHECK_LIB([$3], [$4], + [opal_check_$3_lib_happy=yes + $3_LDFLAGS=-L$2 + $3_rpath=$2], + [opal_check_$3_lib_happy=no])], + [opal_check_$3_lib_happy=no + AC_MSG_RESULT([not found])])], + [AC_MSG_CHECKING([for lib$3 in $1/lib]) + files=`ls $1/lib/lib$3.* 2> /dev/null | wc -l` + AS_IF([test "$files" -gt "0"], + [AC_MSG_RESULT([found]) + LDFLAGS="$LDFLAGS -L$1/lib" + AC_CHECK_LIB([$3], [$4], + [opal_check_$3_lib_happy=yes + $3_LDFLAGS=-L$1/lib + $3_rpath=$1/lib], + [opal_check_$3_lib_happy=no])], + [# check for presence of lib64 directory - if found, see if the + # desired library is present and matches our build requirements + AC_MSG_CHECKING([for lib$3 in $1/lib64]) + files=`ls $1/lib64/lib$3.* 2> /dev/null | wc -l` + AS_IF([test "$files" -gt "0"], + [AC_MSG_RESULT([found]) + LDFLAGS="$LDFLAGS -L$1/lib64" + AC_CHECK_LIB([$3], [$4], + [opal_check_$3_lib_happy=yes + $3_LDFLAGS=-L$1/lib64 + $3_rpath=$1/lib64], + [opal_check_$3_lib_happy=no])], + [opal_check_$3_lib_happy=no + AC_MSG_RESULT([not found])])])])]) + + # restore flags + CPPFLAGS=$opal_check_$3_save_CPPFLAGS + LDFLAGS=$opal_check_$3_save_LDFLAGS + LIBS=$opal_check_$3_save_LIBS + + AS_IF([test "$opal_check_$3_hdr_happy" = "yes" && test "$opal_check_$3_lib_happy" = "yes"], + [$6], [$7]) + +]) + +# OPAL_CHECK_PMI() +# -------------------------------------------------------- +AC_DEFUN([OPAL_CHECK_PMI],[ + OPAL_VAR_SCOPE_PUSH([check_pmi_install_dir check_pmi_lib_dir default_pmi_libloc slurm_pmi_found]) + + AC_ARG_WITH([pmi], + [AC_HELP_STRING([--with-pmi(=DIR)], + [Build PMI support, optionally adding DIR to the search path (default: no)])], + [], with_pmi=no) + + AC_ARG_WITH([pmi-libdir], + [AC_HELP_STRING([--with-pmi-libdir=DIR], + [Look for libpmi or libpmi2 in the given directory DIR, DIR/lib or DIR/lib64])]) + + check_pmi_install_dir= + check_pmi_lib_dir= + default_pmi_libloc= + slurm_pmi_found= + + AC_MSG_CHECKING([if user requested PMI support]) + AS_IF([test "$with_pmi" = "no"], + [AC_MSG_RESULT([no]) + $3], + [AC_MSG_RESULT([yes]) + # cannot use OPAL_CHECK_PACKAGE as its backend header + # support appends "include" to the path, which won't + # work with slurm :-( + AS_IF([test -n "$with_pmi" && test "$with_pmi" != "yes"], + [check_pmi_install_dir=$with_pmi]) + AS_IF([test -n "$with_pmi_libdir"], + [check_pmi_lib_dir=$with_pmi_libdir]) + + # check for pmi-1 lib */ + slurm_pmi_found=no + OPAL_CHECK_PMI_LIB([$check_pmi_install_dir], + [$check_pmi_lib_dir], + [pmi], [PMI_Init], + [slurm_pmi_found=yes], + [opal_enable_pmi1=yes + opal_pmi1_LIBS="-lpmi" + AC_SUBST(opal_pmi1_LIBS)], + [opal_enable_pmi1=no]) + + AS_IF([test "$opal_enable_pmi1" = "yes"], + [AS_IF([test "$slurm_pmi_found" = "yes"], + [opal_pmi1_CPPFLAGS="$pmi_CPPFLAGS" + AC_SUBST(opal_pmi1_CPPFLAGS)]) + AS_IF([test "$slurm_pmi_found" = "yes"], + [opal_pmi1_LDFLAGS="$pmi_LDFLAGS" + AC_SUBST(opal_pmi1_LDFLAGS) + opal_pmi1_rpath="$pmi_rpath" + AC_SUBST(opal_pmi1_rpath)])]) + + # check for pmi2 lib */ + slurm_pmi_found=no + OPAL_CHECK_PMI_LIB([$check_pmi_install_dir], + [$check_pmi_lib_dir], + [pmi2], [PMI2_Init], + [slurm_pmi_found=yes], + [opal_enable_pmi2=yes + opal_pmi2_LIBS="-lpmi2" + AC_SUBST(opal_pmi2_LIBS)], + [opal_enable_pmi2=no]) + + AS_IF([test "$opal_enable_pmi2" = "yes"], + [AS_IF([test "$slurm_pmi_found" = "yes"], + [opal_pmi2_CPPFLAGS="$pmi2_CPPFLAGS" + AC_SUBST(opal_pmi2_CPPFLAGS)]) + AS_IF([test "$slurm_pmi_found" = "yes"], + [opal_pmi2_LDFLAGS="$pmi2_LDFLAGS" + AC_SUBST(opal_pmi2_LDFLAGS) + opal_pmi2_rpath="$pmi2_rpath" + AC_SUBST(opal_pmi2_rpath)])]) + + # since support was explicitly requested, then we should error out + # if we didn't find the required support + AC_MSG_CHECKING([can PMI support be built]) + AS_IF([test "$opal_enable_pmi1" != "yes" && test "$opal_enable_pmi2" != "yes"], + [AC_MSG_RESULT([no]) + AC_MSG_WARN([PMI support requested (via --with-pmi) but neither pmi.h]) + AC_MSG_WARN([nor pmi2.h were found under locations:]) + AC_MSG_WARN([ $check_pmi_install_dir]) + AC_MSG_WARN([ $check_pmi_install_dir/slurm]) + AC_MSG_WARN([Specified path: $with_pmi]) + AC_MSG_WARN([OR neither libpmi nor libpmi2 were found under:]) + AC_MSG_WARN([ $check_pmi_lib_dir/lib]) + AC_MSG_WARN([ $check_pmi_lib_dir/lib64]) + AC_MSG_WARN([Specified path: $with_pmi_libdir]) + AC_MSG_ERROR([Aborting])], + [AC_MSG_RESULT([yes])]) + ]) + + OPAL_VAR_SCOPE_POP +]) + +AC_DEFUN([OPAL_CHECK_PMIX],[ + + OPAL_VAR_SCOPE_PUSH([opal_external_pmix_save_CPPFLAGS opal_external_pmix_save_LDFLAGS opal_external_pmix_save_LIBS]) + + AC_ARG_WITH([pmix], + [AC_HELP_STRING([--with-pmix(=DIR)], + [Build PMIx support. DIR can take one of three values: "internal", "external", or a valid directory name. "internal" (or no DIR value) forces Open MPI to use its internal copy of PMIx. "external" forces Open MPI to use an external installation of PMIx. Supplying a valid directory name also forces Open MPI to use an external installation of PMIx, and adds DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries. Note that Open MPI does not support --without-pmix.])]) + + AC_ARG_WITH([pmix-libdir], + [AC_HELP_STRING([--with-pmix-libdir=DIR], + [Look for libpmix the given directory DIR, DIR/lib or DIR/lib64])]) + + AS_IF([test "$with_pmix" = "no"], + [AC_MSG_WARN([Open MPI requires PMIx support. It can be built]) + AC_MSG_WARN([with either its own internal copy of PMIx, or with]) + AC_MSG_WARN([an external copy that you supply.]) + AC_MSG_ERROR([Cannot continue])]) + + AC_MSG_CHECKING([if user requested external PMIx support($with_pmix)]) + opal_external_have_pmix1=0 + AS_IF([test -z "$with_pmix" || test "$with_pmix" = "yes" || test "$with_pmix" = "internal"], + [AC_MSG_RESULT([no]) + opal_external_pmix_happy=no], + + [AC_MSG_RESULT([yes]) + # check for external pmix lib */ + AS_IF([test "$with_pmix" = "external"], + [pmix_ext_install_dir=/usr], + [pmix_ext_install_dir=$with_pmix]) + + # Make sure we have the headers and libs in the correct location + OPAL_CHECK_WITHDIR([external-pmix], [$pmix_ext_install_dir/include], [pmix.h]) + + AS_IF([test -n "$with_pmix_libdir"], + [AC_MSG_CHECKING([libpmix.* in $with_pmix_libdir]) + files=`ls $with_pmix_libdir/libpmix.* 2> /dev/null | wc -l` + AS_IF([test "$files" -gt 0], + [pmix_ext_install_libdir=$with_pmix_libdir], + [AC_MSG_CHECKING([libpmix.* in $with_pmix_libdir/lib64]) + files=`ls $with_pmix_libdir/lib64/libpmix.* 2> /dev/null | wc -l` + AS_IF([test "$files" -gt 0], + [pmix_ext_install_libdir=$with_pmix_libdir/lib64], + [AC_MSG_CHECKING([libpmix.* in $with_pmix_libdir/lib]) + files=`ls $with_pmix_libdir/lib/libpmix.* 2> /dev/null | wc -l` + AS_IF([test "$files" -gt 0], + [pmix_ext_install_libdir=$with_pmix_libdir/lib], + [AC_MSG_RESULT([not found]) + AC_MSG_ERROR([Cannot continue])])])])], + [# check for presence of lib64 directory - if found, see if the + # desired library is present and matches our build requirements + AC_MSG_CHECKING([libpmix.* in $pmix_ext_install_dir/lib64]) + files=`ls $pmix_ext_install_dir/lib64/libpmix.* 2> /dev/null | wc -l` + AS_IF([test "$files" -gt 0], + [pmix_ext_install_libdir=$pmix_ext_install_dir/lib64], + [AC_MSG_CHECKING([libpmix.* in $pmix_ext_install_dir/lib]) + files=`ls $pmix_ext_install_dir/lib/libpmix.* 2> /dev/null | wc -l` + AS_IF([test "$files" -gt 0], + [pmix_ext_install_libdir=$pmix_ext_install_dir/lib], + [AC_MSG_RESULT([not found]) + AC_MSG_ERROR([Cannot continue])])])]) + + # check the version + opal_external_pmix_save_CPPFLAGS=$CPPFLAGS + opal_external_pmix_save_LDFLAGS=$LDFLAGS + opal_external_pmix_save_LIBS=$LIBS + + # if the pmix_version.h file does not exist, then + # this must be from a pre-1.1.5 version + AC_MSG_CHECKING([PMIx version]) + CPPFLAGS="-I$pmix_ext_install_dir/include $CPPFLAGS" + AS_IF([test "x`ls $pmix_ext_install_dir/include/pmix_version.h 2> /dev/null`" = "x"], + [AC_MSG_RESULT([version file not found - assuming v1.1.4]) + opal_external_pmix_version_found=1 + opal_external_pmix_version=114 + opal_external_have_pmix1=1], + [AC_MSG_RESULT([version file found]) + opal_external_pmix_version_found=0]) + + # if it does exist, then we need to parse it to find + # the actual release series + AS_IF([test "$opal_external_pmix_version_found" = "0"], + [AC_MSG_CHECKING([version 3x]) + AC_PREPROC_IFELSE([AC_LANG_PROGRAM([ + #include + #if (PMIX_VERSION_MAJOR != 3L) + #error "not version 3" + #endif + ], [])], + [AC_MSG_RESULT([found]) + opal_external_pmix_version=3x + opal_external_pmix_version_found=1], + [AC_MSG_RESULT([not found])])]) + + AS_IF([test "$opal_external_pmix_version_found" = "0"], + [AC_MSG_CHECKING([version 2x]) + AC_PREPROC_IFELSE([AC_LANG_PROGRAM([ + #include + #if (PMIX_VERSION_MAJOR != 2L) + #error "not version 2" + #endif + ], [])], + [AC_MSG_RESULT([found]) + opal_external_pmix_version=2x + opal_external_pmix_version_found=1], + [AC_MSG_RESULT([not found])])]) + + AS_IF([test "$opal_external_pmix_version_found" = "0"], + [AC_MSG_CHECKING([version 1x]) + AC_PREPROC_IFELSE([AC_LANG_PROGRAM([ + #include + #if (PMIX_VERSION_MAJOR != 1L) + #error "not version 1" + #endif + ], [])], + [AC_MSG_RESULT([found]) + opal_external_pmix_version=1x + opal_external_pmix_version_found=1 + opal_external_have_pmix1=1], + [AC_MSG_RESULT([not found])])]) + + AS_IF([test "x$opal_external_pmix_version" = "x"], + [AC_MSG_WARN([External PMIx support requested, but version]) + AC_MSG_WARN([information of the external lib could not]) + AC_MSG_WARN([be detected]) + AC_MSG_ERROR([cannot continue])]) + + CPPFLAGS=$opal_external_pmix_save_CPPFLAGS + LDFLAGS=$opal_external_pmix_save_LDFLAGS + LIBS=$opal_external_pmix_save_LIBS + + AS_IF([test "$pmix_ext_install_dir" != "/usr"], + [opal_external_pmix_CPPFLAGS="-I$pmix_ext_install_dir/include" + opal_external_pmix_LDFLAGS=-L$pmix_ext_install_libdir]) + opal_external_pmix_LIBS=-lpmix + opal_external_pmix_happy=yes]) + + AC_DEFINE_UNQUOTED([OPAL_PMIX_V1],[$opal_external_have_pmix1], + [Whether the external PMIx library is v1]) + OPAL_VAR_SCOPE_POP +]) diff --git a/config/opal_check_portals4.m4 b/config/opal_check_portals4.m4 new file mode 100644 index 00000000..086bb3f6 --- /dev/null +++ b/config/opal_check_portals4.m4 @@ -0,0 +1,109 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2006 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2006 QLogic Corp. All rights reserved. +dnl Copyright (c) 2009-2016 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl Copyright (c) 2016 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OPAL_CHECK_PORTALS4(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +# check if PORTALS4 support can be found. sets prefix_{CPPFLAGS, +# LDFLAGS, LIBS} as needed and runs action-if-found if there is +# support, otherwise executes action-if-not-found +AC_DEFUN([OPAL_CHECK_PORTALS4],[ + if test -z "$ompi_check_portals4_happy" ; then + AC_ARG_WITH([portals4], + [AC_HELP_STRING([--with-portals4(=DIR)], + [Build Portals4 support, optionally adding DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries])]) + OPAL_CHECK_WITHDIR([portals4], [$with_portals4], [include/portals4.h]) + AC_ARG_WITH([portals4-libdir], + [AC_HELP_STRING([--with-portals4-libdir=DIR], + [Search for Portals4 libraries in DIR])]) + OPAL_CHECK_WITHDIR([portals4-libdir], [$with_portals4_libdir], [libportals.*]) + + ompi_check_portals4_$1_save_CPPFLAGS="$CPPFLAGS" + ompi_check_portals4_$1_save_LDFLAGS="$LDFLAGS" + ompi_check_portals4_$1_save_LIBS="$LIBS" + + AS_IF([test "$with_portals4" != "no"], + [AS_IF([test ! -z "$with_portals4" && test "$with_portals4" != "yes"], + [ompi_check_portals4_dir="$with_portals4"]) + AS_IF([test ! -z "$with_portals4_libdir" && test "$with_portals4_libdir" != "yes"], + [ompi_check_portals4_libdir="$with_portals4_libdir"]) + + OPAL_CHECK_PACKAGE([opal_check_portals4], + [portals4.h], + [portals], + [PtlLEAppend], + [], + [$ompi_check_portals4_dir], + [$ompi_check_portals4_libdir], + [ompi_check_portals4_happy="yes"], + [ompi_check_portals4_happy="no"])], + [ompi_check_portals4_happy="no"]) + + CPPFLAGS="$ompi_check_portals4_$1_save_CPPFLAGS" + LDFLAGS="$ompi_check_portals4_$1_save_LDFLAGS" + LIBS="$ompi_check_portals4_$1_save_LIBS" + + max_md_size=0 + AC_ARG_WITH([portals4-max-md-size], + [AC_HELP_STRING([--with-portals4-max-md-size=SIZE], + [Log base 2 of the maximum size in bytes of a memory descriptor. Should only be set for implementations which do not support binding all of virtual address space.])]) + AS_IF([test "$with_portals4_max_md_size" = "yes" || test "$with_portals4_max_md_size" = "no"], + [AC_MSG_ERROR([--with-portals4-max-md-size requires an integer argument])], + [AS_IF([test -n "$with_portals4_max_md_size"], + [max_md_size="$with_portals4_max_md_size"])]) + AC_DEFINE_UNQUOTED([OPAL_PORTALS4_MAX_MD_SIZE], [$max_md_size], + [Log base 2 of the maximum size in bytes of a memory descriptor. Set to 0 if MD can bind all of memory.]) + + max_va_size=0 + AC_ARG_WITH([portals4-max-va-size], + [AC_HELP_STRING([--with-portals4-max-va-size=SIZE], + [Log base 2 of the maximum size in bytes of the user virtual address space. Should only be set for implementations which do not support binding all of virtual address space.])]) + AS_IF([test "$with_portals4_max_va_size" = "yes" || test "$with_portals4_max_va_size" = "no"], + [AC_MSG_ERROR([--with-portals4-max-va-size requires an integer argument])], + [AS_IF([test -n "$with_portals4_max_va_size"], + [max_va_size="$with_portals4_max_va_size"])]) + AC_DEFINE_UNQUOTED([OPAL_PORTALS4_MAX_VA_SIZE], [$max_va_size], + [Log base 2 of the maximum size in bytes of the user virtual address space. Set to 0 if MD can bind all of memory.]) + + AS_IF([(test $max_md_size -eq 0 && test $max_va_size -ne 0 ) || (test $max_md_size -ne 0 && test $max_va_size -eq 0 )], + [AC_ERROR([If either --with-portals4-max-md-size or --with-portals4-max-va-size is set, both must be set.])]) + AS_IF([test $max_md_size -ge $max_va_size], + [max_md_size=0 + max_va_size=0]) + AS_IF([test $max_md_size -ne 0 && test $max_va_size -ne 0], + [AC_MSG_NOTICE([Portals 4 address space size: $max_md_size, $max_va_size])]) + + OPAL_SUMMARY_ADD([[Transports]],[[Portals4]],[$1],[$ompi_check_portals4_happy]) + fi + + AS_IF([test "$ompi_check_portals4_happy" = "yes"], + [$1_LDFLAGS="[$]$1_LDFLAGS $opal_check_portals4_LDFLAGS" + $1_CPPFLAGS="[$]$1_CPPFLAGS $opal_check_portals4_CPPFLAGS" + $1_LIBS="[$]$1_LIBS $opal_check_portals4_LIBS" + $2], + [AS_IF([test ! -z "$with_portals4" && test "$with_portals4" != "no"], + [AC_MSG_ERROR([Portals4 support requested but not found. Aborting])]) + $3]) +]) + diff --git a/config/opal_check_ps.m4 b/config/opal_check_ps.m4 new file mode 100644 index 00000000..8a47b1c8 --- /dev/null +++ b/config/opal_check_ps.m4 @@ -0,0 +1,44 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. +dnl Copyright (c) 2008 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2014 Intel, Inc. All rights reserved. +dnl Copyright (c) 2017 UT-Battelle, LLC. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# See if there is a ps command that will produce the output we are +# interested in. If so, then save it away. Otherwise, the string is +# set to unknown. + +AC_DEFUN([OPAL_PS_FLAVOR_CHECK],[ +AC_MSG_CHECKING([for flavor of ps to use]) +PS_FLAVOR="unknown" +ps -A -o fname > /dev/null 2>&1 + +if test "$?" = "0"; then + PS_FLAVOR="ps -A -o fname,pid,uid" +else + ps -A -o command > /dev/null 2>&1 + if test "$?" = "0"; then + PS_FLAVOR="ps -A -o command,pid,uid" + fi +fi +AC_MSG_RESULT([$PS_FLAVOR]) +AC_DEFINE_UNQUOTED([ORTE_CLEAN_PS_CMD], ["$PS_FLAVOR"], [Specific ps command to use in orte-clean]) +]) + diff --git a/config/opal_check_pthread_pids.m4 b/config/opal_check_pthread_pids.m4 new file mode 100644 index 00000000..cb3b20a8 --- /dev/null +++ b/config/opal_check_pthread_pids.m4 @@ -0,0 +1,112 @@ +dnl +dnl Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2008-2013 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +AC_DEFUN([OPAL_CHECK_PTHREAD_PIDS],[ +# +# Arguments: none +# +# Dependencies: None +# +# Sets: +# OPAL_THREADS_HAVE_DIFFERENT_PIDS (variable) +# +# Test for Linux-like threads in the system. OPAL no longer supports +# systems with different PIDs for threads in the same process, so error +# out if we detect that case. +# + +AC_MSG_CHECKING([if threads have different pids (pthreads on linux)]) + +OPAL_VAR_SCOPE_PUSH([CFLAGS_save CPPFLAGS_save LDFLAGS_save LIBS_save MSG]) +CFLAGS_save="$CFLAGS" +CFLAGS="$CFLAGS $THREAD_CFLAGS" +CPPFLAGS_save="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $THREAD_CPPFLAGS" +LDFLAGS_save="$LDFLAGS" +LDFLAGS="$LDFLAGS $THREAD_LDFLAGS" +LIBS_save="$LIBS" +LIBS="$LIBS $THREAD_LIBS" +AC_RUN_IFELSE([AC_LANG_SOURCE([#include +#include +#include +#include + +void *checkpid(void *arg); +int main() { + pthread_t thr; + int pid, *retval; + pid = getpid(); + pthread_create(&thr, NULL, checkpid, &pid); + pthread_join(thr, (void **) &retval); + exit(*retval); +} + +static int ret; +void *checkpid(void *arg) { + int ppid = *((int *) arg); + if (ppid == getpid()) + ret = 0; + else + ret = 1; + pthread_exit((void *) &ret); +}])], +[MSG=no OPAL_THREADS_HAVE_DIFFERENT_PIDS=0], +[MSG=yes OPAL_THREADS_HAVE_DIFFERENT_PIDS=1], +[ + # If we're cross compiling, we can't do another AC_* function here beause + # it we haven't displayed the result from the last one yet. So defer + # another test until below. + OPAL_THREADS_HAVE_DIFFERENT_PIDS= + MSG="cross compiling (need another test)"]) + +CFLAGS="$CFLAGS_save" +CPPFLAGS="$CPPFLAGS_save" +LDFLAGS="$LDFLAGS_save" +LIBS="$LIBS_save" + +AC_MSG_RESULT([$MSG]) + +AS_IF([test "x$OPAL_THREADS_HAVE_DIFFERENT_PIDS" = "x"], + [ # If we are cross-compiling, look for the symbol + # __linuxthreads_create_event, which seems to only exist in the + # Linux Threads-based pthreads implementation (i.e., the one + # that has different PIDs for each thread). We *could* switch + # on $host here and only test *linux* hosts, but this test is + # pretty unique, so why bother? Note that AC_CHECK_FUNC works + # properly in cross-compiling environments in recent-enough + # versions of Autoconf (which is one of the reasons we mandate + # recent versions in autogen!). + AC_CHECK_FUNC([__linuxthreads_create_event], + [OPAL_THREADS_HAVE_DIFFERENT_PIDS=1])]) + +AS_IF([test "$OPAL_THREADS_HAVE_DIFFERENT_PIDS" = "1"], + [AC_MSG_WARN([This version of Open MPI only supports environments where]) + AC_MSG_WARN([threads have the same PID. Please use an older version of]) + AC_MSG_WARN([Open MPI if you need support on systems with different]) + AC_MSG_WARN([PIDs for threads in the same process. Open MPI 1.4.x]) + AC_MSG_WARN([supports such systems, as does at least some versions the]) + AC_MSG_WARN([Open MPI 1.5.x series.]) + AC_MSG_ERROR([Cannot continue]) + ]) + +# +# if pthreads is not available, then the system does not have an insane threads +# model +# +OPAL_VAR_SCOPE_POP])dnl diff --git a/config/opal_check_singularity.m4 b/config/opal_check_singularity.m4 new file mode 100644 index 00000000..1b0c38bd --- /dev/null +++ b/config/opal_check_singularity.m4 @@ -0,0 +1,60 @@ +# -*- shell-script ; indent-tabs-mode:nil -*- +# +# Copyright (c) 2016 Intel, Inc. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# OPAL_CHECK_SINGULARITY(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +AC_DEFUN([OPAL_CHECK_SINGULARITY],[ + OPAL_VAR_SCOPE_PUSH([spath have_singularity]) + + AC_ARG_WITH([singularity], + [AC_HELP_STRING([--with-singularity(=DIR)], + [Build support for the Singularity container, optionally adding DIR to the search path])]) + spath= + AC_MSG_CHECKING([if Singularity support is to be built]) + AS_IF([test "$with_singularity" = "no"], + [AC_MSG_RESULT([no]) + have_singularity=no], + [AC_MSG_RESULT([yes]) + AS_IF([test -z "$with_singularity" || test "$with_singularity" = "yes"], + [ # look for the singularity command in the default path + AC_CHECK_PROG([SINGULARITY], [singularity], [singularity]) + AS_IF([test "$SINGULARITY" != ""], + [have_singularity=yes], + [AS_IF([test "$with_singularity" = "yes"], + [AC_MSG_WARN([Singularity support requested, but required executable]) + AC_MSG_WARN(["singularity" not found in default locations]) + AC_MSG_ERROR([Cannot continue])]) + have_singularity=no])], + [ AC_MSG_CHECKING([for existence of $with_singularity/bin]) + # look for the singularity command in the bin subdirectory + AS_IF([test ! -d "$with_singularity/bin"], + [AC_MSG_RESULT([not found]) + AC_MSG_WARN([Directory $with_singularity/bin not found]) + AC_MSG_ERROR([Cannot continue])], + [AC_MSG_RESULT([found])]) + save_path=$PATH + PATH=$with_singularity/bin:$PATH + AC_CHECK_PROG([SINGULARITY], [singularity], [singularity]) + AS_IF([test "$SINGULARITY" != ""], + [have_singularity=yes + spath=$with_singularity/bin], + [have_singlarity=no + AC_MSG_WARN([Singularity support requested, but required executable]) + AC_MSG_WARN(["singularity" not found in either default or specified path]) + AC_MSG_ERROR([Cannot continue])]) + PATH=$save_path + ] + )]) + + AC_DEFINE_UNQUOTED(OPAL_SINGULARITY_PATH, "$spath", [Path to Singularity binaries]) + AS_IF([test "$have_singularity" = "yes"], + [$2], [$3]) + OPAL_VAR_SCOPE_POP +]) diff --git a/config/opal_check_ugni.m4 b/config/opal_check_ugni.m4 new file mode 100644 index 00000000..6ae8bc25 --- /dev/null +++ b/config/opal_check_ugni.m4 @@ -0,0 +1,82 @@ +dnl -*- Mode: Shell-script ; indent-tabs-mode:nil -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2006 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2006 QLogic Corp. All rights reserved. +dnl Copyright (c) 2009-2016 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2011-2016 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl Copyright (c) 2014 Intel, Inc. All rights reserved +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OPAL_CHECK_UGNI(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +# check if GNI support can be found. sets prefix_{CPPFLAGS, +# LDFLAGS, LIBS} as needed and runs action-if-found if there is +# support, otherwise executes action-if-not-found +# + +AC_DEFUN([OPAL_CHECK_UGNI], [ + if test -z "$opal_check_ugni_happy" ; then + AC_ARG_WITH([ugni], [AC_HELP_STRING([--with-ugni], + [Build support for Cray GNI. Set PKG_CONFIG_PATH env. variable to specify alternate path.])]) + + opal_check_ugni_happy="no" + + AS_IF([test "$with_ugni" = "no"], + [opal_check_ugni_happy="no"], + [PKG_CHECK_MODULES([CRAY_UGNI], [cray-ugni], + [opal_check_ugni_happy="yes"], + [opal_check_ugni_happy="no"])]) + + opal_check_ugni_$1_save_CPPFLAGS="$CPPFLAGS" + opal_check_ugni_$1_save_LIBS="$LIBS" + + if test "$opal_check_ugni_happy" = "yes" ; then + CPPFLAGS="$CPPFLAGS $CRAY_UGNI_CFLAGS" + LIBS="$LIBS $CRAY_UGNI_LIBS" +# echo "+++++++++++++++++++++++CPPFLAGS",$CPPFLAGS +# echo "+++++++++++++++++++++++LDFLAGSS",$LDFLAGS +# echo "+++++++++++++++++++++++1_CPPFLAGS",$$1_CPPFLAGS +# echo "+++++++++++++++++++++++1_LDFLAGSS",$$1_LDFLAGS + +# sanity checks + + AC_CHECK_HEADER([gni_pub.h],[],AC_MSG_ERROR(['gni_pub.h not found.'])) + AC_CHECK_FUNCS([GNI_GetJobResInfo]) + + CPPFLAGS="$opal_check_ugni_$1_save_CPPFLAGS" + LIBS="$opal_check_ugni_$1_save_LIBS" + fi + + AS_IF([test "$opal_check_ugni_happy" = "yes" && test "$enable_progress_threads" = "yes"], + [AC_MSG_WARN([GNI driver does not currently support progress threads. Disabling.]) + opal_check_ugni_happy="no"]) + + OPAL_SUMMARY_ADD([[Transports]],[[Cray uGNI (Gemini/Aries)]],[$1],[$opal_check_ugni_happy]) + fi + + AS_IF([test "$opal_check_ugni_happy" = "yes"], + [$1_CPPFLAGS="[$]$1_CPPFLAGS $CRAY_UGNI_CFLAGS" + $1_LIBS="[$]$1_LIBS $CRAY_UGNI_LIBS" + $2], + [AS_IF([test ! -z "$with_ugni" && test "$with_ugni" != "no"], + [AC_MSG_ERROR([GNI support requested but not found. Cannot continue.])]) + $3]) + +]) diff --git a/config/opal_check_vendor.m4 b/config/opal_check_vendor.m4 new file mode 100644 index 00000000..056d9397 --- /dev/null +++ b/config/opal_check_vendor.m4 @@ -0,0 +1,283 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved. +dnl Copyright (c) 2014 Intel, Inc. All rights reserved +dnl Copyright (c) 2017 IBM Corporation. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + + +# OPAL_C_COMPILER_VENDOR(VENDOR_VARIABLE) +# --------------------------------------- +# Set shell variable VENDOR_VARIABLE to the name of the compiler +# vendor for the current C compiler. +# +# See comment for _OPAL_CHECK_COMPILER_VENDOR for a complete +# list of currently detected compilers. +AC_DEFUN([OPAL_C_COMPILER_VENDOR], [ + AC_REQUIRE([AC_PROG_CC]) + + AC_CACHE_CHECK([for the C compiler vendor], + [opal_cv_c_compiler_vendor], + [AC_LANG_PUSH(C) + _OPAL_CHECK_COMPILER_VENDOR([opal_cv_c_compiler_vendor]) + AC_LANG_POP(C)]) + + $1="$opal_cv_c_compiler_vendor" +]) + + +# OPAL_CXX_COMPILER_VENDOR(VENDOR_VARIABLE) +# --------------------------------------- +# Set shell variable VENDOR_VARIABLE to the name of the compiler +# vendor for the current C++ compiler. +# +# See comment for _OPAL_CHECK_COMPILER_VENDOR for a complete +# list of currently detected compilers. +AC_DEFUN([OPAL_CXX_COMPILER_VENDOR], [ + AC_REQUIRE([AC_PROG_CXX]) + + AC_CACHE_CHECK([for the C++ compiler vendor], + [opal_cv_cxx_compiler_vendor], + [AC_LANG_PUSH(C++) + _OPAL_CHECK_COMPILER_VENDOR([opal_cv_cxx_compiler_vendor]) + AC_LANG_POP(C++)]) + + $1="$opal_cv_c_compiler_vendor" +]) + +# workaround to avoid syntax error with Autoconf < 2.68: +m4_ifndef([AC_LANG_DEFINES_PROVIDED], + [m4_define([AC_LANG_DEFINES_PROVIDED])]) + +# OPAL_IFDEF_IFELSE(symbol, [action-if-defined], +# [action-if-not-defined]) +# ---------------------------------------------- +# Run compiler to determine if preprocessor symbol "symbol" is +# defined by the compiler. +AC_DEFUN([OPAL_IFDEF_IFELSE], [ + AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED +#ifndef $1 +#error "symbol $1 not defined" +choke me +#endif], [$2], [$3])]) + + +# OPAL_IF_IFELSE(symbol, [action-if-defined], +# [action-if-not-defined]) +# ---------------------------------------------- +# Run compiler to determine if preprocessor symbol "symbol" is +# defined by the compiler. +AC_DEFUN([OPAL_IF_IFELSE], [ + AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED +#if !( $1 ) +#error "condition $1 not met" +choke me +#endif], [$2], [$3])]) + + +# _OPAL_CHECK_COMPILER_VENDOR(VENDOR_VARIABLE) +# -------------------------------------------- +# Set shell variable VENDOR_VARIABLE to the name of the compiler +# vendor for the compiler for the current language. Language must be +# one of C, OBJC, or C++. +# +# thanks to http://predef.sourceforge.net/precomp.html for the list +# of defines to check. +AC_DEFUN([_OPAL_CHECK_COMPILER_VENDOR], [ + opal_check_compiler_vendor_result="unknown" + + # GNU is probably the most common, so check that one as soon as + # possible. Intel pretends to be GNU, so need to check Intel + # before checking for GNU. + + # Intel + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IF_IFELSE([defined(__INTEL_COMPILER) || defined(__ICC)], + [opal_check_compiler_vendor_result="intel"])]) + + # Fujitsu + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IF_IFELSE([defined(__FUJITSU)], + [opal_check_compiler_vendor_result="fujitsu"])]) + + # IBM XL C/C++ + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IF_IFELSE([defined(__xlC__) || defined(__IBMC__) || defined(__IBMCPP__)], + [opal_check_compiler_vendor_result="ibm" + xlc_major_version=`$CC -qversion 2>&1 | tail -n 1 | cut -d ' ' -f 2 | cut -d '.' -f 1` + xlc_minor_version=`$CC -qversion 2>&1 | tail -n 1 | cut -d ' ' -f 2 | cut -d '.' -f 2` + AS_IF([ (test "$xlc_major_version" -lt "13" ) || (test "$xlc_major_version" -eq "13" && test "$xlc_minor_version" -lt "1" )], + [AC_MSG_ERROR(["XL Compiler versions less than 13.1 not supported. Detected $xlc_major_version.$xlc_minor_version"])]) + ], + [OPAL_IF_IFELSE([defined(_AIX) && !defined(__GNUC__)], + [opal_check_compiler_vendor_result="ibm"])])]) + + # GNU + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IFDEF_IFELSE([__GNUC__], + [opal_check_compiler_vendor_result="gnu" + + # We do not support gccfss as a compiler so die if + # someone tries to use said compiler. gccfss (gcc + # for SPARC Systems) is a compiler that is no longer + # supported by Oracle and it has some major flaws + # that prevents it from actually compiling OMPI code. + # So if we detect it we automatically bail. + + if ($CC --version | grep gccfss) >/dev/null 2>&1; then + AC_MSG_RESULT([gccfss]) + AC_MSG_WARN([Detected gccfss being used to compile Open MPI.]) + AC_MSG_WARN([Because of several issues Open MPI does not support]) + AC_MSG_WARN([the gccfss compiler. Please use a different compiler.]) + AC_MSG_WARN([If you did not think you used gccfss you may want to]) + AC_MSG_WARN([check to see if the compiler you think you used is]) + AC_MSG_WARN([actually a link to gccfss.]) + AC_MSG_ERROR([Cannot continue]) + fi])]) + + # Borland Turbo C + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IFDEF_IFELSE([__TURBOC__], + [opal_check_compiler_vendor_result="borland"])]) + + # Borland C++ + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IFDEF_IFELSE([__BORLANDC__], + [opal_check_compiler_vendor_result="borland"])]) + + # Comeau C++ + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IFDEF_IFELSE([__COMO__], + [opal_check_compiler_vendor_result="comeau"])]) + + # Compaq C/C++ + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IF_IFELSE([defined(__DECC) || defined(VAXC) || defined(__VAXC)], + [opal_check_compiler_vendor_result="compaq"], + [OPAL_IF_IFELSE([defined(__osf__) && defined(__LANGUAGE_C__)], + [opal_check_compiler_vendor_result="compaq"], + [OPAL_IFDEF_IFELSE([__DECCXX], + [opal_check_compiler_vendor_result="compaq"])])])]) + + # Cray C/C++ + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IFDEF_IFELSE([_CRAYC], + [opal_check_compiler_vendor_result="cray"])]) + + # Diab C/C++ + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IFDEF_IFELSE([__DCC__], + [opal_check_compiler_vendor_result="diab"])]) + + # Digital Mars + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IF_IFELSE([defined(__DMC__) || defined(__SC__) || defined(__ZTC__)], + [opal_check_compiler_vendor_result="digital mars"])]) + + # HP ANSI C / aC++ + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IF_IFELSE([defined(__HP_cc) || defined(__HP_aCC)], + [opal_check_compiler_vendor_result="hp"])]) + + # KAI C++ (rest in peace) + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IFDEF_IFELSE([__KCC], + [opal_check_compiler_vendor_result="kai"])]) + + # LCC + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IFDEF_IFELSE([__LCC__], + [opal_check_compiler_vendor_result="lcc"])]) + + # MetaWare High C/C++ + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IFDEF_IFELSE([__HIGHC__], + [opal_check_compiler_vendor_result="metaware high"])]) + + # Metrowerks Codewarrior + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IFDEF_IFELSE([__MWERKS__], + [opal_check_compiler_vendor_result="metrowerks"])]) + + # MIPSpro (SGI) + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IF_IFELSE([defined(sgi) || defined(__sgi)], + [opal_check_compiler_vendor_result="sgi"])]) + + # MPW C++ + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IF_IFELSE([defined(__MRC__) || defined(MPW_C) || defined(MPW_CPLUS)], + [opal_check_compiler_vendor_result="mpw"])]) + + # Microsoft + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [# Always use C compiler when checking for Microsoft, as + # Visual C++ doesn't recognize .cc as a C++ file. + AC_LANG_PUSH(C) + OPAL_IF_IFELSE([defined(_MSC_VER) || defined(__MSC_VER)], + [opal_check_compiler_vendor_result="microsoft"]) + AC_LANG_POP(C)]) + + # Norcroft C + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IFDEF_IFELSE([__CC_NORCROFT], + [opal_check_compiler_vendor_result="norcroft"])]) + + # Pelles C + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IFDEF_IFELSE([__POCC__], + [opal_check_compiler_vendor_result="pelles"])]) + + # Portland Group + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IFDEF_IFELSE([__PGI], + [opal_check_compiler_vendor_result="portland group"])]) + + # SAS/C + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IF_IFELSE([defined(SASC) || defined(__SASC) || defined(__SASC__)], + [opal_check_compiler_vendor_result="sas"])]) + + # Sun Workshop C/C++ + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IF_IFELSE([defined(__SUNPRO_C) || defined(__SUNPRO_CC)], + [opal_check_compiler_vendor_result="sun"])]) + + # TenDRA C/C++ + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IFDEF_IFELSE([__TenDRA__], + [opal_check_compiler_vendor_result="tendra"])]) + + # Tiny C + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IFDEF_IFELSE([__TINYC__], + [opal_check_compiler_vendor_result="tiny"])]) + + # USL C + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IFDEF_IFELSE([__USLC__], + [opal_check_compiler_vendor_result="usl"])]) + + # Watcom C++ + AS_IF([test "$opal_check_compiler_vendor_result" = "unknown"], + [OPAL_IFDEF_IFELSE([__WATCOMC__], + [opal_check_compiler_vendor_result="watcom"])]) + + $1="$opal_check_compiler_vendor_result" + unset opal_check_compiler_vendor_result +]) diff --git a/config/opal_check_verbs.m4 b/config/opal_check_verbs.m4 new file mode 100644 index 00000000..f5eea2c7 --- /dev/null +++ b/config/opal_check_verbs.m4 @@ -0,0 +1,120 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2006-2014 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2006-2011 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl Copyright (c) 2006-2009 Mellanox Technologies. All rights reserved. +dnl Copyright (c) 2010-2012 Oracle and/or its affiliates. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + + +# Internal helper macro to look for the verbs libdir +# -------------------------------------------------------- +AC_DEFUN([_OPAL_CHECK_VERBS_LIBDIR],[ + AS_IF([test -d "$1"], + [AS_IF([test "x`ls $1/libibverbs.* 2> /dev/null`" != "x"], + [opal_verbs_libdir="$1"]) + ]) +]) + +# Internal helper macro to look for the verbs dir +# -------------------------------------------------------- +AC_DEFUN([_OPAL_CHECK_VERBS_DIR],[ + AS_IF([test -d "$1"], + [AS_IF([test -f "$1/include/infiniband/verbs.h"], + [opal_verbs_dir="$1"]) + ]) +]) + +# OPAL_CHECK_VERBS_DIR +# -------------------------------------------------------- +# Add --with-verbs options, and if directories are specified, +# sanity check them. +# +# At the end of this macro: +# +# 1. $opal_want_verbs will be set to: +# "yes" if --with-verbs or --with-verbs=DIR was specified +# "no" if --without-verbs was specified) +# "optional" if neither --with-verbs* nor --without-verbs was specified +# +# 2. $opal_verbs_dir and $opal_verbs_libdir with either both be set or +# both be empty. +# +AC_DEFUN([OPAL_CHECK_VERBS_DIR],[ + + # Add --with options + AC_ARG_WITH([verbs], + [AC_HELP_STRING([--with-verbs(=DIR)], + [Build verbs support, optionally adding DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries])]) + AC_ARG_WITH([verbs-libdir], + [AC_HELP_STRING([--with-verbs-libdir=DIR], + [Search for verbs libraries in DIR])]) + + # Sanity check the --with values + OPAL_CHECK_WITHDIR([verbs], [$with_verbs], + [include/infiniband/verbs.h]) + OPAL_CHECK_WITHDIR([verbs-libdir], [$with_verbs_libdir], + [libibverbs.*]) + + # Set standardized shell variables for OFED lovin' components to + # use. Either both of $opal_verbs_dir and + # $verbs_libdir will be set, or neither will be set. + opal_want_verbs=no + AS_IF([test -z "$with_verbs"], + [opal_want_verbs=optional], + [AS_IF([test "$with_verbs" = "no"], + [opal_want_verbs=no], + [opal_want_verbs=yes]) + ]) + + opal_verbs_dir= + AS_IF([test -n "$with_verbs" && test "$with_verbs" != "yes" && test "$with_verbs" != "no"], + [opal_verbs_dir=$with_verbs]) + + opal_verbs_libdir= + AS_IF([test -n "$with_verbs_libdir" && test "$with_verbs_libdir" != "yes" && test "$with_verbs_libdir" != "no"], + [opal_verbs_libdir=$with_verbs_libdir]) + + # If the top dir was specified but the libdir was not, look for + # it. Note that if the user needs a specific libdir (i.e., if our + # hueristic ordering below is not sufficient), they need to + # specify it. + AS_IF([test -z "$opal_verbs_libdir" && test -n "$opal_verbs_dir"], + [_OPAL_CHECK_VERBS_LIBDIR(["$opal_verbs_dir/lib"])]) + AS_IF([test -z "$opal_verbs_libdir" && test -n "$opal_verbs_dir"], + [_OPAL_CHECK_VERBS_LIBDIR(["$opal_verbs_dir/lib64"])]) + AS_IF([test -z "$opal_verbs_libdir" && test -n "$opal_verbs_dir"], + [_OPAL_CHECK_VERBS_LIBDIR(["$opal_verbs_dir/lib32"])]) + AS_IF([test -z "$opal_verbs_libdir" && test -n "$opal_verbs_dir"], + [AC_MSG_WARN([Could not find libibverbs in the usual locations under $opal_verbs_dir]) + AC_MSG_ERROR([Cannot continue]) + ]) + + # If the libdir was specified, but the top dir was not, look for + # it. Note that if the user needs a specific top dir (i.e., if + # our hueristic below is not sufficient), they need to specify it. + AS_IF([test -z "$opal_verbs" && test -n "$opal_verbs_libdir"], + [_OPAL_CHECK_VERBS_DIR([`dirname "$opal_verbs_libdir"`])]) + AS_IF([test -z "$opal_verbs_dir" && test -n "$opal_verbs_libdir"], + [AC_MSG_WARN([Could not find verbs.h in the usual locations under $opal_verbs_dir]) + AC_MSG_ERROR([Cannot continue]) + ]) +]) diff --git a/config/opal_check_version.m4 b/config/opal_check_version.m4 new file mode 100644 index 00000000..bcc41173 --- /dev/null +++ b/config/opal_check_version.m4 @@ -0,0 +1,79 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2016 IBM Corporation. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# Parameters: (use a version "1.1.4rc2" as the example) +# * prefix +# Will export a variable $prefix_version_cmp +# - action_if_less => "less" +# - action_if_equal => "equal" +# - action_if_equal_series => "series" +# - action_if_greater => "greater" +# * version_actual +# Actual version string +# * version_desired +# Desired version string to check against +# * action_if_less +# Action to take if the version is strictly less than +# "1.1.3" < "1.1.4rc2" +# * action_if_equal +# Action to take if the version matches exactly +# "1.1.4rc2" = "1.1.4rc2" +# * action_if_equal_series +# Action to take if the version matches to this series +# "1.1.4rc1" ~=~ "1.1.4rc2" +# "1.1.4" ~=~ "1.1.4rc2" +# * action_if_greater +# Action to take if the version is strictly greater than +# "1.1.5" > "1.1.4rc2" +# "2.0" > "1.1.4rc2" +# +# See documentation on m4_version_compare and AS_VERSION_COMPARE for more +# precise definitions +# OPAL_CHECK_VERSION(prefix, version_actual, version_desired, +# action_if_less, action_if_equal, action_if_equal_series, +# action_if_greater) +# ---------------------------------------------------- +AC_DEFUN([OPAL_CHECK_VERSION],[ + version_actual=$2 + version_desired=$3 + + AC_MSG_CHECKING([Checking library version is $version_desired]) + # + # Example: If version_desired=1.1.4 and + # version_actual=1.1.3 -> -1 + # version_actual=1.1.4 -> 0 + # version_actual=1.1.4rc1 -> 1 + # version_actual=1.1.5 -> 1 (need further check) + # + AS_VERSION_COMPARE(["$version_actual"], [$version_desired], + [AC_MSG_RESULT([Earlier than expected ($version_actual < $$version_desired)]) + $1_version_cmp="less" + $4], + [AC_MSG_RESULT([Equal]) + $1_version_cmp="equal" + $5], + [ + # Need further check to make sure we are < 1.1.5 + # version_actual=1.1.4rc1 -> -1 + # version_actual=1.1.4 -> 0 (caught above) + # version_actual=1.1.5 -> 1 + AS_VERSION_COMPARE(["$version_actual"], [$version_desired"zzzz"], + [AC_MSG_RESULT([Within release series ($version_actual)]) + $1_version_cmp="series" + $6], + [AC_MSG_RESULT([Within release series ($version_actual)]) + $1_version_cmp="series" + $6], + [AC_MSG_RESULT([Later than expected ($version_actual > $$version_desired)]) + $1_version_cmp="greater" + $7] + )] + ) +])dnl diff --git a/config/opal_check_visibility.m4 b/config/opal_check_visibility.m4 new file mode 100644 index 00000000..bb909763 --- /dev/null +++ b/config/opal_check_visibility.m4 @@ -0,0 +1,90 @@ +# -*- shell-script -*- +# +# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2007 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2009-2011 Oracle and/or its affiliates. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# OPAL_CHECK_VISIBILITY +# -------------------------------------------------------- +AC_DEFUN([OPAL_CHECK_VISIBILITY],[ + AC_REQUIRE([AC_PROG_GREP]) + + # Check if the compiler has support for visibility, like some + # versions of gcc, icc Sun Studio cc. + AC_ARG_ENABLE(visibility, + AC_HELP_STRING([--enable-visibility], + [enable visibility feature of certain compilers/linkers (default: enabled)])) + + opal_visibility_define=0 + opal_msg="whether to enable symbol visibility" + + if test "$enable_visibility" = "no"; then + AC_MSG_CHECKING([$opal_msg]) + AC_MSG_RESULT([no (disabled)]) + else + CFLAGS_orig=$CFLAGS + + opal_add= + case "$opal_c_vendor" in + sun) + # Check using Sun Studio -xldscope=hidden flag + opal_add=-xldscope=hidden + CFLAGS="$OPAL_CFLAGS_BEFORE_PICKY $opal_add -errwarn=%all" + ;; + + *) + # Check using -fvisibility=hidden + opal_add=-fvisibility=hidden + CFLAGS="$OPAL_CFLAGS_BEFORE_PICKY $opal_add -Werror" + ;; + esac + + AC_MSG_CHECKING([if $CC supports $opal_add]) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #include + __attribute__((visibility("default"))) int foo; + ]],[[fprintf(stderr, "Hello, world\n");]])], + [AS_IF([test -s conftest.err], + [$GREP -iq visibility conftest.err + # If we find "visibility" in the stderr, then + # assume it doesn't work + AS_IF([test "$?" = "0"], [opal_add=])]) + ], [opal_add=]) + AS_IF([test "$opal_add" = ""], + [AC_MSG_RESULT([no])], + [AC_MSG_RESULT([yes])]) + + CFLAGS=$CFLAGS_orig + OPAL_VISIBILITY_CFLAGS=$opal_add + + if test "$opal_add" != "" ; then + opal_visibility_define=1 + AC_MSG_CHECKING([$opal_msg]) + AC_MSG_RESULT([yes (via $opal_add)]) + elif test "$enable_visibility" = "yes"; then + AC_MSG_ERROR([Symbol visibility support requested but compiler does not seem to support it. Aborting]) + else + AC_MSG_CHECKING([$opal_msg]) + AC_MSG_RESULT([no (unsupported)]) + fi + unset opal_add + fi + + AC_DEFINE_UNQUOTED([OPAL_C_HAVE_VISIBILITY], [$opal_visibility_define], + [Whether C compiler supports symbol visibility or not]) +]) diff --git a/config/opal_check_withdir.m4 b/config/opal_check_withdir.m4 new file mode 100644 index 00000000..8ef026eb --- /dev/null +++ b/config/opal_check_withdir.m4 @@ -0,0 +1,43 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2006 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl Copyright (c) 2008-2009 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl Copyright (c) 2017 IBM Corporation. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OPAL_CHECK_WITHDIR(with_option_name, dir_value, file_in_dir) +# ---------------------------------------------------- +AC_DEFUN([OPAL_CHECK_WITHDIR],[ + AC_MSG_CHECKING([--with-$1 value]) + AS_IF([test "$2" = "no" ], + [AC_MSG_RESULT([simple no (specified --without-$1)])], + [AS_IF([test "$2" = "yes" || test "x$2" = "x"], + [AC_MSG_RESULT([simple ok (unspecified value)])], + [AS_IF([test ! -d "$2"], + [AC_MSG_RESULT([not found]) + AC_MSG_WARN([Directory $2 not found]) + AC_MSG_ERROR([Cannot continue])], + [AS_IF([test "x`ls $2/$3 2> /dev/null`" = "x"], + [AC_MSG_RESULT([not found]) + AC_MSG_WARN([Expected file $2/$3 not found]) + AC_MSG_ERROR([Cannot continue])], + [AC_MSG_RESULT([sanity check ok ($2)])] + ) + ] + ) + ] + ) + ] + ) +])dnl diff --git a/config/opal_check_xpmem.m4 b/config/opal_check_xpmem.m4 new file mode 100644 index 00000000..aed13235 --- /dev/null +++ b/config/opal_check_xpmem.m4 @@ -0,0 +1,112 @@ +# -*- shell-script ; indent-tabs-mode:nil -*- +# +# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2009-2016 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2011-2016 Los Alamos National Security, LLC. All rights +# reserved. +# Copyright (c) 2014 Intel, Inc. All rights reserved. +# Copyright (c) 2014-2015 Research Organization for Information Science +# and Technology (RIST). All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# +# special check for cray xpmem, uses macro(s) from pkg.m4 +# +# OPAL_CHECK_CRAY_XPMEM(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +AC_DEFUN([OPAL_CHECK_CRAY_XPMEM],[ + if test -z "$opal_check_cray_xpmem_happy" ; then + AC_ARG_WITH([cray_xpmem], + [AC_HELP_STRING([--with-cray-xpmem(=yes/no)], + [Build Cray XPMEM support(default: auto)])], + [], with_cray_xpmem=auto) + + AC_MSG_CHECKING([for Cray XPMEM support]) + AS_IF([test "$with_cray_xpmem" = "no"], + [AC_MSG_RESULT([no]) + $3], + [AS_IF([test "$with_cray_xpmem" = "auto" || test "$with_cray_xpmem" = "yes"], + [PKG_CHECK_MODULES_STATIC([CRAY_XPMEM], [cray-xpmem], + [opal_check_cray_xpmem_happy="yes"], + [opal_check_cray_xpmem_happy="no"] + [AS_IF([test "$with_cray_xpmem" = "yes"], + [AC_MSG_WARN([Cray XPMEM support requested but pkg-config failed.]) + AC_MSG_ERROR([Aborting])],[])] + )], + []) + ]) + + AS_IF([test "$opal_check_cray_xpmem_happy" = "yes" && test "$enable_static" = "yes"], + [CRAY_XPMEM_LIBS = $CRAY_XPMEM_STATIC_LIBS],[]) + fi + + AS_IF([test "$opal_check_cray_xpmem_happy" = "yes"], + [$1_LDFLAGS="[$]$1_LDFLAGS $CRAY_XPMEM_LIBS" + $1_CPPFLAGS="[$]$1_CPPFLAGS $CRAY_XPMEM_CFLAGS" + $1_LIBS="[$]$1_LIBS $CRAY_XPMEM_LIBS" + AC_DEFINE_UNQUOTED([HAVE_XPMEM_H], [1],[is xpmem.h available]) + $2], [$3]) +]) + +# OPAL_CHECK_XPMEM(prefix, [action-if-found], [action-if-not-found]) +# -------------------------------------------------------- +# check if XPMEM support can be found. sets prefix_{CPPFLAGS, +# LDFLAGS, LIBS} as needed and runs action-if-found if there is +# support, otherwise executes action-if-not-found +AC_DEFUN([OPAL_CHECK_XPMEM], [ + if test -z "$opal_check_xpmem_happy" ; then + # check for a cray installed xpmem first + OPAL_CHECK_CRAY_XPMEM([opal_check_xpmem],[opal_check_xpmem_happy=yes],[opal_check_xpmem_happy=no]) + + if test "$opal_check_xpmem_happy" = no ; then + AC_ARG_WITH([xpmem], + [AC_HELP_STRING([--with-xpmem(=DIR)], + [Build with XPMEM kernel module support, searching for headers in DIR])]) + OPAL_CHECK_WITHDIR([xpmem], [$with_xpmem], [include/xpmem.h]) + + AC_ARG_WITH([xpmem-libdir], + [AC_HELP_STRING([--with-xpmem-libdir=DIR], + [Search for XPMEM library in DIR])]) + OPAL_CHECK_WITHDIR([xpmem-libdir], [$with_xpmem_libdir], [libxpmem.*]) + + if test ! "$with_xpmem" = "no" ; then + if test ! -z "$with_xpmem" && test "$with_xpmem" != "yes" ; then + opal_check_xpmem_dir="$with_xpmem" + fi + + if test ! -z "$with_xpmem_libdir" && test "$with_xpmem_libdir" != "yes" ; then + opal_check_xpmem_libdir="$with_xpmem_libdir" + fi + + OPAL_CHECK_PACKAGE([opal_check_xpmem],[xpmem.h],[xpmem],[xpmem_make],[], + [$opal_check_xpmem_dir],[$opal_check_xpmem_libdir], [opal_check_xpmem_happy="yes"], []) + + if test "$opal_check_xpmem_happy" = "no" && test -n "$with_xpmem" && test "$with_xpmem" != "yes" ; then + AC_MSG_ERROR([XPMEM support requested but not found. Aborting]) + fi + fi + fi + + OPAL_SUMMARY_ADD([[Transports]],[[Shared memory/XPMEM]],[$1],[$opal_check_cray_xpmem_happy]) + fi + + AS_IF([test "$opal_check_xpmem_happy" = "yes"], [ + $1_CPPFLAGS="[$]$1_CPPFLAGS $opal_check_xpmem_CPPFLAGS" + $1_LDFLAGS="[$]$1_LDFLAGS $opal_check_xpmem_LDFLAGS" + $1_LIBS="[$]$1_LIBS $opal_check_xpmem_LIBS" + $2], [$3]) +])dnl diff --git a/config/opal_config_asm.m4 b/config/opal_config_asm.m4 new file mode 100644 index 00000000..00991b6a --- /dev/null +++ b/config/opal_config_asm.m4 @@ -0,0 +1,1318 @@ +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2015 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2006 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2008-2015 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved. +dnl Copyright (c) 2015-2017 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl Copyright (c) 2014-2016 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl Copyright (c) 2017 Amazon.com, Inc. or its affiliates. All Rights +dnl reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + + +AC_DEFUN([OPAL_CHECK_SYNC_BUILTIN_CSWAP_INT128], [ + + OPAL_VAR_SCOPE_PUSH([sync_bool_compare_and_swap_128_result CFLAGS_save]) + + AC_ARG_ENABLE([cross-cmpset128],[AC_HELP_STRING([--enable-cross-cmpset128], + [enable the use of the __sync builtin atomic compare-and-swap 128 when cross compiling])]) + + sync_bool_compare_and_swap_128_result=0 + + if test ! "$enable_cross_cmpset128" = "yes" ; then + AC_MSG_CHECKING([for processor support of __sync builtin atomic compare-and-swap on 128-bit values]) + + AC_RUN_IFELSE([AC_LANG_PROGRAM([], [__int128 x = 0; __sync_bool_compare_and_swap (&x, 0, 1);])], + [AC_MSG_RESULT([yes]) + sync_bool_compare_and_swap_128_result=1], + [AC_MSG_RESULT([no])], + [AC_MSG_RESULT([no (cross compiling)])]) + + if test $sync_bool_compare_and_swap_128_result = 0 ; then + CFLAGS_save=$CFLAGS + CFLAGS="$CFLAGS -mcx16" + + AC_MSG_CHECKING([for __sync builtin atomic compare-and-swap on 128-bit values with -mcx16 flag]) + AC_RUN_IFELSE([AC_LANG_PROGRAM([], [__int128 x = 0; __sync_bool_compare_and_swap (&x, 0, 1);])], + [AC_MSG_RESULT([yes]) + sync_bool_compare_and_swap_128_result=1 + CFLAGS_save="$CFLAGS"], + [AC_MSG_RESULT([no])], + [AC_MSG_RESULT([no (cross compiling)])]) + + CFLAGS=$CFLAGS_save + fi + else + AC_MSG_CHECKING([for compiler support of __sync builtin atomic compare-and-swap on 128-bit values]) + + # Check if the compiler supports the __sync builtin + AC_TRY_LINK([], [__int128 x = 0; __sync_bool_compare_and_swap (&x, 0, 1);], + [AC_MSG_RESULT([yes]) + sync_bool_compare_and_swap_128_result=1], + [AC_MSG_RESULT([no])]) + + if test $sync_bool_compare_and_swap_128_result = 0 ; then + CFLAGS_save=$CFLAGS + CFLAGS="$CFLAGS -mcx16" + + AC_MSG_CHECKING([for __sync builtin atomic compare-and-swap on 128-bit values with -mcx16 flag]) + AC_TRY_LINK([], [__int128 x = 0; __sync_bool_compare_and_swap (&x, 0, 1);], + [AC_MSG_RESULT([yes]) + sync_bool_compare_and_swap_128_result=1 + CFLAGS_save="$CFLAGS"], + [AC_MSG_RESULT([no])]) + + CFLAGS=$CFLAGS_save + fi + fi + + AC_DEFINE_UNQUOTED([OPAL_HAVE_SYNC_BUILTIN_CSWAP_INT128], [$sync_bool_compare_and_swap_128_result], + [Whether the __sync builtin atomic compare and swap supports 128-bit values]) + + OPAL_VAR_SCOPE_POP +]) + +AC_DEFUN([OPAL_CHECK_SYNC_BUILTINS], [ + AC_MSG_CHECKING([for __sync builtin atomics]) + + AC_TRY_LINK([long tmp;], [__sync_synchronize(); +__sync_bool_compare_and_swap(&tmp, 0, 1); +__sync_add_and_fetch(&tmp, 1);], + [AC_MSG_RESULT([yes]) + $1], + [AC_MSG_RESULT([no]) + $2]) + + AC_MSG_CHECKING([for 64-bit __sync builtin atomics]) + + AC_TRY_LINK([ +#include +uint64_t tmp;], [ +__sync_bool_compare_and_swap(&tmp, 0, 1); +__sync_add_and_fetch(&tmp, 1);], + [AC_MSG_RESULT([yes]) + opal_asm_sync_have_64bit=1], + [AC_MSG_RESULT([no]) + opal_asm_sync_have_64bit=0]) + + AC_DEFINE_UNQUOTED([OPAL_ASM_SYNC_HAVE_64BIT],[$opal_asm_sync_have_64bit], + [Whether 64-bit is supported by the __sync builtin atomics]) + + # Check for 128-bit support + OPAL_CHECK_SYNC_BUILTIN_CSWAP_INT128 +]) + + +AC_DEFUN([OPAL_CHECK_GCC_BUILTIN_CSWAP_INT128], [ + + OPAL_VAR_SCOPE_PUSH([atomic_compare_exchange_n_128_result CFLAGS_save]) + + AC_ARG_ENABLE([cross-cmpset128],[AC_HELP_STRING([--enable-cross-cmpset128], + [enable the use of the __sync builtin atomic compare-and-swap 128 when cross compiling])]) + + atomic_compare_exchange_n_128_result=0 + + if test ! "$enable_cross_cmpset128" = "yes" ; then + AC_MSG_CHECKING([for processor support of __atomic builtin atomic compare-and-swap on 128-bit values]) + + AC_RUN_IFELSE([AC_LANG_PROGRAM([], [__int128 x = 0, y = 0; __atomic_compare_exchange_n (&x, &y, 1, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED);])], + [AC_MSG_RESULT([yes]) + atomic_compare_exchange_n_128_result=1], + [AC_MSG_RESULT([no])], + [AC_MSG_RESULT([no (cross compiling)])]) + + if test $atomic_compare_exchange_n_128_result = 0 ; then + CFLAGS_save=$CFLAGS + CFLAGS="$CFLAGS -mcx16" + + AC_MSG_CHECKING([for __atomic builtin atomic compare-and-swap on 128-bit values with -mcx16 flag]) + AC_RUN_IFELSE([AC_LANG_PROGRAM([], [__int128 x = 0, y = 0; __atomic_compare_exchange_n (&x, &y, 1, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED);])], + [AC_MSG_RESULT([yes]) + atomic_compare_exchange_n_128_result=1 + CFLAGS_save="$CFLAGS"], + [AC_MSG_RESULT([no])], + [AC_MSG_RESULT([no (cross compiling)])]) + + CFLAGS=$CFLAGS_save + fi + + if test $atomic_compare_exchange_n_128_result = 1 ; then + AC_MSG_CHECKING([if __int128 atomic compare-and-swap is always lock-free]) + AC_RUN_IFELSE([AC_LANG_PROGRAM([], [if (!__atomic_always_lock_free(16, 0)) { return 1; }])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + OPAL_CHECK_SYNC_BUILTIN_CSWAP_INT128 + atomic_compare_exchange_n_128_result=0], + [AC_MSG_RESULT([no (cross compiling)])]) + fi + else + AC_MSG_CHECKING([for compiler support of __atomic builtin atomic compare-and-swap on 128-bit values]) + + # Check if the compiler supports the __atomic builtin + AC_TRY_LINK([], [__int128 x = 0, y = 0; __atomic_compare_exchange_n (&x, &y, 1, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED);], + [AC_MSG_RESULT([yes]) + atomic_compare_exchange_n_128_result=1], + [AC_MSG_RESULT([no])]) + + if test $atomic_compare_exchange_n_128_result = 0 ; then + CFLAGS_save=$CFLAGS + CFLAGS="$CFLAGS -mcx16" + + AC_MSG_CHECKING([for __atomic builtin atomic compare-and-swap on 128-bit values with -mcx16 flag]) + AC_TRY_LINK([], [__int128 x = 0, y = 0; __atomic_compare_exchange_n (&x, &y, 1, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED);], + [AC_MSG_RESULT([yes]) + atomic_compare_exchange_n_128_result=1 + CFLAGS_save="$CFLAGS"], + [AC_MSG_RESULT([no])]) + + CFLAGS=$CFLAGS_save + fi + fi + + AC_DEFINE_UNQUOTED([OPAL_HAVE_GCC_BUILTIN_CSWAP_INT128], [$atomic_compare_exchange_n_128_result], + [Whether the __atomic builtin atomic compare and swap is lock-free on 128-bit values]) + + OPAL_VAR_SCOPE_POP +]) + +AC_DEFUN([OPAL_CHECK_GCC_ATOMIC_BUILTINS], [ + AC_MSG_CHECKING([for __atomic builtin atomics]) + + AC_TRY_LINK([ +#include +uint32_t tmp, old = 0; +uint64_t tmp64, old64 = 0;], [ +__atomic_thread_fence(__ATOMIC_SEQ_CST); +__atomic_compare_exchange_n(&tmp, &old, 1, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED); +__atomic_add_fetch(&tmp, 1, __ATOMIC_RELAXED); +__atomic_compare_exchange_n(&tmp64, &old64, 1, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED); +__atomic_add_fetch(&tmp64, 1, __ATOMIC_RELAXED);], + [AC_MSG_RESULT([yes]) + $1], + [AC_MSG_RESULT([no]) + $2]) + + # Check for 128-bit support + OPAL_CHECK_GCC_BUILTIN_CSWAP_INT128 +]) + + +dnl ################################################################# +dnl +dnl OPAL_CHECK_ASM_TEXT +dnl +dnl Determine how to set current mode as text. +dnl +dnl ################################################################# +AC_DEFUN([OPAL_CHECK_ASM_TEXT],[ + AC_MSG_CHECKING([directive for setting text section]) + opal_cv_asm_text="" + if test "$opal_cv_c_compiler_vendor" = "microsoft" ; then + # text section will be brought in with the rest of + # header for MS - leave blank for now + opal_cv_asm_text="" + else + case $host in + *-aix*) + opal_cv_asm_text=[".csect .text[PR]"] + ;; + *) + opal_cv_asm_text=".text" + ;; + esac + fi + AC_MSG_RESULT([$opal_cv_asm_text]) + AC_DEFINE_UNQUOTED([OPAL_ASM_TEXT], ["$opal_cv_asm_text"], + [Assembly directive for setting text section]) + OPAL_ASM_TEXT="$opal_cv_asm_text" + AC_SUBST(OPAL_ASM_TEXT) +])dnl + + +dnl ################################################################# +dnl +dnl OPAL_CHECK_ASM_GLOBAL +dnl +dnl Sets OPAL_ASM_GLOBAL to the value to prefix global values +dnl +dnl I'm sure if I don't have a test for this, there will be some +dnl dumb platform that uses something else +dnl +dnl ################################################################# +AC_DEFUN([OPAL_CHECK_ASM_GLOBAL],[ + AC_MSG_CHECKING([directive for exporting symbols]) + opal_cv_asm_global="" + if test "$opal_cv_c_compiler_vendor" = "microsoft" ; then + opal_cv_asm_global="PUBLIC" + else + case $host in + *) + opal_cv_asm_global=".globl" + ;; + esac + fi + AC_MSG_RESULT([$opal_cv_asm_global]) + AC_DEFINE_UNQUOTED([OPAL_ASM_GLOBAL], ["$opal_cv_asm_global"], + [Assembly directive for exporting symbols]) + OPAL_ASM_GLOBAL="$opal_cv_asm_global" + AC_SUBST(OPAL_AS_GLOBAL) +])dnl + + +dnl ################################################################# +dnl +dnl OPAL_CHECK_ASM_LSYM +dnl +dnl Sets OPAL_ASM_LSYM to the prefix value on a symbol to make it +dnl an internal label (jump target and whatnot) +dnl +dnl We look for L .L $ L$ (in that order) for something that both +dnl assembles and does not leave a label in the output of nm. Fall +dnl back to L if nothing else seems to work :/ +dnl +dnl ################################################################# + +# _OPAL_CHECK_ASM_LSYM([variable-to-set]) +# --------------------------------------- +AC_DEFUN([_OPAL_CHECK_ASM_LSYM],[ + AC_REQUIRE([AC_PROG_GREP]) + + $1="L" + + for sym in L .L $ L$ ; do + asm_result=0 + echo "configure: trying $sym" >&AC_FD_CC + OPAL_TRY_ASSEMBLE([foobar$opal_cv_asm_label_suffix +${sym}mytestlabel$opal_cv_asm_label_suffix], + [# ok, we succeeded at assembling. see if we can nm, + # throwing the results in a file + if $NM conftest.$OBJEXT > conftest.out 2>&AC_FD_CC ; then + if test "`$GREP mytestlabel conftest.out`" = "" ; then + # there was no symbol... looks promising to me + $1="$sym" + asm_result=1 + elif test ["`$GREP ' [Nt] .*mytestlabel' conftest.out`"] = "" ; then + # see if we have a non-global-ish symbol + # but we should see if we can do better. + $1="$sym" + fi + else + # not so much on the NM goodness :/ + echo "$NM failed. Output from NM was:" >&AC_FD_CC + cat conftest.out >&AC_FD_CC + AC_MSG_WARN([$NM could not read object file]) + fi + ]) + if test "$asm_result" = "1" ; then + break + fi + done + rm -f conftest.out + unset asm_result sym +]) + +# OPAL_CHECK_ASM_LSYM() +# --------------------- +AC_DEFUN([OPAL_CHECK_ASM_LSYM],[ + AC_REQUIRE([AC_PROG_NM]) + + AC_CACHE_CHECK([prefix for lsym labels], + [opal_cv_asm_lsym], + [_OPAL_CHECK_ASM_LSYM([opal_cv_asm_lsym])]) + AC_DEFINE_UNQUOTED([OPAL_ASM_LSYM], ["$opal_cv_asm_lsym"], + [Assembly prefix for lsym labels]) + OPAL_ASM_LSYM="$opal_cv_asm_lsym" + AC_SUBST(OPAL_ASM_LSYM) +])dnl + +dnl ################################################################# +dnl +dnl OPAL_CHECK_ASM_PROC +dnl +dnl Sets a cv-flag, if the compiler needs a proc/endp-definition to +dnl link with C. +dnl +dnl ################################################################# +AC_DEFUN([OPAL_CHECK_ASM_PROC],[ + AC_CACHE_CHECK([if .proc/endp is needed], + [opal_cv_asm_need_proc], + [opal_cv_asm_need_proc="no" + OPAL_TRY_ASSEMBLE([ + .proc mysym +mysym: + .endp mysym], + [opal_cv_asm_need_proc="yes"]) + rm -f conftest.out]) + + if test "$opal_cv_asm_need_proc" = "yes" ; then + opal_cv_asm_proc=".proc" + opal_cv_asm_endproc=".endp" + else + opal_cv_asm_proc="#" + opal_cv_asm_endproc="#" + fi +])dnl + + +dnl ################################################################# +dnl +dnl OPAL_CHECK_ASM_GSYM +dnl +dnl Sets OPAL_ASM_GSYM to the prefix value on a symbol to make it +dnl a global linkable from C. Basically, an _ or not. +dnl +dnl ################################################################# +AC_DEFUN([OPAL_CHECK_ASM_GSYM],[ + AC_CACHE_CHECK([prefix for global symbol labels], + [opal_cv_asm_gsym], + [_OPAL_CHECK_ASM_GSYM]) + + if test "$opal_cv_asm_gsym" = "none" ; then + AC_MSG_ERROR([Could not determine global symbol label prefix]) + fi + + AC_DEFINE_UNQUOTED([OPAL_ASM_GSYM], ["$opal_cv_asm_gsym"], + [Assembly prefix for gsym labels]) + OPAL_ASM_GSYM="$opal_cv_asm_gsym" + AC_SUBST(OPAL_ASM_GSYM) + +]) + +AC_DEFUN([_OPAL_CHECK_ASM_GSYM],[ + opal_cv_asm_gsym="none" + + for sym in "_" "" "." ; do + asm_result=0 + echo "configure: trying $sym" >&AC_FD_CC +cat > conftest_c.c <&AC_FD_CC + opal_link="$CC $CFLAGS conftest_c.$OBJEXT conftest.$OBJEXT -o conftest $LDFLAGS $LIBS > conftest.link 2>&1" + if AC_TRY_EVAL(opal_link) ; then + # save the warnings + cat conftest.link >&AC_FD_CC + asm_result=1 + else + cat conftest.link >&AC_FD_CC + echo "configure: failed C program was: " >&AC_FD_CC + cat conftest_c.c >&AC_FD_CC + echo "configure: failed ASM program was: " >&AC_FD_CC + cat conftest.s >&AC_FD_CC + asm_result=0 + fi + else + # save output and failed program + cat conftest.cmpl >&AC_FD_CC + echo "configure: failed C program was: " >&AC_FD_CC + cat conftest.c >&AC_FD_CC + asm_result=0 + fi], + [asm_result=0]) + if test "$asm_result" = "1" ; then + opal_cv_asm_gsym="$sym" + break + fi + done + rm -rf conftest.* +])dnl + + +dnl ################################################################# +dnl +dnl OPAL_CHECK_ASM_LABEL_SUFFIX +dnl +dnl Sets OPAL_ASM_LABEL_SUFFIX to the value to suffix for labels +dnl +dnl I'm sure if I don't have a test for this, there will be some +dnl dumb platform that uses something else +dnl +dnl ################################################################# +AC_DEFUN([OPAL_CHECK_ASM_LABEL_SUFFIX],[ + AC_MSG_CHECKING([suffix for labels]) + opal_cv_asm_label_suffix="" + case $host in + *) + opal_cv_asm_label_suffix=":" + ;; + esac + AC_MSG_RESULT([$opal_cv_asm_label_suffix]) + AC_DEFINE_UNQUOTED([OPAL_ASM_LABEL_SUFFIX], ["$opal_cv_asm_label_suffix"], + [Assembly suffix for labels]) + OPAL_ASM_LABEL_SUFFIX="$opal_cv_asm_label_suffix" + AC_SUBST(OPAL_AS_LABEL_SUFFIX) +])dnl + + +dnl ################################################################# +dnl +dnl OPAL_CHECK_ASM_ALIGN_LOG +dnl +dnl Sets OPAL_ASM_ALIGN_LOG to 1 if align is specified +dnl logarithmically, 0 otherwise +dnl +dnl ################################################################# +AC_DEFUN([OPAL_CHECK_ASM_ALIGN_LOG],[ + AC_REQUIRE([AC_PROG_NM]) + AC_REQUIRE([AC_PROG_GREP]) + + AC_CACHE_CHECK([if .align directive takes logarithmic value], + [opal_cv_asm_align_log], + [ OPAL_TRY_ASSEMBLE([ $opal_cv_asm_text + .align 4 + $opal_cv_asm_global foo + .byte 1 + .align 4 +foo$opal_cv_asm_label_suffix + .byte 2], + [opal_asm_addr=[`$NM conftest.$OBJEXT | $GREP foo | sed -e 's/.*\([0-9a-fA-F][0-9a-fA-F]\).*foo.*/\1/'`]], + [opal_asm_addr=""]) + # test for both 16 and 10 (decimal and hex notations) + echo "configure: .align test address offset is $opal_asm_addr" >&AC_FD_CC + if test "$opal_asm_addr" = "16" || test "$opal_asm_addr" = "10" ; then + opal_cv_asm_align_log="yes" + else + opal_cv_asm_align_log="no" + fi]) + + if test "$opal_cv_asm_align_log" = "yes" || test "$opal_cv_asm_align_log" = "1" ; then + opal_asm_align_log_result=1 + else + opal_asm_align_log_result=0 + fi + + AC_DEFINE_UNQUOTED([OPAL_ASM_ALIGN_LOG], + [$asm_align_log_result], + [Assembly align directive expects logarithmic value]) + + unset omp_asm_addr asm_result +])dnl + + +dnl ################################################################# +dnl +dnl OPAL_CHECK_ASM_TYPE +dnl +dnl Sets OPAL_ASM_TYPE to the prefix for the function type to +dnl set a symbol's type as function (needed on ELF for shared +dnl libaries). If no .type directive is needed, sets OPAL_ASM_TYPE +dnl to an empty string +dnl +dnl We look for @ \# % +dnl +dnl ################################################################# +AC_DEFUN([OPAL_CHECK_ASM_TYPE],[ + AC_CACHE_CHECK([prefix for function in .type], + [opal_cv_asm_type], + [_OPAL_CHECK_ASM_TYPE]) + + AC_DEFINE_UNQUOTED([OPAL_ASM_TYPE], ["$opal_cv_asm_type"], + [How to set function type in .type directive]) + OPAL_ASM_TYPE="$opal_cv_asm_type" + AC_SUBST(OPAL_ASM_TYPE) +]) + +AC_DEFUN([_OPAL_CHECK_ASM_TYPE],[ + opal_cv_asm_type="" + + case "${host}" in + *-sun-solaris*) + # GCC on solaris seems to accept just about anything, not + # that what it defines actually works... So just hardwire + # to the right answer + opal_cv_asm_type="#" + ;; + *) + for type in @ \# % ; do + asm_result=0 + echo "configure: trying $type" >&AC_FD_CC + OPAL_TRY_ASSEMBLE([ .type mysym, ${type}function +mysym:], + [opal_cv_asm_type="${type}" + asm_result=1]) + if test "$asm_result" = "1" ; then + break + fi + done + ;; + esac + rm -f conftest.out + + unset asm_result type +])dnl + + +dnl ################################################################# +dnl +dnl OPAL_CHECK_ASM_SIZE +dnl +dnl Sets OPAL_ASM_SIZE to 1 if we should set .size directives for +dnl each function, 0 otherwise. +dnl +dnl ################################################################# +AC_DEFUN([OPAL_CHECK_ASM_SIZE],[ + AC_CACHE_CHECK([if .size is needed], + [opal_cv_asm_need_size], + [opal_cv_asm_need_size="no" + OPAL_TRY_ASSEMBLE([ .size mysym, 1], + [opal_cv_asm_need_size="yes"]) + rm -f conftest.out]) + + if test "$opal_cv_asm_need_size" = "yes" ; then + opal_asm_size=1 + else + opal_asm_size=0 + fi + + AC_DEFINE_UNQUOTED([OPAL_ASM_SIZE], ["$opal_asm_size"], + [Do we need to give a .size directive]) + OPAL_ASM_SIZE="$opal_asm_size" + AC_SUBST(OPAL_ASM_TYPE) + unset asm_result +])dnl + + +# OPAL_CHECK_ASM_GNU_STACKEXEC(var) +# ---------------------------------- +# sets shell variable var to the things necessary to +# disable execable stacks with GAS +AC_DEFUN([OPAL_CHECK_ASM_GNU_STACKEXEC], [ + AC_REQUIRE([AC_PROG_GREP]) + + AC_CHECK_PROG([OBJDUMP], [objdump], [objdump]) + AC_CACHE_CHECK([if .note.GNU-stack is needed], + [opal_cv_asm_gnu_stack_result], + [AS_IF([test "$OBJDUMP" != ""], + [ # first, see if a simple C program has it set + cat >conftest.c < /dev/null && opal_cv_asm_gnu_stack_result=yes], + [OPAL_LOG_MSG([the failed program was:], 1) + OPAL_LOG_FILE([conftest.c]) + opal_cv_asm_gnu_stack_result=no]) + if test "$opal_cv_asm_gnu_stack_result" != "yes" ; then + opal_cv_asm_gnu_stack_result="no" + fi + rm -rf conftest.*], + [opal_cv_asm_gnu_stack_result="no"])]) + if test "$opal_cv_asm_gnu_stack_result" = "yes" ; then + opal_cv_asm_gnu_stack=1 + else + opal_cv_asm_gnu_stack=0 + fi +])dnl + + +dnl ################################################################# +dnl +dnl OPAL_CHECK_POWERPC_REG +dnl +dnl See if the notation for specifying registers is X (most everyone) +dnl or rX (OS X) +dnl +dnl ################################################################# +AC_DEFUN([OPAL_CHECK_POWERPC_REG],[ + AC_MSG_CHECKING([if PowerPC registers have r prefix]) + OPAL_TRY_ASSEMBLE([$opal_cv_asm_text + addi 1,1,0], + [opal_cv_asm_powerpc_r_reg=0], + [OPAL_TRY_ASSEMBLE([$opal_cv_asm_text + addi r1,r1,0], + [opal_cv_asm_powerpc_r_reg=1], + [AC_MSG_ERROR([Can not determine how to use PPC registers])])]) + if test "$opal_cv_asm_powerpc_r_reg" = "1" ; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + + AC_DEFINE_UNQUOTED([OPAL_POWERPC_R_REGISTERS], + [$opal_cv_asm_powerpc_r_reg], + [Whether r notation is used for ppc registers]) +])dnl + + +dnl ################################################################# +dnl +dnl OPAL_CHECK_POWERPC_64BIT +dnl +dnl On some powerpc chips (the PPC970 or G5), the OS usually runs in +dnl 32 bit mode, even though the hardware can do 64bit things. If +dnl the compiler will let us, emit code for 64bit test and set type +dnl operations (on a long long). +dnl +dnl ################################################################# +AC_DEFUN([OPAL_CHECK_POWERPC_64BIT],[ + if test "$ac_cv_sizeof_long" != "4" ; then + # this function should only be called in the 32 bit case + AC_MSG_ERROR([CHECK_POWERPC_64BIT called on 64 bit platform. Internal error.]) + fi + AC_MSG_CHECKING([for 64-bit PowerPC assembly support]) + case $host in + *-darwin*) + ppc64_result=0 + if test "$opal_cv_asm_powerpc_r_reg" = "1" ; then + ldarx_asm=" ldarx r1,r1,r1"; + else + ldarx_asm=" ldarx 1,1,1"; + fi + OPAL_TRY_ASSEMBLE([$opal_cv_asm_text + $ldarx_asm], + [ppc64_result=1], + [ppc64_result=0]) + ;; + *) + ppc64_result=0 + ;; + esac + + if test "$ppc64_result" = "1" ; then + AC_MSG_RESULT([yes]) + ifelse([$1],,:,[$1]) + else + AC_MSG_RESULT([no]) + ifelse([$2],,:,[$2]) + fi + + unset ppc64_result ldarx_asm +])dnl + + +dnl ################################################################# +dnl +dnl OPAL_CHECK_SPARCV8PLUS +dnl +dnl ################################################################# +AC_DEFUN([OPAL_CHECK_SPARCV8PLUS],[ + AC_MSG_CHECKING([if have Sparc v8+/v9 support]) + sparc_result=0 + OPAL_TRY_ASSEMBLE([$opal_cv_asm_text + casa [%o0] 0x80, %o1, %o2], + [sparc_result=1], + [sparc_result=0]) + if test "$sparc_result" = "1" ; then + AC_MSG_RESULT([yes]) + ifelse([$1],,:,[$1]) + else + AC_MSG_RESULT([no]) + ifelse([$2],,:,[$2]) + fi + + unset sparc_result +])dnl + +dnl ################################################################# +dnl +dnl OPAL_CHECK_CMPXCHG16B +dnl +dnl ################################################################# +AC_DEFUN([OPAL_CHECK_CMPXCHG16B],[ + OPAL_VAR_SCOPE_PUSH([cmpxchg16b_result]) + + AC_ARG_ENABLE([cross-cmpxchg16b],[AC_HELP_STRING([--enable-cross-cmpxchg16b], + [enable the use of the cmpxchg16b instruction when cross compiling])]) + + if test ! "$enable_cross_cmpxchg16b" = "yes" ; then + AC_MSG_CHECKING([if processor supports x86_64 16-byte compare-and-exchange]) + AC_RUN_IFELSE([AC_LANG_PROGRAM([[unsigned char tmp[16];]],[[ + __asm__ __volatile__ ("lock cmpxchg16b (%%rsi)" : : "S" (tmp) : "memory", "cc");]])], + [AC_MSG_RESULT([yes]) + cmpxchg16b_result=1], + [AC_MSG_RESULT([no]) + cmpxchg16b_result=0], + [AC_MSG_RESULT([no (cross-compiling)]) + cmpxchg16b_result=0]) + else + AC_MSG_CHECKING([if assembler supports x86_64 16-byte compare-and-exchange]) + + OPAL_TRY_ASSEMBLE([$opal_cv_asm_text + cmpxchg16b 0], + [AC_MSG_RESULT([yes]) + cmpxchg16b_result=1], + [AC_MSG_RESULT([no]) + cmpxchg16b_result=0]) + fi + if test "$cmpxchg16b_result" = 1; then + AC_MSG_CHECKING([if compiler correctly handles volatile 128bits]) + AC_RUN_IFELSE([AC_LANG_PROGRAM([#include +#include + +union opal_counted_pointer_t { + struct { + uint64_t counter; + uint64_t item; + } data; +#if defined(HAVE___INT128) && HAVE___INT128 + __int128 value; +#elif defined(HAVE_INT128_T) && HAVE_INT128_T + int128_t value; +#endif +}; +typedef union opal_counted_pointer_t opal_counted_pointer_t;], + [volatile opal_counted_pointer_t a; + opal_counted_pointer_t b; + + a.data.counter = 0; + a.data.item = 0x1234567890ABCDEF; + + b.data.counter = a.data.counter; + b.data.item = a.data.item; + + /* bozo checks */ + assert(16 == sizeof(opal_counted_pointer_t)); + assert(a.data.counter == b.data.counter); + assert(a.data.item == b.data.item); + /* + * the following test fails on buggy compilers + * so far, with icc -o conftest conftest.c + * - intel icc 14.0.0.080 (aka 2013sp1) + * - intel icc 14.0.1.106 (aka 2013sp1u1) + * older and more recents compilers work fine + * buggy compilers work also fine but only with -O0 + */ +#if (defined(HAVE___INT128) && HAVE___INT128) || (defined(HAVE_INT128_T) && HAVE_INT128_T) + return (a.value != b.value); +#else + return 0; +#endif])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + cmpxchg16b_result=0], + [AC_MSG_RESULT([untested, assuming ok])]) + fi + AC_DEFINE_UNQUOTED([OPAL_HAVE_CMPXCHG16B], [$cmpxchg16b_result], + [Whether the processor supports the cmpxchg16b instruction]) + OPAL_VAR_SCOPE_POP +])dnl + +dnl ################################################################# +dnl +dnl OPAL_CHECK_INLINE_GCC +dnl +dnl Check if the compiler is capable of doing GCC-style inline +dnl assembly. Some compilers emit a warning and ignore the inline +dnl assembly (xlc on OS X) and compile without error. Therefore, +dnl the test attempts to run the emited code to check that the +dnl assembly is actually run. To run this test, one argument to +dnl the macro must be an assembly instruction in gcc format to move +dnl the value 0 into the register containing the variable ret. +dnl For PowerPC, this would be: +dnl +dnl "li %0,0" : "=&r"(ret) +dnl +dnl For testing ia32 assembly, the assembly instruction xaddl is +dnl tested. The xaddl instruction is used by some of the atomic +dnl implementations so it makes sense to test for it. In addition, +dnl some compilers (i.e. earlier versions of Sun Studio 12) do not +dnl necessarily handle xaddl properly, so that needs to be detected +dnl during configure time. +dnl +dnl DEFINE OPAL_GCC_INLINE_ASSEMBLY to 0 or 1 depending on GCC +dnl support +dnl +dnl ################################################################# +AC_DEFUN([OPAL_CHECK_INLINE_C_GCC],[ + assembly="$1" + asm_result="unknown" + + AC_MSG_CHECKING([if $CC supports GCC inline assembly]) + + if test ! "$assembly" = "" ; then + AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],[[ +int ret = 1; +int negone = -1; +__asm__ __volatile__ ($assembly); +return ret; + ]])], + [asm_result="yes"], [asm_result="no"], + [asm_result="unknown"]) + else + assembly="test skipped - assuming no" + fi + + # if we're cross compiling, just try to compile and figure good enough + if test "$asm_result" = "unknown" ; then + AC_LINK_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],[[ +int ret = 1; +int negone = -1; +__asm__ __volatile__ ($assembly); +return ret; + ]])], + [asm_result="yes"], [asm_result="no"]) + fi + + AC_MSG_RESULT([$asm_result]) + + if test "$asm_result" = "yes" ; then + OPAL_C_GCC_INLINE_ASSEMBLY=1 + else + OPAL_C_GCC_INLINE_ASSEMBLY=0 + fi + + AC_DEFINE_UNQUOTED([OPAL_C_GCC_INLINE_ASSEMBLY], + [$OPAL_C_GCC_INLINE_ASSEMBLY], + [Whether C compiler supports GCC style inline assembly]) + + unset OPAL_C_GCC_INLINE_ASSEMBLY assembly asm_result +])dnl + + +dnl ################################################################# +dnl +dnl OPAL_CHECK_INLINE_DEC +dnl +dnl DEFINE OPAL_DEC to 0 or 1 depending on DEC +dnl support +dnl +dnl ################################################################# +AC_DEFUN([OPAL_CHECK_INLINE_C_DEC],[ + + AC_MSG_CHECKING([if $CC supports DEC inline assembly]) + + AC_LINK_IFELSE([AC_LANG_PROGRAM([ +AC_INCLUDES_DEFAULT +#include ], +[[asm(""); +return 0;]])], + [asm_result="yes"], [asm_result="no"]) + + AC_MSG_RESULT([$asm_result]) + + if test "$asm_result" = "yes" ; then + OPAL_C_DEC_INLINE_ASSEMBLY=1 + else + OPAL_C_DEC_INLINE_ASSEMBLY=0 + fi + + AC_DEFINE_UNQUOTED([OPAL_C_DEC_INLINE_ASSEMBLY], + [$OPAL_C_DEC_INLINE_ASSEMBLY], + [Whether C compiler supports DEC style inline assembly]) + + unset OPAL_C_DEC_INLINE_ASSEMBLY asm_result +])dnl + + +dnl ################################################################# +dnl +dnl OPAL_CHECK_INLINE_XLC +dnl +dnl DEFINE OPAL_XLC to 0 or 1 depending on XLC +dnl support +dnl +dnl ################################################################# +AC_DEFUN([OPAL_CHECK_INLINE_C_XLC],[ + + AC_MSG_CHECKING([if $CC supports XLC inline assembly]) + + OPAL_C_XLC_INLINE_ASSEMBLY=0 + asm_result="no" + if test "$CC" = "xlc" ; then + OPAL_XLC_INLINE_ASSEMBLY=1 + asm_result="yes" + fi + + AC_MSG_RESULT([$asm_result]) + AC_DEFINE_UNQUOTED([OPAL_C_XLC_INLINE_ASSEMBLY], + [$OPAL_C_XLC_INLINE_ASSEMBLY], + [Whether C compiler supports XLC style inline assembly]) + + unset OPAL_C_XLC_INLINE_ASSEMBLY +])dnl + + +dnl ################################################################# +dnl +dnl OPAL_CONFIG_ASM +dnl +dnl DEFINE OPAL_ASSEMBLY_ARCH to something in sys/architecture.h +dnl DEFINE OPAL_ASSEMBLY_FORMAT to string containing correct +dnl format for assembly (not user friendly) +dnl SUBST OPAL_ASSEMBLY_FORMAT to string containing correct +dnl format for assembly (not user friendly) +dnl +dnl ################################################################# +AC_DEFUN([OPAL_CONFIG_ASM],[ + AC_REQUIRE([OPAL_SETUP_CC]) + AC_REQUIRE([AM_PROG_AS]) + + AC_ARG_ENABLE([builtin-atomics], + [AC_HELP_STRING([--enable-builtin-atomics], + [Enable use of __sync builtin atomics (default: disabled)])], + [], [enable_builtin_atomics="no"]) + AC_ARG_ENABLE([osx-builtin-atomics], + [AC_HELP_STRING([--enable-osx-builtin-atomics], + [Enable use of OSX builtin atomics (default: disabled)])], + [], [enable_osx_builtin_atomics="no"]) + + opal_cv_asm_builtin="BUILTIN_NO" + if test "$opal_cv_asm_builtin" = "BUILTIN_NO" && test "$enable_builtin_atomics" = "yes" ; then + OPAL_CHECK_GCC_ATOMIC_BUILTINS([opal_cv_asm_builtin="BUILTIN_GCC"], []) + fi + if test "$opal_cv_asm_builtin" = "BUILTIN_NO" && test "$enable_builtin_atomics" = "yes" ; then + OPAL_CHECK_SYNC_BUILTINS([opal_cv_asm_builtin="BUILTIN_SYNC"], []) + fi + if test "$opal_cv_asm_builtin" = "BUILTIN_NO" && test "$enable_osx_builtin_atomics" = "yes" ; then + AC_CHECK_HEADER([libkern/OSAtomic.h], + [opal_cv_asm_builtin="BUILTIN_OSX"]) + fi + + OPAL_CHECK_ASM_PROC + OPAL_CHECK_ASM_TEXT + OPAL_CHECK_ASM_GLOBAL + OPAL_CHECK_ASM_GNU_STACKEXEC + OPAL_CHECK_ASM_LABEL_SUFFIX + OPAL_CHECK_ASM_GSYM + OPAL_CHECK_ASM_LSYM + OPAL_CHECK_ASM_TYPE + OPAL_CHECK_ASM_SIZE + OPAL_CHECK_ASM_ALIGN_LOG + + # find our architecture for purposes of assembly stuff + opal_cv_asm_arch="UNSUPPORTED" + OPAL_GCC_INLINE_ASSIGN="" + OPAL_ASM_SUPPORT_64BIT=0 + case "${host}" in + x86_64-*x32) + opal_cv_asm_arch="X86_64" + OPAL_ASM_SUPPORT_64BIT=1 + OPAL_GCC_INLINE_ASSIGN='"xaddl %1,%0" : "=m"(ret), "+r"(negone) : "m"(ret)' + ;; + i?86-*|x86_64*|amd64*) + if test "$ac_cv_sizeof_long" = "4" ; then + opal_cv_asm_arch="IA32" + else + opal_cv_asm_arch="X86_64" + fi + OPAL_ASM_SUPPORT_64BIT=1 + OPAL_GCC_INLINE_ASSIGN='"xaddl %1,%0" : "=m"(ret), "+r"(negone) : "m"(ret)' + OPAL_CHECK_CMPXCHG16B + ;; + + ia64-*) + opal_cv_asm_arch="IA64" + OPAL_ASM_SUPPORT_64BIT=1 + OPAL_GCC_INLINE_ASSIGN='"mov %0=r0\n;;\n" : "=&r"(ret)' + ;; + aarch64*) + opal_cv_asm_arch="ARM64" + OPAL_ASM_SUPPORT_64BIT=1 + OPAL_ASM_ARM_VERSION=8 + AC_DEFINE_UNQUOTED([OPAL_ASM_ARM_VERSION], [$OPAL_ASM_ARM_VERSION], + [What ARM assembly version to use]) + OPAL_GCC_INLINE_ASSIGN='"mov %0, #0" : "=&r"(ret)' + ;; + + armv7*|arm-*-linux-gnueabihf) + opal_cv_asm_arch="ARM" + OPAL_ASM_SUPPORT_64BIT=1 + OPAL_ASM_ARM_VERSION=7 + AC_DEFINE_UNQUOTED([OPAL_ASM_ARM_VERSION], [$OPAL_ASM_ARM_VERSION], + [What ARM assembly version to use]) + OPAL_GCC_INLINE_ASSIGN='"mov %0, #0" : "=&r"(ret)' + ;; + + armv6*) + opal_cv_asm_arch="ARM" + OPAL_ASM_SUPPORT_64BIT=0 + OPAL_ASM_ARM_VERSION=6 + CCASFLAGS="$CCASFLAGS -march=armv7-a" + AC_DEFINE_UNQUOTED([OPAL_ASM_ARM_VERSION], [$OPAL_ASM_ARM_VERSION], + [What ARM assembly version to use]) + OPAL_GCC_INLINE_ASSIGN='"mov %0, #0" : "=&r"(ret)' + ;; + + armv5*linux*|armv4*linux*|arm-*-linux-gnueabi) + # uses Linux kernel helpers for some atomic operations + opal_cv_asm_arch="ARM" + OPAL_ASM_SUPPORT_64BIT=0 + OPAL_ASM_ARM_VERSION=5 + CCASFLAGS="$CCASFLAGS -march=armv7-a" + AC_DEFINE_UNQUOTED([OPAL_ASM_ARM_VERSION], [$OPAL_ASM_ARM_VERSION], + [What ARM assembly version to use]) + OPAL_GCC_INLINE_ASSIGN='"mov %0, #0" : "=&r"(ret)' + ;; + + mips-*|mips64*) + # Should really find some way to make sure that we are on + # a MIPS III machine (r4000 and later) + opal_cv_asm_arch="MIPS" + OPAL_ASM_SUPPORT_64BIT=1 + OPAL_GCC_INLINE_ASSIGN='"or %0,[$]0,[$]0" : "=&r"(ret)' + ;; + + powerpc-*|powerpc64-*|powerpcle-*|powerpc64le-*|rs6000-*|ppc-*) + OPAL_CHECK_POWERPC_REG + if test "$ac_cv_sizeof_long" = "4" ; then + opal_cv_asm_arch="POWERPC32" + + # Note that on some platforms (Apple G5), even if we are + # compiling in 32 bit mode (and therefore should assume + # sizeof(long) == 4), we can use the 64 bit test and set + # operations. + OPAL_CHECK_POWERPC_64BIT(OPAL_ASM_SUPPORT_64BIT=1) + elif test "$ac_cv_sizeof_long" = "8" ; then + OPAL_ASM_SUPPORT_64BIT=1 + opal_cv_asm_arch="POWERPC64" + else + AC_MSG_ERROR([Could not determine PowerPC word size: $ac_cv_sizeof_long]) + fi + OPAL_GCC_INLINE_ASSIGN='"1: li %0,0" : "=&r"(ret)' + ;; + # There is no current difference between s390 and s390x + # But use two different defines in case some come later + # as s390 is 31bits while s390x is 64bits + s390-*) + opal_cv_asm_arch="S390" + ;; + s390x-*) + opal_cv_asm_arch="S390X" + ;; + sparc*-*) + # SPARC v9 (and above) are the only ones with 64bit support + # if compiling 32 bit, see if we are v9 (aka v8plus) or + # earlier (casa is v8+/v9). + if test "$ac_cv_sizeof_long" = "4" ; then + have_v8plus=0 + OPAL_CHECK_SPARCV8PLUS([have_v8plus=1]) + if test "$have_v8plus" = "0" ; then + OPAL_ASM_SUPPORT_64BIT=0 + opal_cv_asm_arch="SPARC" +AC_MSG_WARN([Sparc v8 target is not supported in this release of Open MPI.]) +AC_MSG_WARN([You must specify the target architecture v8plus to compile]) +AC_MSG_WARN([Open MPI in 32 bit mode on Sparc processors (see the README).]) +AC_MSG_ERROR([Can not continue.]) + else + OPAL_ASM_SUPPORT_64BIT=1 + opal_cv_asm_arch="SPARCV9_32" + fi + + elif test "$ac_cv_sizeof_long" = "8" ; then + OPAL_ASM_SUPPORT_64BIT=1 + opal_cv_asm_arch="SPARCV9_64" + else + AC_MSG_ERROR([Could not determine Sparc word size: $ac_cv_sizeof_long]) + fi + OPAL_GCC_INLINE_ASSIGN='"mov 0,%0" : "=&r"(ret)' + ;; + + *) + OPAL_CHECK_SYNC_BUILTINS([opal_cv_asm_builtin="BUILTIN_SYNC"], + [AC_MSG_ERROR([No atomic primitives available for $host])]) + ;; + esac + + if test "x$OPAL_ASM_SUPPORT_64BIT" = "x1" && test "$opal_cv_asm_builtin" = "BUILTIN_SYNC" && + test "$opal_asm_sync_have_64bit" = "0" ; then + # __sync builtins exist but do not implement 64-bit support. Fall back on inline asm. + opal_cv_asm_builtin="BUILTIN_NO" + fi + + if test "$opal_cv_asm_builtin" = "BUILTIN_SYNC" || test "$opal_cv_asm_builtin" = "BUILTIN_GCC" ; then + AC_DEFINE([OPAL_C_GCC_INLINE_ASSEMBLY], [1], + [Whether C compiler supports GCC style inline assembly]) + else + AC_DEFINE_UNQUOTED([OPAL_ASM_SUPPORT_64BIT], + [$OPAL_ASM_SUPPORT_64BIT], + [Whether we can do 64bit assembly operations or not. Should not be used outside of the assembly header files]) + AC_SUBST([OPAL_ASM_SUPPORT_64BIT]) + + # + # figure out if we need any special function start / stop code + # + case $host_os in + aix*) + opal_asm_arch_config="aix" + ;; + *) + opal_asm_arch_config="default" + ;; + esac + + # now that we know our architecture, try to inline assemble + OPAL_CHECK_INLINE_C_GCC([$OPAL_GCC_INLINE_ASSIGN]) + OPAL_CHECK_INLINE_C_DEC + OPAL_CHECK_INLINE_C_XLC + + # format: + # config_file-text-global-label_suffix-gsym-lsym-type-size-align_log-ppc_r_reg-64_bit-gnu_stack + asm_format="${opal_asm_arch_config}" + asm_format="${asm_format}-${opal_cv_asm_text}-${opal_cv_asm_global}" + asm_format="${asm_format}-${opal_cv_asm_label_suffix}-${opal_cv_asm_gsym}" + asm_format="${asm_format}-${opal_cv_asm_lsym}" + asm_format="${asm_format}-${opal_cv_asm_type}-${opal_asm_size}" + asm_format="${asm_format}-${opal_asm_align_log_result}" + if test "$opal_cv_asm_arch" = "POWERPC32" || test "$opal_cv_asm_arch" = "POWERPC64" ; then + asm_format="${asm_format}-${opal_cv_asm_powerpc_r_reg}" + else + asm_format="${asm_format}-1" + fi + asm_format="${asm_format}-${OPAL_ASM_SUPPORT_64BIT}" + opal_cv_asm_format="${asm_format}-${opal_cv_asm_gnu_stack}" + # For the Makefile, need to escape the $ as $$. Don't display + # this version, but make sure the Makefile gives the right thing + # when regenerating the files because the base has been touched. + OPAL_ASSEMBLY_FORMAT=`echo "$opal_cv_asm_format" | sed -e 's/\\\$/\\\$\\\$/'` + + AC_MSG_CHECKING([for assembly format]) + AC_MSG_RESULT([$opal_cv_asm_format]) + AC_DEFINE_UNQUOTED([OPAL_ASSEMBLY_FORMAT], ["$OPAL_ASSEMBLY_FORMAT"], + [Format of assembly file]) + AC_SUBST([OPAL_ASSEMBLY_FORMAT]) + fi # if opal_cv_asm_builtin = BUILTIN_SYNC + + result="OPAL_$opal_cv_asm_arch" + OPAL_ASSEMBLY_ARCH="$opal_cv_asm_arch" + AC_MSG_CHECKING([for assembly architecture]) + AC_MSG_RESULT([$opal_cv_asm_arch]) + AC_DEFINE_UNQUOTED([OPAL_ASSEMBLY_ARCH], [$result], + [Architecture type of assembly to use for atomic operations and CMA]) + AC_SUBST([OPAL_ASSEMBLY_ARCH]) + + # Check for RDTSCP support + result=0 + AS_IF([test "$opal_cv_asm_arch" = "OPAL_X86_64" || test "$opal_cv_asm_arch" = "OPAL_IA32"], + [AC_MSG_CHECKING([for RDTSCP assembly support]) + AC_LANG_PUSH([C]) + AC_TRY_RUN([[ +int main(int argc, char* argv[]) +{ + unsigned int rax, rdx; + __asm__ __volatile__ ("rdtscp\n": "=a" (rax), "=d" (rdx):: "%rax", "%rdx"); + return 0; +} + ]], + [result=1 + AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])], + [#cross compile not supported + AC_MSG_RESULT(["no (cross compiling)"])]) + AC_LANG_POP([C])]) + AC_DEFINE_UNQUOTED([OPAL_ASSEMBLY_SUPPORTS_RDTSCP], [$result], + [Whether we have support for RDTSCP instruction]) + + result="OPAL_$opal_cv_asm_builtin" + OPAL_ASSEMBLY_BUILTIN="$opal_cv_asm_builtin" + AC_MSG_CHECKING([for builtin atomics]) + AC_MSG_RESULT([$opal_cv_asm_builtin]) + AC_DEFINE_UNQUOTED([OPAL_ASSEMBLY_BUILTIN], [$result], + [Whether to use builtin atomics]) + AC_SUBST([OPAL_ASSEMBLY_BUILTIN]) + + OPAL_ASM_FIND_FILE + + unset result asm_format +])dnl + + +dnl ################################################################# +dnl +dnl OPAL_ASM_FIND_FILE +dnl +dnl +dnl do all the evil mojo to provide a working assembly file +dnl +dnl ################################################################# +AC_DEFUN([OPAL_ASM_FIND_FILE], [ + AC_REQUIRE([AC_PROG_GREP]) + AC_REQUIRE([AC_PROG_FGREP]) + +if test "$opal_cv_asm_arch" != "WINDOWS" && test "$opal_cv_asm_builtin" != "BUILTIN_SYNC" && test "$opal_cv_asm_builtin" != "BUILTIN_GCC" && test "$opal_cv_asm_builtin" != "BUILTIN_OSX" ; then + # see if we have a pre-built one already + AC_MSG_CHECKING([for pre-built assembly file]) + opal_cv_asm_file="" + if $GREP "$opal_cv_asm_arch" "${OPAL_TOP_SRCDIR}/opal/asm/asm-data.txt" | $FGREP "$opal_cv_asm_format" >conftest.out 2>&1 ; then + opal_cv_asm_file="`cut -f3 conftest.out`" + if test ! "$opal_cv_asm_file" = "" ; then + opal_cv_asm_file="atomic-${opal_cv_asm_file}.s" + if test -f "${OPAL_TOP_SRCDIR}/opal/asm/generated/${opal_cv_asm_file}" ; then + AC_MSG_RESULT([yes ($opal_cv_asm_file)]) + else + AC_MSG_RESULT([no ($opal_cv_asm_file not found)]) + opal_cv_asm_file="" + fi + fi + else + AC_MSG_RESULT([no (not in asm-data)]) + fi + rm -rf conftest.* + + if test "$opal_cv_asm_file" = "" ; then + # Can we generate a file? + AC_MSG_CHECKING([whether possible to generate assembly file]) + mkdir -p opal/asm/generated + opal_cv_asm_file="atomic-local.s" + opal_try='$PERL $OPAL_TOP_SRCDIR/opal/asm/generate-asm.pl $opal_cv_asm_arch "$opal_cv_asm_format" $OPAL_TOP_SRCDIR/opal/asm/base $OPAL_TOP_BUILDDIR/opal/asm/generated/$opal_cv_asm_file >conftest.out 2>&1' + if AC_TRY_EVAL(opal_try) ; then + # save the warnings + cat conftest.out >&AC_FD_CC + AC_MSG_RESULT([yes]) + else + # save output + cat conftest.out >&AC_FD_CC + opal_cv_asm_file="" + AC_MSG_RESULT([failed]) + AC_MSG_WARN([Could not build atomic operations assembly file.]) + AC_MSG_WARN([There will be no atomic operations for this build.]) + fi + fi + rm -rf conftest.* +else + # On windows with VC++, atomics are done with compiler primitives + opal_cv_asm_file="" +fi + + AC_MSG_CHECKING([for atomic assembly filename]) + if test "$opal_cv_asm_file" = "" ; then + AC_MSG_RESULT([none]) + result=0 + else + AC_MSG_RESULT([$opal_cv_asm_file]) + result=1 + fi + + AC_DEFINE_UNQUOTED([OPAL_HAVE_ASM_FILE], [$result], + [Whether there is an atomic assembly file available]) + AM_CONDITIONAL([OPAL_HAVE_ASM_FILE], [test "$result" = "1"]) + + OPAL_ASM_FILE=$opal_cv_asm_file + AC_SUBST(OPAL_ASM_FILE) +])dnl diff --git a/config/opal_config_files.m4 b/config/opal_config_files.m4 new file mode 100644 index 00000000..14aec99b --- /dev/null +++ b/config/opal_config_files.m4 @@ -0,0 +1,30 @@ +# -*- shell-script -*- +# +# Copyright (c) 2009-2010 Cisco Systems, Inc. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# This file is m4_included in the top-level configure.ac + +AC_DEFUN([OPAL_CONFIG_FILES],[ + AC_CONFIG_FILES([ + opal/Makefile + opal/etc/Makefile + opal/include/Makefile + opal/asm/Makefile + opal/datatype/Makefile + opal/util/Makefile + opal/util/keyval/Makefile + opal/mca/base/Makefile + opal/tools/wrappers/Makefile + opal/tools/wrappers/opalcc-wrapper-data.txt + opal/tools/wrappers/opalc++-wrapper-data.txt + opal/tools/wrappers/opal.pc + opal/tools/opal-checkpoint/Makefile + opal/tools/opal-restart/Makefile + ]) +]) diff --git a/config/opal_config_pthreads.m4 b/config/opal_config_pthreads.m4 new file mode 100644 index 00000000..b2d9c7aa --- /dev/null +++ b/config/opal_config_pthreads.m4 @@ -0,0 +1,676 @@ +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2012 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2014 Intel, Inc. All rights reserved. +dnl Copyright (c) 2014-2016 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl +dnl OPAL_CONFIG_POSIX_THREADS() +dnl +dnl Configure posix threads, setting the following variables (but +dnl not calling AC_SUBST on them). + +# ******************************************************************** +# +# Internal macros - do not call from outside OPAL_CONFIG_POSIX_THREADS +# +# ******************************************************************** + + +AC_DEFUN([OPAL_INTL_PTHREAD_TRY_LINK], [ +# BEGIN: OPAL_INTL_PTHREAD_TRY_LINK +# +# Make sure that we can run a small application in C or C++, which +# ever is the current language. Do make sure that C or C++ is the +# current language. +# +# As long as this is not being run.... +# pthread_t may be anything from an int to a struct -- init with self-tid. +# + AC_LINK_IFELSE([AC_LANG_SOURCE([[ +#include + +int i = 3; +pthread_t me, newthread; + +void cleanup_routine(void *foo); +void *thread_main(void *foo); + +void cleanup_routine(void *foo) { i = 4; } +void *thread_main(void *foo) { i = 2; return (void*) &i; } + +int main(int argc, char* argv[]) +{ + pthread_attr_t attr; + + me = pthread_self(); + pthread_atfork(NULL, NULL, NULL); + pthread_attr_init(&attr); + pthread_cleanup_push(cleanup_routine, 0); + pthread_create(&newthread, &attr, thread_main, 0); + pthread_join(newthread, 0); + pthread_cleanup_pop(0); + + return 0; +}]])], + [$1], [$2]) +# END: OPAL_INTL_PTHREAD_TRY_LINK +])dnl + + +AC_DEFUN([OPAL_INTL_PTHREAD_TRY_LINK_FORTRAN], [ +# BEGIN: OPAL_INTL_PTHREAD_TRY_LINK_FORTRAN +# +# Make sure that we can run a small application in Fortran, with +# pthreads living in a C object file + +# Fortran module +cat > conftestf.f < conftest.c < +#include +#include +$opal_conftest_h + +#ifdef __cplusplus +extern "C" { +#endif +int i = 3; +pthread_t me, newthread; + +void cleanup_routine(void *foo); +void *thread_main(void *foo); +void pthreadtest_f(void); + +void cleanup_routine(void *foo) { i = 4; } +void *thread_main(void *foo) { i = 2; return (void*) &i; } + +void pthreadtest_f(void) +{ + pthread_attr_t attr; + + me = pthread_self(); + pthread_atfork(NULL, NULL, NULL); + pthread_attr_init(&attr); + pthread_cleanup_push(cleanup_routine, 0); + pthread_create(&newthread, &attr, thread_main, 0); + pthread_join(newthread, 0); + pthread_cleanup_pop(0); +} + +void pthreadtest(void) +{ pthreadtest_f(); } + +void pthreadtest_(void) +{ pthreadtest_f(); } + +void pthreadtest__(void) +{ pthreadtest_f(); } + +void PTHREADTEST(void) +{ pthreadtest_f(); } + +#ifdef __cplusplus +} +#endif +EOF + +# Try the compile +OPAL_LOG_COMMAND( + [$CC $CFLAGS -I. -c conftest.c], + OPAL_LOG_COMMAND( + [$FC $FCFLAGS conftestf.f conftest.o -o conftest $LDFLAGS $LIBS], + [HAPPY=1], + [HAPPY=0]), + [HAPPY=0]) + +if test "$HAPPY" = "1"; then + $1 +else + OPAL_LOG_MSG([here is the C program:], 1) + OPAL_LOG_FILE([conftest.c]) + if test -f conftest.h; then + OPAL_LOG_MSG([here is contest.h:], 1) + OPAL_LOG_FILE([conftest.h]) + fi + OPAL_LOG_MSG([here is the fortran program:], 1) + OPAL_LOG_FILE([conftestf.f]) + $2 +fi + +unset HAPPY opal_conftest_h +rm -rf conftest* +# END: OPAL_INTL_PTHREAD_TRY_LINK_FORTRAN +])dnl + + +# ******************************************************************** +# +# Try to compile thread support without any special flags +# +# ******************************************************************** +AC_DEFUN([OPAL_INTL_POSIX_THREADS_PLAIN_C], [ +# +# C compiler +# +if test "$opal_pthread_c_success" = "0"; then + AC_MSG_CHECKING([if C compiler and POSIX threads work as is]) + + AC_LANG_PUSH(C) + OPAL_INTL_PTHREAD_TRY_LINK(opal_pthread_c_success=1, + opal_pthread_c_success=0) + AC_LANG_POP(C) + if test "$opal_pthread_c_success" = "1"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi +fi +])dnl + + +AC_DEFUN([OPAL_INTL_POSIX_THREADS_PLAIN_CXX], [ +# +# C++ compiler +# +if test "$opal_pthread_cxx_success" = "0"; then + AC_MSG_CHECKING([if C++ compiler and POSIX threads work as is]) + + AC_LANG_PUSH(C++) + OPAL_INTL_PTHREAD_TRY_LINK(opal_pthread_cxx_success=1, + opal_pthread_cxx_success=0) + AC_LANG_POP(C++) + if test "$opal_pthread_cxx_success" = "1"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi +fi +])dnl + + +AC_DEFUN([OPAL_INTL_POSIX_THREADS_PLAIN_FC], [ +# +# Fortran compiler +# +if test "$opal_pthread_fortran_success" = "0" && \ + test "$OMPI_TRY_FORTRAN_BINDINGS" -gt "$OMPI_FORTRAN_NO_BINDINGS" && \ + test $ompi_fortran_happy -eq 1; then + AC_MSG_CHECKING([if Fortran compiler and POSIX threads work as is]) + + AC_LANG_PUSH(C) + OPAL_INTL_PTHREAD_TRY_LINK_FORTRAN(opal_pthread_fortran_success=1, + opal_pthread_fortran_success=0) + AC_LANG_POP(C) + if test "$opal_pthread_fortran_success" = "1"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi +fi +])dnl + + +AC_DEFUN([OPAL_INTL_POSIX_THREADS_PLAIN], [ +# BEGIN: OPAL_INTL_POSIX_THREADS_PLAIN +# +# Check if can compile without any special flags +# we throw -D_REENTRANT or -D_THREAD_SAFE in here, just in +# case. Some systems (OS X, for example) generally don't need +# the defines, but then will on one system header here or there +# why take chances? +# + +# Only run C++ and Fortran if those compilers already configured +AC_PROVIDE_IFELSE([AC_PROG_CC], + [OPAL_INTL_POSIX_THREADS_PLAIN_C], + [opal_pthread_c_success=1]) + +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [OPAL_INTL_POSIX_THREADS_PLAIN_CXX], + [opal_pthread_cxx_success=1]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [OPAL_INTL_POSIX_THREADS_PLAIN_FC], + [opal_pthread_fortran_success=1]) + +# End: OPAL_INTL_POSIX_THREADS_PLAIN +])dnl + + +# ******************************************************************** +# +# Try to compile thread support with special compiler flags +# +# ******************************************************************** +AC_DEFUN([OPAL_INTL_POSIX_THREADS_SPECIAL_FLAGS_C], [ +# +# C compiler +# +if test "$opal_pthread_c_success" = "0"; then + for pf in $pflags; do + AC_MSG_CHECKING([if C compiler and POSIX threads work with $pf]) + CFLAGS="$orig_CFLAGS $pf" + AC_LANG_PUSH(C) + OPAL_INTL_PTHREAD_TRY_LINK(opal_pthread_c_success=1, + opal_pthread_c_success=0) + AC_LANG_POP(C) + if test "$opal_pthread_c_success" = "1"; then + PTHREAD_CFLAGS="$pf" + AC_MSG_RESULT([yes]) + break + else + PTHREAD_CFLAGS= + CFLAGS="$orig_CFLAGS" + AC_MSG_RESULT([no]) + fi + done +fi +]) + + +AC_DEFUN([OPAL_INTL_POSIX_THREADS_SPECIAL_FLAGS_CXX], [ +# +# C++ compiler +# +if test "$opal_pthread_cxx_success" = "0"; then + for pf in $pflags; do + AC_MSG_CHECKING([if C++ compiler and POSIX threads work with $pf]) + CXXFLAGS="$orig_CXXFLAGS $pf" + AC_LANG_PUSH(C++) + OPAL_INTL_PTHREAD_TRY_LINK(opal_pthread_cxx_success=1, + opal_pthread_cxx_success=0) + AC_LANG_POP(C++) + if test "$opal_pthread_cxx_success" = "1"; then + PTHREAD_CXXFLAGS="$pf" + AC_MSG_RESULT([yes]) + break + else + PTHREAD_CXXFLAGS= + CXXFLAGS="$orig_CXXFLAGS" + AC_MSG_RESULT([no]) + fi + done +fi +]) + + +AC_DEFUN([OPAL_INTL_POSIX_THREADS_SPECIAL_FLAGS_FC], [ +# +# Fortran compiler +# +if test "$opal_pthread_fortran_success" = "0" && \ + test "$OMPI_TRY_FORTRAN_BINDINGS" -gt "$OMPI_FORTRAN_NO_BINDINGS" && \ + test $ompi_fortran_happy -eq 1; then + for pf in $pflags; do + AC_MSG_CHECKING([if Fortran compiler and POSIX threads work with $pf]) + FCFLAGS="$orig_FCFLAGS $pf" + AC_LANG_PUSH(C) + OPAL_INTL_PTHREAD_TRY_LINK_FORTRAN(opal_pthread_fortran_success=1, + opal_pthread_fortran_success=0) + AC_LANG_POP(C) + if test "$opal_pthread_fortran_success" = "1"; then + PTHREAD_FCFLAGS="$pf" + AC_MSG_RESULT([yes]) + break + else + PTHREAD_FCFLAGS= + FCFLAGS="$orig_FCFLAGS" + AC_MSG_RESULT([no]) + fi + done +fi +]) + + +AC_DEFUN([OPAL_INTL_POSIX_THREADS_SPECIAL_FLAGS],[ +# Begin: OPAL_INTL_POSIX_THREADS_SPECIAL_FLAGS +# +# If above didn't work, try some super-special compiler flags +# that get evaluated to the "right" things. +# +# -Kthread: +# -kthread: FreeBSD kernel threads +# -pthread: Modern GCC (most all platforms) +# -pthreads: GCC on solaris +# -mthreads: +# -mt: Solaris native compilers / HP-UX aCC +# +# Put -mt before -mthreads because HP-UX aCC will properly compile +# with -mthreads (reading as -mt), but emit a warning about unknown +# flags hreads. Stupid compilers. + +case "${host_cpu}-${host_os}" in + *solaris*) + pflags="-pthread -pthreads -mt" + ;; + *) + pflags="-Kthread -kthread -pthread -pthreads -mt -mthreads" + ;; +esac + +# Only run C++ and Fortran if those compilers already configured +AC_PROVIDE_IFELSE([AC_PROG_CC], + [OPAL_INTL_POSIX_THREADS_SPECIAL_FLAGS_C], + [opal_pthread_c_success=1]) + +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [OPAL_INTL_POSIX_THREADS_SPECIAL_FLAGS_CXX], + [opal_pthread_cxx_success=1]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [OPAL_INTL_POSIX_THREADS_SPECIAL_FLAGS_FC], + [opal_pthread_fortran_success=1]) + +# End: OPAL_INTL_POSIX_THREADS_SPECIAL_FLAGS +])dnl + + +# ******************************************************************** +# +# Try to compile thread support with extra libs +# +# ******************************************************************** +AC_DEFUN([OPAL_INTL_POSIX_THREADS_LIBS_C],[ +# +# C compiler +# +if test "$opal_pthread_c_success" = "0"; then + for pl in $plibs; do + AC_MSG_CHECKING([if C compiler and POSIX threads work with $pl]) + case "${host_cpu}-${host-_os}" in + *-aix* | *-freebsd*) + if test "`echo $CPPFLAGS | $GREP 'D_THREAD_SAFE'`" = ""; then + PTHREAD_CPPFLAGS="-D_THREAD_SAFE" + CPPFLAGS="$CPPFLAGS $PTHREAD_CPPFLAGS" + fi + ;; + *) + if test "`echo $CPPFLAGS | $GREP 'D_REENTRANT'`" = ""; then + PTHREAD_CPPFLAGS="-D_REENTRANT" + CPPFLAGS="$CPPFLAGS $PTHREAD_CPPFLAGS" + fi + ;; + esac + LIBS="$orig_LIBS $pl" + AC_LANG_PUSH(C) + OPAL_INTL_PTHREAD_TRY_LINK(opal_pthread_c_success=1, + opal_pthread_c_success=0) + AC_LANG_POP(C) + if test "$opal_pthread_c_success" = "1"; then + PTHREAD_LIBS="$pl" + AC_MSG_RESULT([yes]) + else + PTHREAD_CPPFLAGS= + CPPFLAGS="$orig_CPPFLAGS" + LIBS="$orig_LIBS" + AC_MSG_RESULT([no]) + fi + done +fi +])dnl + + +AC_DEFUN([OPAL_INTL_POSIX_THREADS_LIBS_CXX],[ +# +# C++ compiler +# +if test "$opal_pthread_cxx_success" = "0"; then + if test ! "$opal_pthread_c_success" = "0" && test ! "$PTHREAD_LIBS" = "" ; then + AC_MSG_CHECKING([if C++ compiler and POSIX threads work with $PTHREAD_LIBS]) + case "${host_cpu}-${host-_os}" in + *-aix* | *-freebsd*) + if test "`echo $CXXCPPFLAGS | $GREP 'D_THREAD_SAFE'`" = ""; then + PTHREAD_CXXCPPFLAGS="-D_THREAD_SAFE" + CXXCPPFLAGS="$CXXCPPFLAGS $PTHREAD_CXXCPPFLAGS" + fi + ;; + *) + if test "`echo $CXXCPPFLAGS | $GREP 'D_REENTRANT'`" = ""; then + PTHREAD_CXXCPPFLAGS="-D_REENTRANT" + CXXCPPFLAGS="$CXXCPPFLAGS $PTHREAD_CXXCPPFLAGS" + fi + ;; + esac + LIBS="$orig_LIBS $PTHREAD_LIBS" + AC_LANG_PUSH(C++) + OPAL_INTL_PTHREAD_TRY_LINK(opal_pthread_cxx_success=1, + opal_pthread_cxx_success=0) + AC_LANG_POP(C++) + if test "$opal_pthread_cxx_success" = "1"; then + AC_MSG_RESULT([yes]) + else + CXXCPPFLAGS="$orig_CXXCPPFLAGS" + LIBS="$orig_LIBS" + AC_MSG_RESULT([no]) + AC_MSG_ERROR([Can not find working threads configuration. aborting]) + fi + else + for pl in $plibs; do + AC_MSG_CHECKING([if C++ compiler and POSIX threads work with $pl]) + case "${host_cpu}-${host-_os}" in + *-aix* | *-freebsd*) + if test "`echo $CXXCPPFLAGS | $GREP 'D_THREAD_SAFE'`" = ""; then + PTHREAD_CXXCPPFLAGS="-D_THREAD_SAFE" + CXXCPPFLAGS="$CXXCPPFLAGS $PTHREAD_CXXCPPFLAGS" + fi + ;; + *) + if test "`echo $CXXCPPFLAGS | $GREP 'D_REENTRANT'`" = ""; then + PTHREAD_CXXCPPFLAGS="-D_REENTRANT" + CXXCPPFLAGS="$CXXCPPFLAGS $PTHREAD_CXXCPPFLAGS" + fi + ;; + esac + LIBS="$orig_LIBS $pl" + AC_LANG_PUSH(C++) + OPAL_INTL_PTHREAD_TRY_LINK(opal_pthread_cxx_success=1, + opal_pthread_cxx_success=0) + AC_LANG_POP(C++) + if test "$opal_pthread_cxx_success" = "1"; then + PTHREAD_LIBS="$pl" + AC_MSG_RESULT([yes]) + else + PTHREAD_CXXCPPFLAGS= + CXXCPPFLAGS="$orig_CXXCPPFLAGS" + LIBS="$orig_LIBS" + AC_MSG_RESULT([no]) + fi + done + fi +fi +])dnl + + +AC_DEFUN([OPAL_INTL_POSIX_THREADS_LIBS_FC],[ +# +# Fortran compiler +# +if test "$opal_pthread_fortran_success" = "0" && \ + test "$OMPI_TRY_FORTRAN_BINDINGS" -gt "$OMPI_FORTRAN_NO_BINDINGS" && \ + test $ompi_fortran_happy -eq 1; then + if test ! "$opal_pthread_c_success" = "0" && test ! "$PTHREAD_LIBS" = "" ; then + AC_MSG_CHECKING([if Fortran compiler and POSIX threads work with $PTHREAD_LIBS]) + LIBS="$orig_LIBS $PTHREAD_LIBS" + AC_LANG_PUSH(C) + OPAL_INTL_PTHREAD_TRY_LINK_FORTRAN(opal_pthread_fortran_success=1, + opal_pthread_fortran_success=0) + AC_LANG_POP(C) + if test "$opal_pthread_fortran_success" = "1"; then + AC_MSG_RESULT([yes]) + else + LIBS="$orig_LIBS" + AC_MSG_RESULT([no]) + AC_MSG_ERROR([Can not find working threads configuration. aborting]) + fi + else + for pl in $plibs; do + AC_MSG_CHECKING([if Fortran compiler and POSIX threads work with $pl]) + LIBS="$orig_LIBS $pl" + AC_LANG_PUSH(C) + OPAL_INTL_PTHREAD_TRY_LINK_FORTRAN(opal_pthread_fortran_success=1, + opal_pthread_fortran_success=0) + AC_LANG_POP(C) + if test "$opal_pthread_fortran_success" = "1"; then + PTHREAD_LIBS="$pl" + AC_MSG_RESULT([yes]) + break + else + LIBS="$orig_LIBS" + AC_MSG_RESULT([no]) + fi + done + fi +fi +])dnl + + +AC_DEFUN([OPAL_INTL_POSIX_THREADS_LIBS],[ +# Begin: OPAL_INTL_POSIX_THREADS_LIBS +# +# if we can't find a super-special compiler flags, try some libraries. +# we throw -D_REENTRANT or -D_THREAD_SAFE in here, just in case. Some +# systems (OS X, for example) generally don't need the defines, but +# then will on one system header here or there why take chances? +# +# libpthreads: AIX - must check before libpthread +# liblthread: LinuxThreads on FreeBSD +# libpthread: The usual place (like we can define usual!) +plibs="-lpthreads -llthread -lpthread" + +# Only run C++ and Fortran if those compilers already configured +AC_PROVIDE_IFELSE([AC_PROG_CC], + [OPAL_INTL_POSIX_THREADS_LIBS_C], + [opal_pthread_c_success=1]) + +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [OPAL_INTL_POSIX_THREADS_LIBS_CXX], + [opal_pthread_cxx_success=1]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [OPAL_INTL_POSIX_THREADS_LIBS_FC], + [opal_pthread_fortran_success=1]) + +# End: OPAL_INTL_POSIX_THREADS_LIBS] +)dnl + + +#******************************************************************** +# +# External macro (aka, the real thing) +# +#******************************************************************** +AC_DEFUN([OPAL_CONFIG_POSIX_THREADS],[ + AC_REQUIRE([AC_PROG_GREP]) + +opal_pthread_c_success=0 +opal_pthread_fortran_success=0 +opal_pthread_cxx_success=0 + +orig_CFLAGS="$CFLAGS" +orig_FCFLAGS="$FCFLAGS" +orig_CXXFLAGS="$CXXFLAGS" +orig_CPPFLAGS="$CPPFLAGS" +orig_CXXCPPFLAGS="$CXXCPPFLAGS" +orig_LDFLAGS="$LDFLAGS" +orig_LIBS="$LIBS" + +PTHREAD_CFLAGS= +PTHREAD_FCFLAGS= +PTHREAD_CXXFLAGS= +PTHREAD_CPPFLAGS= +PTHREAD_CXXCPPFLAGS= +PTHREAD_LDFLAGS= +PTHREAD_LIBS= + +# Try with the basics, mam. +OPAL_INTL_POSIX_THREADS_PLAIN + +# Try the super-special compiler flags. +OPAL_INTL_POSIX_THREADS_SPECIAL_FLAGS + +# Try the normal linking methods (that's no fun) +OPAL_INTL_POSIX_THREADS_LIBS + +# +# check to see if we can create shared memory mutexes and conditions +# +AC_CHECK_FUNCS([pthread_mutexattr_setpshared pthread_condattr_setpshared]) + +# +# check to see if we can set error checking mutexes +# + +# LinuxThreads +AC_MSG_CHECKING([for PTHREAD_MUTEX_ERRORCHECK_NP]) +AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[pthread_mutexattr_settype(NULL, PTHREAD_MUTEX_ERRORCHECK_NP);]])], + [result="yes" defval=1], [result="no" defval=0]) +AC_MSG_RESULT([$result]) +AC_DEFINE_UNQUOTED([OPAL_HAVE_PTHREAD_MUTEX_ERRORCHECK_NP], [$defval], + [If PTHREADS implementation supports PTHREAD_MUTEX_ERRORCHECK_NP]) + +# Mac OS X +AC_MSG_CHECKING([for PTHREAD_MUTEX_ERRORCHECK]) +AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[pthread_mutexattr_settype(NULL, PTHREAD_MUTEX_ERRORCHECK);]])], + [result="yes" defval=1], [result="no" defval=0]) +AC_MSG_RESULT([$result]) +AC_DEFINE_UNQUOTED([OPAL_HAVE_PTHREAD_MUTEX_ERRORCHECK], [$defval], + [If PTHREADS implementation supports PTHREAD_MUTEX_ERRORCHECK]) + +CFLAGS="$orig_CFLAGS" +FCFLAGS="$orig_FCFLAGS" +CXXFLAGS="$orig_CXXFLAGS" +CPPFLAGS="$orig_CPPFLAGS" +CXXCPPFLAGS="$orig_CXXCPPFLAGS" +LDFLAGS="$orig_LDFLAGS" +LIBS="$orig_LIBS" + +if test "$OMPI_TRY_FORTRAN_BINDINGS" = "$OMPI_FORTRAN_NO_BINDINGS" || \ + test $ompi_fortran_happy -ne 1; then + opal_pthread_fortran_success=1 +fi + +if test "$opal_pthread_c_success" = "1" && \ + test "$opal_pthread_cxx_success" = "1" && \ + test "$opal_pthread_fortran_success" = "1"; then + internal_useless=1 + $1 +else + internal_useless=1 + $2 +fi + +unset opal_pthread_c_success opal_pthread_fortran_success opal_pthread_cxx_success +unset internal_useless +])dnl diff --git a/config/opal_config_subdir.m4 b/config/opal_config_subdir.m4 new file mode 100644 index 00000000..b6e20c80 --- /dev/null +++ b/config/opal_config_subdir.m4 @@ -0,0 +1,147 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2012-2015 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2014 Intel, Inc. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +AC_DEFUN([OPAL_CONFIG_SUBDIR],[ +OPAL_VAR_SCOPE_PUSH([subdir_parent sub_configure subdir_dir subdir_srcdir subdir_cache_file subdir_args subdir_dots total_dir dir_part temp]) + +# +# Invoke configure in a specific subdirectory. +# +# $1 is the directory to invoke in +# $2 is the list of arguments to pass +# $3 is actions to execute upon success +# $4 is actions to execute upon failure +# +subdir_dir="$1" +subdir_args="$2" +subdir_success="$3" +subdir_failure="$4" + +# +# Sanity checks +# + +if test "$subdir_dir" != ":" && test -d $srcdir/$subdir_dir; then + AC_MSG_NOTICE([OPAL configuring in $subdir_dir]) + + # + # Gotta check where srcdir is for VPATH builds. If srcdir is not + # ., then we need to mkdir the subdir. Otherwise, we can just cd + # into it. + # + + case $srcdir in + .) + ;; + *) + { case $subdir_dir in + [[\\/]]* | ?:[[\\/]]* ) total_dir=;; + *) total_dir=.;; + esac + temp=$subdir_dir + for dir_part in `IFS='/\\'; set X $temp; shift; echo "$[@]"`; do + case $dir_part in + # Skip DOS drivespec + ?:) total_dir=$dir_part ;; + *) total_dir=$total_dir/$dir_part + test -d "$total_dir" || + mkdir "$total_dir" || + AC_MSG_ERROR([cannot create $subdir_dir]) + ;; + esac + done; } + + if test -d ./$subdir_dir; then :; + else + AC_MSG_ERROR([cannot create `pwd`/$subdir_dir]) + fi + ;; + esac + + # + # Move into the target directory + # + + subdir_parent=`pwd` + cd $subdir_dir + + # + # Make a "../" for each directory in $subdir_dir. + # + + subdir_dots=`[echo $subdir_dir | sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g]'` + # + # Construct the --srcdir argument + # + + case $srcdir in + .) + # In place + subdir_srcdir="$srcdir" + ;; + [[\\/]* | ?:[\\/]*] ) + # Absolute path + subdir_srcdir="$srcdir/$subdir_dir" + ;; + *) + # Relative path + subdir_srcdir="$subdir_dots$srcdir/$subdir_dir" + ;; + esac + + # + # Construct the --cache-file argument + # + + # BWB - subdir caching is a pain since we change CFLAGS and all that. + # Just disable it for now + subdir_cache_file="/dev/null" + + # + # Invoke the configure script in the subdirectory + # + + sub_configure="$SHELL '$subdir_srcdir/configure'" + AC_MSG_NOTICE([running $sub_configure $subdir_args --cache-file=$subdir_cache_file --srcdir=$subdir_srcdir --disable-option-checking]) + eval "$sub_configure $subdir_args \ + --cache-file=\"\$subdir_cache_file\" --srcdir=\"$subdir_srcdir\" --disable-option-checking" + if test "$?" = "0"; then + eval $subdir_success + AC_MSG_NOTICE([$sub_configure succeeded for $subdir_dir]) + else + eval $subdir_failure + AC_MSG_NOTICE([$sub_configure *failed* for $subdir_dir]) + fi + + # + # Go back to the topdir + # + + cd $subdir_parent +fi + +# +# Clean up +# + +OPAL_VAR_SCOPE_POP])dnl diff --git a/config/opal_config_subdir_args.m4 b/config/opal_config_subdir_args.m4 new file mode 100644 index 00000000..3b7a3558 --- /dev/null +++ b/config/opal_config_subdir_args.m4 @@ -0,0 +1,84 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2014-2015 Intel, Inc. All rights reserved. +dnl Copyright (c) 2015 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +AC_DEFUN([OPAL_CONFIG_SUBDIR_ARGS],[ +OPAL_VAR_SCOPE_PUSH([subdirs_str subdirs_skip subdirs_args subdirs_arg]) +# +# Invoke configure in subdirectories. +# +# $1 is the name of the variable to assign the output to +# + +# +# Make a list of command line args --eliminate the --srcdir and +# --cache-file args, because we need to replace them with our own +# values when invoking the sub-configure script. Also eliminate +# the --with-platform as this will confuse any subdir with +# similar options +# + +subdirs_args= +subdirs_skip=no + +eval "set x $ac_configure_args" +shift +for subdirs_arg +do + if test "$subdirs_skip" = "yes"; then + subdirs_skip=no + else + case $subdirs_arg in + -cache-file | --cache-file | -cache | --cache) + subdirs_skip=yes + ;; + --config-cache | -C) + ;; + -cache-file=* | --cache-file=*) + ;; + -srcdir | --srcdir) + subdirs_skip=yes + ;; + -srcdir=* | --srcdir=*) + ;; + -with-platform=* | --with-platform=*) + ;; + *) + case $subdir_arg in + *\'*) subdir_arg=`echo "$subdir_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + subdirs_args="$subdirs_args '$subdirs_arg'" + ;; + esac + fi +done + +# +# Assign the output +# + +subdirs_str=$1=\"$subdirs_args\" +eval "$subdirs_str" + +# +# Clean up +# + +OPAL_VAR_SCOPE_POP])dnl diff --git a/config/opal_config_threads.m4 b/config/opal_config_threads.m4 new file mode 100644 index 00000000..66aa874a --- /dev/null +++ b/config/opal_config_threads.m4 @@ -0,0 +1,72 @@ +dnl +dnl Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2010 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2009-2011 Oak Ridge National Labs. All rights reserved. +dnl Copyright (c) 2014 Intel, Inc. All rights reserved +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +AC_DEFUN([OPAL_CONFIG_THREADS],[ +# +# Arguments: none +# +# Dependencies: None +# +# Modifies: +# none - see called tests +# +# configure threads +# + +# +# Check we have POSIX threads +# +OPAL_CONFIG_POSIX_THREADS(HAVE_POSIX_THREADS=1, HAVE_POSIX_THREADS=0) +AC_MSG_CHECKING([for working POSIX threads package]) +if test "$HAVE_POSIX_THREADS" = "1" ; then + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi +export HAVE_POSIX_THREADS + +# +# Ask what threading we want (allow posix right now) +# + +if test "$HAVE_POSIX_THREADS" = "0"; then + AC_MSG_WARN(["*** POSIX threads are not"]) + AC_MSG_WARN(["*** available on your system "]) + AC_MSG_ERROR(["*** Can not continue"]) +fi + +THREAD_CFLAGS="$PTHREAD_CFLAGS" +THREAD_FCFLAGS="$PTHREAD_FCFLAGS" +THREAD_CXXFLAGS="$PTHREAD_CXXFLAGS" +THREAD_CPPFLAGS="$PTHREAD_CPPFLAGS" +THREAD_CXXCPPFLAGS="$PTHREAD_CXXCPPFLAGS" +THREAD_LDFLAGS="$PTHREAD_LDFLAGS" +THREAD_LIBS="$PTHREAD_LIBS" + +OPAL_CHECK_PTHREAD_PIDS + +AC_DEFINE_UNQUOTED([OPAL_ENABLE_MULTI_THREADS], [1], + [Whether we should enable thread support within the OPAL code base]) + +])dnl + diff --git a/config/opal_configure_options.m4 b/config/opal_configure_options.m4 new file mode 100644 index 00000000..54c2a55b --- /dev/null +++ b/config/opal_configure_options.m4 @@ -0,0 +1,543 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2006-2017 Cisco Systems, Inc. All rights reserved +dnl Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. +dnl Copyright (c) 2009 IBM Corporation. All rights reserved. +dnl Copyright (c) 2009 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl Copyright (c) 2009-2011 Oak Ridge National Labs. All rights reserved. +dnl Copyright (c) 2011-2013 NVIDIA Corporation. All rights reserved. +dnl Copyright (c) 2013-2017 Intel, Inc. All rights reserved. +dnl Copyright (c) 2015 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +AC_DEFUN([OPAL_CONFIGURE_OPTIONS],[ +opal_show_subtitle "OPAL Configuration options" + + +# +# Is this a developer copy? +# + +if test -d .git; then + OPAL_DEVEL=1 +else + OPAL_DEVEL=0 +fi + + +# +# Code coverage options +# + +AC_MSG_CHECKING([if want to run code coverage]) +AC_ARG_ENABLE(coverage, + AC_HELP_STRING([--enable-coverage], + [enable code coverage files to be generated])) +if test "$enable_coverage" = "yes"; then + if test "$enable_shared" = "yes"; then + AC_MSG_WARN([Code coverage can run only with static libraries. Please +run configure with --enable-static --disable-shared if +you want code coverage. Also ensure that you execute +make clean too ensure removal of all leftover shared +mpi libraries]) + AC_MSG_ERROR([Cannot continue processing]) + fi + AC_MSG_RESULT([yes]) + WANT_COVERAGE=1 +else + AC_MSG_RESULT([no]) + WANT_COVERAGE=0 +fi + + +# +# Branch Probabilities options +# + +AC_MSG_CHECKING([if want to compile with branch probabilities]) +AC_ARG_ENABLE(branch-probabilities, + AC_HELP_STRING([--enable-branch-probabilities], + [enable profile arcs and branch probability optimization])) +if test "$enable_branch_probabilities" = "yes"; then + AC_MSG_RESULT([yes]) + WANT_BRANCH_PROBABILITIES=1 +else + AC_MSG_RESULT([no]) + WANT_BRANCH_PROBABILITIES=0 +fi + + +# +# Memory debugging +# + +AC_MSG_CHECKING([if want to debug memory usage]) +AC_ARG_ENABLE(mem-debug, + AC_HELP_STRING([--enable-mem-debug], + [enable memory debugging (not for general MPI users!) (default: disabled)])) +if test "$enable_mem_debug" = "yes"; then + AC_MSG_RESULT([yes]) + WANT_MEM_DEBUG=1 +else + AC_MSG_RESULT([no]) + WANT_MEM_DEBUG=0 +fi +AC_DEFINE_UNQUOTED(OPAL_ENABLE_MEM_DEBUG, $WANT_MEM_DEBUG, + [Whether we want the memory profiling or not]) + +# +# Memory profiling +# + +AC_MSG_CHECKING([if want to profile memory usage]) +AC_ARG_ENABLE(mem-profile, + AC_HELP_STRING([--enable-mem-profile], + [enable memory profiling (not for general MPI users!) (default: disabled)])) +if test "$enable_mem_profile" = "yes"; then + AC_MSG_RESULT([yes]) + WANT_MEM_PROFILE=1 +else + AC_MSG_RESULT([no]) + WANT_MEM_PROFILE=0 +fi +AC_DEFINE_UNQUOTED(OPAL_ENABLE_MEM_PROFILE, $WANT_MEM_PROFILE, + [Whether we want the memory profiling or not]) + +# +# Developer picky compiler options +# + +AC_MSG_CHECKING([if want developer-level compiler pickyness]) +AC_ARG_ENABLE(picky, + AC_HELP_STRING([--enable-picky], + [enable developer-level compiler pickyness when building Open MPI (default: disabled, unless a .git directory is found in the build tree)])) +if test "$enable_picky" = "yes"; then + AC_MSG_RESULT([yes]) + WANT_PICKY_COMPILER=1 +else + AC_MSG_RESULT([no]) + WANT_PICKY_COMPILER=0 +fi +#################### Developer default override #################### +if test "$WANT_PICKY_COMPILER" = "0" && test -z "$enable_picky" && test "$OPAL_DEVEL" = 1; then + WANT_PICKY_COMPILER=1 + echo "--> developer override: enable picky compiler by default" +fi +#################### Developer default override #################### + +# +# Developer debugging +# + +AC_MSG_CHECKING([if want developer-level debugging code]) +AC_ARG_ENABLE(debug, + AC_HELP_STRING([--enable-debug], + [enable developer-level debugging code (not for general MPI users!) (default: disabled)])) +if test "$enable_debug" = "yes"; then + AC_MSG_RESULT([yes]) + WANT_DEBUG=1 +else + AC_MSG_RESULT([no]) + WANT_DEBUG=0 +fi + + +AC_MSG_CHECKING([if want to developer-level timing framework]) +AC_ARG_ENABLE(timing, + AC_HELP_STRING([--enable-timing], + [enable developer-level timing code (not for general MPI users!) (default: disabled)])) +if test "$enable_timing" = "yes"; then + AC_MSG_RESULT([yes]) + WANT_TIMING=1 +else + AC_MSG_RESULT([no]) + WANT_TIMING=0 +fi + +AC_DEFINE_UNQUOTED(OPAL_ENABLE_TIMING, $WANT_TIMING, + [Whether we want developer-level timing framework or not]) + +AM_CONDITIONAL([OPAL_COMPILE_TIMING], [test "$WANT_TIMING" = "1"]) +AM_CONDITIONAL([OPAL_INSTALL_TIMING_BINARIES], [test "$WANT_TIMING" = "1" && test "$enable_binaries" != "no"]) + +if test "$WANT_DEBUG" = "0"; then + CFLAGS="-DNDEBUG $CFLAGS" + CXXFLAGS="-DNDEBUG $CXXFLAGS" +fi +AC_DEFINE_UNQUOTED(OPAL_ENABLE_DEBUG, $WANT_DEBUG, + [Whether we want developer-level debugging code or not]) + +AC_ARG_ENABLE(debug-symbols, + AC_HELP_STRING([--disable-debug-symbols], + [Disable adding compiler flags to enable debugging symbols if --enable-debug is specified. For non-debugging builds, this flag has no effect.])) + +# +# Do we want to install all of OPAL/ORTE and OMPI's header files? +# + +AC_MSG_CHECKING([if want to install project-internal header files]) +AC_ARG_WITH(devel-headers, + AC_HELP_STRING([--with-devel-headers], + [normal MPI users/applications do not need this (mpi.h and mpif.h are ALWAYS installed). Developer headers are only necessary for MCA module authors (default: disabled).])) +if test "$with_devel_headers" = "yes"; then + AC_MSG_RESULT([yes]) + WANT_INSTALL_HEADERS=1 +else + AC_MSG_RESULT([no]) + WANT_INSTALL_HEADERS=0 +fi +AM_CONDITIONAL(WANT_INSTALL_HEADERS, test "$WANT_INSTALL_HEADERS" = 1) + + +# +# Do we want the pretty-print stack trace feature? +# + +AC_MSG_CHECKING([if want pretty-print stacktrace]) +AC_ARG_ENABLE([pretty-print-stacktrace], + [AC_HELP_STRING([--enable-pretty-print-stacktrace], + [Pretty print stacktrace on process signal (default: enabled)])]) +if test "$enable_pretty_print_stacktrace" = "no" ; then + AC_MSG_RESULT([no]) + WANT_PRETTY_PRINT_STACKTRACE=0 +else + AC_MSG_RESULT([yes]) + WANT_PRETTY_PRINT_STACKTRACE=1 +fi +AC_DEFINE_UNQUOTED([OPAL_WANT_PRETTY_PRINT_STACKTRACE], + [$WANT_PRETTY_PRINT_STACKTRACE], + [if want pretty-print stack trace feature]) + + +# +# Do we want PTY support? +# + +AC_MSG_CHECKING([if want pty support]) +AC_ARG_ENABLE(pty-support, + AC_HELP_STRING([--enable-pty-support], + [Enable/disable PTY support for STDIO forwarding. (default: enabled)])) +if test "$enable_pty_support" = "no" ; then + AC_MSG_RESULT([no]) + OPAL_ENABLE_PTY_SUPPORT=0 +else + AC_MSG_RESULT([yes]) + OPAL_ENABLE_PTY_SUPPORT=1 +fi +AC_DEFINE_UNQUOTED([OPAL_ENABLE_PTY_SUPPORT], [$OPAL_ENABLE_PTY_SUPPORT], + [Whether user wants PTY support or not]) + + +# +# Do we want to disable weak symbols for some reason? +# + +AC_MSG_CHECKING([if want weak symbol support]) +AC_ARG_ENABLE(weak-symbols, + AC_HELP_STRING([--enable-weak-symbols], + [use weak symbols, if available (default: enabled)])) +if test "$enable_weak_symbols" != "no"; then + AC_MSG_RESULT([yes]) + WANT_WEAK_SYMBOLS=1 +else + AC_MSG_RESULT([no]) + WANT_WEAK_SYMBOLS=0 +fi + + +# +# Do we want to allow DLOPEN? +# + +AC_MSG_CHECKING([if want dlopen support]) +AC_ARG_ENABLE([dlopen], + [AC_HELP_STRING([--enable-dlopen], + [Whether build should attempt to use dlopen (or + similar) to dynamically load components. + Disabling dlopen implies --disable-mca-dso. + (default: enabled)])]) +if test "$enable_dlopen" = "no" ; then + enable_mca_dso="no" + enable_mca_static="yes" + OPAL_ENABLE_DLOPEN_SUPPORT=0 + AC_MSG_RESULT([no]) +else + OPAL_ENABLE_DLOPEN_SUPPORT=1 + AC_MSG_RESULT([yes]) +fi +AC_DEFINE_UNQUOTED(OPAL_ENABLE_DLOPEN_SUPPORT, $OPAL_ENABLE_DLOPEN_SUPPORT, + [Whether we want to enable dlopen support]) + + +# +# Do we want to show component load error messages by default? +# + +AC_MSG_CHECKING([for default value of mca_base_component_show_load_errors]) +AC_ARG_ENABLE([show-load-errors-by-default], + [AC_HELP_STRING([--enable-show-load-errors-by-default], + [Set the default value for the MCA parameter + mca_base_component_show_load_errors (but can be + overridden at run time by the usual + MCA-variable-setting mechansism). This MCA variable + controls whether warnings are displayed when an MCA + component fails to load at run time due to an error. + (default: enabled, meaning that + mca_base_component_show_load_errors is enabled + by default])]) +if test "$enable_show_load_errors_by_default" = "no" ; then + OPAL_SHOW_LOAD_ERRORS_DEFAULT=0 + AC_MSG_RESULT([disabled by default]) +else + OPAL_SHOW_LOAD_ERRORS_DEFAULT=1 + AC_MSG_RESULT([enabled by default]) +fi +AC_DEFINE_UNQUOTED(OPAL_SHOW_LOAD_ERRORS_DEFAULT, $OPAL_SHOW_LOAD_ERRORS_DEFAULT, + [Default value for mca_base_component_show_load_errors MCA variable]) + + +# +# Heterogeneous support +# + +AC_MSG_CHECKING([if want heterogeneous support]) +AC_ARG_ENABLE([heterogeneous], + [AC_HELP_STRING([--enable-heterogeneous], + [Enable features required for heterogeneous + platform support (default: disabled)])]) +if test "$enable_heterogeneous" = "yes" ; then + AC_MSG_RESULT([yes]) + opal_want_heterogeneous=1 +else + AC_MSG_RESULT([no]) + opal_want_heterogeneous=0 +fi +AC_DEFINE_UNQUOTED([OPAL_ENABLE_HETEROGENEOUS_SUPPORT], + [$opal_want_heterogeneous], + [Enable features required for heterogeneous support]) + + +if test "$opal_want_heterogeneous" = 1; then + ompi_cv_c_word_size_align=yes +else + AC_CACHE_CHECK([if word-sized integers must be word-size aligned], + [ompi_cv_c_word_size_align], + [AC_LANG_PUSH(C) + AC_RUN_IFELSE([AC_LANG_PROGRAM([dnl +#include ], [[ long data[2] = {0, 0}; + long *lp; + int *ip; + ip = (int*) data; + ip++; + lp = (long*) ip; + return lp[0]; ]])], + [ompi_cv_c_word_size_align=no], + [ompi_cv_c_word_size_align=yes], + [ompi_cv_c_word_size_align=yes])]) +fi +AS_IF([test $ompi_cv_c_word_size_align = yes], [results=1], [results=0]) +AC_DEFINE_UNQUOTED([OPAL_ALIGN_WORD_SIZE_INTEGERS], [$results], + [set to 1 if word-size integers must be aligned to word-size padding to prevent bus errors]) + + +# +# Cross-compile data +# +AC_ARG_WITH([cross], + [AC_HELP_STRING([--with-cross=FILE], + [Specify configure values that can not be determined in a cross-compilation environment. See the Open MPI FAQ.])]) +if test "$with_cross" = "yes" ; then + AC_MSG_ERROR([--with-cross argument must include FILE option]) +elif test "$with_cross" = "no" ; then + AC_MSG_ERROR([--without-cross is not a valid argument]) +elif test "$with_cross" != "" ; then + if test ! -r $with_cross ; then + AC_MSG_ERROR([could not find cross-compile data file $with_cross]) + fi + + # eval into environment + OPAL_LOG_MSG([Loading cross-compile file $with_cross, with contents below]) + OPAL_LOG_FILE([$with_cross]) + . "$with_cross" +fi + +# +# Do we want to install binaries? +# +AC_ARG_ENABLE([binaries], + [AC_HELP_STRING([--enable-binaries], + [Build and install binaries required for Open MPI, such as the wrapper compilers. Useful for multi-lib installations. (default: enabled)])]) +AM_CONDITIONAL([OPAL_INSTALL_BINARIES], [test "$enable_binaries" != "no"]) + +AC_ARG_ENABLE([script-wrapper-compilers], + [AC_HELP_STRING([--enable-script-wrapper-compilers], + [Use less featured script-based wrapper compilers instead of the standard C-based wrapper compilers. This option ignores the --disable-binaries option and is mainly useful in cross-compile environments])]) + if test "$enable_script_wrapper_compilers" = "yes"; then + WANT_SCRIPT_WRAPPER_COMPILERS=1 + else + WANT_SCRIPT_WRAPPER_COMPILERS=0 + fi +AM_CONDITIONAL([OPAL_WANT_SCRIPT_WRAPPER_COMPILERS], [test "$enable_script_wrapper_compilers" = "yes"]) + +# +# Support per-user config files? +# +AC_ARG_ENABLE([per-user-config-files], + [AC_HELP_STRING([--enable-per-user-config-files], + [Disable per-user configuration files, to save disk accesses during job start-up. This is likely desirable for large jobs. Note that this can also be acheived by environment variables at run-time. (default: enabled)])]) +if test "$enable_per_user_config_files" = "no" ; then + result=0 +else + result=1 +fi +AC_DEFINE_UNQUOTED([OPAL_WANT_HOME_CONFIG_FILES], [$result], + [Enable per-user config files]) + +# +# Do we want to enable IPv6 support? +# +AC_MSG_CHECKING([if want IPv6 support]) +AC_ARG_ENABLE([ipv6], + [AC_HELP_STRING([--enable-ipv6], + [Enable IPv6 support, but only if the underlying system supports it (default: disabled)])]) +if test "$enable_ipv6" = "yes"; then + AC_MSG_RESULT([yes]) + opal_want_ipv6=1 +else + AC_MSG_RESULT([no]) + opal_want_ipv6=0 +fi +AC_DEFINE_UNQUOTED([OPAL_ENABLE_IPV6], [$opal_want_ipv6], + [Enable IPv6 support, but only if the underlying system supports it]) + + +# +# Package/brand string +# +AC_MSG_CHECKING([if want package/brand string]) +AC_ARG_WITH([package-string], + [AC_HELP_STRING([--with-package-string=STRING], + [Use a branding string throughout Open MPI])]) +if test "$with_package_string" = "" || test "$with_package_string" = "no"; then + with_package_string="Open MPI $OPAL_CONFIGURE_USER@$OPAL_CONFIGURE_HOST Distribution" +fi +AC_DEFINE_UNQUOTED([OPAL_PACKAGE_STRING], ["$with_package_string"], + [package/branding string for Open MPI]) +AC_MSG_RESULT([$with_package_string]) + +# +# Ident string +# +AC_MSG_CHECKING([if want ident string]) +AC_ARG_WITH([ident-string], + [AC_HELP_STRING([--with-ident-string=STRING], + [Embed an ident string into Open MPI object files])]) +if test "$with_ident_string" = "" || test "$with_ident_string" = "no"; then + with_ident_string="%VERSION%" +fi +# This is complicated, because $OPAL_VERSION may have spaces in it. +# So put the whole sed expr in single quotes -- i.e., directly +# substitute %VERSION% for (not expanded) $OPAL_VERSION. +with_ident_string="`echo $with_ident_string | sed -e 's/%VERSION%/$OPAL_VERSION/'`" + +# Now eval an echo of that so that the "$OPAL_VERSION" token is +# replaced with its value. Enclose the whole thing in "" so that it +# ends up as 1 token. +with_ident_string="`eval echo $with_ident_string`" + +AC_DEFINE_UNQUOTED([OPAL_IDENT_STRING], ["$with_ident_string"], + [ident string for Open MPI]) +AC_MSG_RESULT([$with_ident_string]) + + +# +# Use alternative checksum algorithm +# +AC_MSG_CHECKING([if want to use an alternative checksum algo for messages]) +AC_ARG_WITH([dst-checksum], + [AC_HELP_STRING([--with-dst-checksum], + [Use an alternative checksum algorithm for messages])]) +if test "$with_dst_checksum" = "yes"; then + AC_MSG_RESULT([yes]) + CFLAGS="-DOPAL_CSUM_DST $CFLAGS" +else + AC_MSG_RESULT([no]) +fi + + +# +# User level (mpi.h.in) visible maximum lengths of strings. +# These may be required in lower-level libraries to set up matching +# data-structures (e.g. OPAL_MAX_OBJECT_NAME). +# +# Default values (as of OMPI-1.3), and some sane minimum and maximum values +# + +# No lower and upper bound required or enforced +OPAL_WITH_OPTION_MIN_MAX_VALUE(processor_name, 256, 16, 1024) + +# Min length according to information passed in ompi/errhandler/errcode.c +OPAL_WITH_OPTION_MIN_MAX_VALUE(error_string, 256, 64, 1024) + +# Min length according to MPI-2.1, p. 236 (information passed in ompi/communicator/comm.c: min only 48) +OPAL_WITH_OPTION_MIN_MAX_VALUE(object_name, 64, 64, 256) + +# Min and Max length according to MPI-2.1, p. 287 is 32; longest key in ROMIO however 33 +OPAL_WITH_OPTION_MIN_MAX_VALUE(info_key, 36, 34, 255) + +# No lower and upper bound required or enforced! +OPAL_WITH_OPTION_MIN_MAX_VALUE(info_val, 256, 32, 1024) + +# Min length according to _POSIX_HOST_NAME_MAX=255 (4*HOST_NAME_MAX) +OPAL_WITH_OPTION_MIN_MAX_VALUE(port_name, 1024, 255, 2048) + +# Min length accroding to MPI-2.1, p. 418 +OPAL_WITH_OPTION_MIN_MAX_VALUE(datarep_string, 128, 64, 256) + +AC_DEFINE_UNQUOTED([OPAL_ENABLE_CRDEBUG], [0], + [Whether we want checkpoint/restart enabled debugging functionality or not]) + +# some systems don't want/like getpwuid +AC_MSG_CHECKING([if want getpwuid support]) +AC_ARG_ENABLE([getpwuid], + [AC_HELP_STRING([--disable-getpwuid], + [Disable getpwuid support (default: enabled)])]) +if test "$enable_getpwuid" = "no"; then + AC_MSG_RESULT([no]) + opal_want_getpwuid=0 +else + AC_MSG_RESULT([yes]) + opal_want_getpwuid=1 +fi +AC_DEFINE_UNQUOTED([OPAL_ENABLE_GETPWUID], [$opal_want_getpwuid], + [Disable getpwuid support (default: enabled)]) + +dnl We no longer support the old OPAL_ENABLE_PROGRESS_THREADS. At +dnl some point, this should die. +AC_DEFINE([OPAL_ENABLE_PROGRESS_THREADS], + [0], + [Whether we want BTL progress threads enabled]) + +dnl Check for zlib support +OPAL_ZLIB_CONFIG + + +])dnl diff --git a/config/opal_ensure_contains_optflags.m4 b/config/opal_ensure_contains_optflags.m4 new file mode 100644 index 00000000..b9d96de1 --- /dev/null +++ b/config/opal_ensure_contains_optflags.m4 @@ -0,0 +1,66 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2007 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2007-2009 Sun Microsystems, Inc. All rights reserved. +dnl Copyright (c) 2008 Cisco Systems, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +AC_DEFUN([OPAL_ENSURE_CONTAINS_OPTFLAGS],[ + +# Modularize this setup so that sub-configure.in scripts can use this +# same setup code. + +################################## +# Optimization flags +################################## + +# If the user did not specify optimization flags, add some (the value +# from $OPTFLAGS) + +co_arg="$1" +co_found=0 +for co_word in $co_arg; do + # See http://www.gnu.org/software/autoconf/manual/html_node/Quadrigraphs.html#Quadrigraphs + # for an explanation of @<:@ and @:>@ -- they m4 expand to [ and ] + case $co_word in + -g) co_found=1 ;; + -g@<:@1-3@:>@) co_found=1 ;; + +K@<:@0-5@:>@) co_found=1 ;; + -O) co_found=1 ;; + -O@<:@0-9@:>@) co_found=1 ;; + -xO) co_found=1 ;; + -xO@<:@0-9@:>@) co_found=1 ;; + -fast) co_found=1 ;; + + # The below Sun Studio flags require or + # trigger -xO optimization + -xvector*) co_found=1 ;; + -xdepend=yes) co_found=1 ;; + + esac +done + +if test "$co_found" = "0"; then + co_result="$OPTFLAGS $co_arg" +else + co_result="$co_arg" +fi + +# Clean up + +unset co_found co_word co_arg +]) diff --git a/config/opal_find_type.m4 b/config/opal_find_type.m4 new file mode 100644 index 00000000..bc98dd68 --- /dev/null +++ b/config/opal_find_type.m4 @@ -0,0 +1,56 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2010 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2014 Intel, Inc. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +# OPAL_FIND_TYPE(type, [list of c types], abort if not found, +# target size, variable to set) +# ----------------------------------------------------------- +AC_DEFUN([OPAL_FIND_TYPE],[ + AS_VAR_PUSHDEF([type_var], [opal_cv_find_type_$1]) + + oft_abort_on_fail="$3" + oft_target_size="$4" + + AC_CACHE_CHECK([for C type corresponding to $1], type_var, + [ # Loop over all the types handed to us + oft_real_type= + AS_IF([test "$oft_target_size" != ""], + [m4_foreach(oft_type, [$2], + [if test -z "$oft_real_type"; then + if test "[$ac_cv_sizeof_]m4_bpatsubst(oft_type, [[^a-zA-Z0-9_]], [_])" = "$oft_target_size" ; then + oft_real_type="oft_type" + fi + fi +])]) + AS_IF([test -z "$oft_real_type"], + [AS_VAR_SET(type_var, "not found")], + [AS_VAR_SET(type_var, "$oft_real_type")])]) + + AS_VAR_IF(type_var, ["not found"], + [AC_MSG_WARN([*** Did not find corresponding C type]) + AS_IF([test "$oft_abort_on_fail" != "no"], + [AC_MSG_ERROR([Cannot continue])])]) + + AS_VAR_IF(type_var, ["not found"], [$5=], [AS_VAR_COPY([$5], [type_var])]) + + unset oft_real_type oft_target_size + + AS_VAR_POPDEF([type_var])dnl +])dnl diff --git a/config/opal_functions.m4 b/config/opal_functions.m4 new file mode 100644 index 00000000..62c8c610 --- /dev/null +++ b/config/opal_functions.m4 @@ -0,0 +1,661 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. +dnl Copyright (c) 2009 Oak Ridge National Labs. All rights reserved. +dnl Copyright (c) 2009-2015 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2014 Intel, Inc. All rights reserved. +dnl Copyright (c) 2015-2016 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl +dnl Portions of this file derived from GASNet v1.12 (see "GASNet" +dnl comments, below) +dnl Copyright 2004, Dan Bonachea +dnl +dnl IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR +dnl DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT +dnl OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF +dnl CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +dnl +dnl THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, +dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +dnl AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS +dnl ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO +dnl PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +dnl + +AC_DEFUN([OPAL_CONFIGURE_SETUP],[ + +# Some helper script functions. Unfortunately, we cannot use $1 kinds +# of arugments here because of the m4 substitution. So we have to set +# special variable names before invoking the function. :-\ + +opal_show_title() { + cat <@:*) + echo installing to directory \"$prefix\" + ;; + *) + AC_MSG_ERROR(prefix "$prefix" must be an absolute directory path) + ;; +esac + +# BEGIN: Derived from GASNet + +# Suggestion from Paul Hargrove to disable --program-prefix and +# friends. Heavily influenced by GASNet 1.12 acinclude.m4 +# functionality to do the same thing (copyright listed at top of this +# file). + +# echo program_prefix=$program_prefix program_suffix=$program_suffix program_transform_name=$program_transform_name +# undo prefix autoconf automatically adds during cross-compilation +if test "$cross_compiling" = yes && test "$program_prefix" = "${target_alias}-" ; then + program_prefix=NONE +fi +# normalize empty prefix/suffix +if test -z "$program_prefix" ; then + program_prefix=NONE +fi +if test -z "$program_suffix" ; then + program_suffix=NONE +fi +# undo transforms caused by empty prefix/suffix +if expr "$program_transform_name" : 's.^..$' >/dev/null || \ + expr "$program_transform_name" : 's.$$..$' >/dev/null || \ + expr "$program_transform_name" : 's.$$..;s.^..$' >/dev/null ; then + program_transform_name="s,x,x," +fi +if test "$program_prefix$program_suffix$program_transform_name" != "NONENONEs,x,x," ; then + AC_MSG_WARN([*** The Open MPI configure script does not support --program-prefix, --program-suffix or --program-transform-name. Users are recommended to instead use --prefix with a unique directory and make symbolic links as desired for renaming.]) + AC_MSG_ERROR([*** Cannot continue]) +fi + +# END: Derived from GASNet +])dnl + +dnl ####################################################################### +dnl ####################################################################### +dnl ####################################################################### + +AC_DEFUN([OPAL_LOG_MSG],[ +# 1 is the message +# 2 is whether to put a prefix or not +if test -n "$2"; then + echo "configure:__oline__: $1" >&5 +else + echo $1 >&5 +fi])dnl + +dnl ####################################################################### +dnl ####################################################################### +dnl ####################################################################### + +AC_DEFUN([OPAL_LOG_FILE],[ +# 1 is the filename +if test -n "$1" && test -f "$1"; then + cat $1 >&5 +fi])dnl + +dnl ####################################################################### +dnl ####################################################################### +dnl ####################################################################### + +AC_DEFUN([OPAL_LOG_COMMAND],[ +# 1 is the command +# 2 is actions to do if success +# 3 is actions to do if fail +echo "configure:__oline__: $1" >&5 +$1 1>&5 2>&1 +opal_status=$? +OPAL_LOG_MSG([\$? = $opal_status], 1) +if test "$opal_status" = "0"; then + unset opal_status + $2 +else + unset opal_status + $3 +fi])dnl + +dnl ####################################################################### +dnl ####################################################################### +dnl ####################################################################### + +AC_DEFUN([OPAL_UNIQ],[ +# 1 is the variable name to be uniq-ized +opal_name=$1 + +# Go through each item in the variable and only keep the unique ones + +opal_count=0 +for val in ${$1}; do + opal_done=0 + opal_i=1 + opal_found=0 + + # Loop over every token we've seen so far + + opal_done="`expr $opal_i \> $opal_count`" + while test "$opal_found" = "0" && test "$opal_done" = "0"; do + + # Have we seen this token already? Prefix the comparison with + # "x" so that "-Lfoo" values won't be cause an error. + + opal_eval="expr x$val = x\$opal_array_$opal_i" + opal_found=`eval $opal_eval` + + # Check the ending condition + + opal_done="`expr $opal_i \>= $opal_count`" + + # Increment the counter + + opal_i="`expr $opal_i + 1`" + done + + # If we didn't find the token, add it to the "array" + + if test "$opal_found" = "0"; then + opal_eval="opal_array_$opal_i=$val" + eval $opal_eval + opal_count="`expr $opal_count + 1`" + else + opal_i="`expr $opal_i - 1`" + fi +done + +# Take all the items in the "array" and assemble them back into a +# single variable + +opal_i=1 +opal_done="`expr $opal_i \> $opal_count`" +opal_newval= +while test "$opal_done" = "0"; do + opal_eval="opal_newval=\"$opal_newval \$opal_array_$opal_i\"" + eval $opal_eval + + opal_eval="unset opal_array_$opal_i" + eval $opal_eval + + opal_done="`expr $opal_i \>= $opal_count`" + opal_i="`expr $opal_i + 1`" +done + +# Done; do the assignment + +opal_newval="`echo $opal_newval`" +opal_eval="$opal_name=\"$opal_newval\"" +eval $opal_eval + +# Clean up + +unset opal_name opal_i opal_done opal_newval opal_eval opal_count])dnl + +dnl ####################################################################### +dnl ####################################################################### +dnl ####################################################################### + +# OPAL_APPEND_UNIQ(variable, new_argument) +# ---------------------------------------- +# Append new_argument to variable if not already in variable. This assumes a +# space seperated list. +# +# This could probably be made more efficient :(. +AC_DEFUN([OPAL_APPEND_UNIQ], [ +for arg in $2; do + opal_found=0; + for val in ${$1}; do + if test "x$val" = "x$arg" ; then + opal_found=1 + break + fi + done + if test "$opal_found" = "0" ; then + if test -z "$$1"; then + $1="$arg" + else + $1="$$1 $arg" + fi + fi +done +unset opal_found +]) + +dnl ####################################################################### +dnl ####################################################################### +dnl ####################################################################### + +# Remove all duplicate -I, -L, and -l flags from the variable named $1 +AC_DEFUN([OPAL_FLAGS_UNIQ],[ + # 1 is the variable name to be uniq-ized + opal_name=$1 + + # Go through each item in the variable and only keep the unique ones + + opal_count=0 + for val in ${$1}; do + opal_done=0 + opal_i=1 + opal_found=0 + + # Loop over every token we've seen so far + + opal_done="`expr $opal_i \> $opal_count`" + while test "$opal_found" = "0" && test "$opal_done" = "0"; do + + # Have we seen this token already? Prefix the comparison + # with "x" so that "-Lfoo" values won't be cause an error. + + opal_eval="expr x$val = x\$opal_array_$opal_i" + opal_found=`eval $opal_eval` + + # Check the ending condition + + opal_done="`expr $opal_i \>= $opal_count`" + + # Increment the counter + + opal_i="`expr $opal_i + 1`" + done + + # Check for special cases where we do want to allow repeated + # arguments (per + # http://www.open-mpi.org/community/lists/devel/2012/08/11362.php + # and + # https://github.com/open-mpi/ompi/issues/324). + + case $val in + -Xclang) + opal_found=0 + opal_i=`expr $opal_count + 1` + ;; + -framework) + opal_found=0 + opal_i=`expr $opal_count + 1` + ;; + --param) + opal_found=0 + opal_i=`expr $opal_count + 1` + ;; + esac + + # If we didn't find the token, add it to the "array" + + if test "$opal_found" = "0"; then + opal_eval="opal_array_$opal_i=$val" + eval $opal_eval + opal_count="`expr $opal_count + 1`" + else + opal_i="`expr $opal_i - 1`" + fi + done + + # Take all the items in the "array" and assemble them back into a + # single variable + + opal_i=1 + opal_done="`expr $opal_i \> $opal_count`" + opal_newval= + while test "$opal_done" = "0"; do + opal_eval="opal_newval=\"$opal_newval \$opal_array_$opal_i\"" + eval $opal_eval + + opal_eval="unset opal_array_$opal_i" + eval $opal_eval + + opal_done="`expr $opal_i \>= $opal_count`" + opal_i="`expr $opal_i + 1`" + done + + # Done; do the assignment + + opal_newval="`echo $opal_newval`" + opal_eval="$opal_name=\"$opal_newval\"" + eval $opal_eval + + # Clean up + + unset opal_name opal_i opal_done opal_newval opal_eval opal_count +])dnl + +dnl ####################################################################### +dnl ####################################################################### +dnl ####################################################################### + +# OPAL_FLAGS_APPEND_UNIQ(variable, new_argument) +# ---------------------------------------------- +# Append new_argument to variable if: +# +# - the argument does not begin with -I, -L, or -l, or +# - the argument begins with -I, -L, or -l, and it's not already in variable +# +# This macro assumes a space seperated list. +AC_DEFUN([OPAL_FLAGS_APPEND_UNIQ], [ + OPAL_VAR_SCOPE_PUSH([opal_tmp opal_append]) + + for arg in $2; do + opal_tmp=`echo $arg | cut -c1-2` + opal_append=1 + AS_IF([test "$opal_tmp" = "-I" || test "$opal_tmp" = "-L" || test "$opal_tmp" = "-l"], + [for val in ${$1}; do + AS_IF([test "x$val" = "x$arg"], [opal_append=0]) + done]) + AS_IF([test "$opal_append" = "1"], + [AS_IF([test -z "$$1"], [$1=$arg], [$1="$$1 $arg"])]) + done + + OPAL_VAR_SCOPE_POP +]) + +dnl ####################################################################### +dnl ####################################################################### +dnl ####################################################################### + +# Macro that serves as an alternative to using `which `. It is +# preferable to simply using `which ` because backticks (`) (aka +# backquotes) invoke a sub-shell which may source a "noisy" +# ~/.whatever file (and we do not want the error messages to be part +# of the assignment in foo=`which `). This macro ensures that we +# get a sane executable value. +AC_DEFUN([OPAL_WHICH],[ +# 1 is the variable name to do "which" on +# 2 is the variable name to assign the return value to + +OPAL_VAR_SCOPE_PUSH([opal_prog opal_file opal_dir opal_sentinel]) + +opal_prog=$1 + +IFS_SAVE=$IFS +IFS="$PATH_SEPARATOR" +for opal_dir in $PATH; do + if test -x "$opal_dir/$opal_prog"; then + $2="$opal_dir/$opal_prog" + break + fi +done +IFS=$IFS_SAVE + +OPAL_VAR_SCOPE_POP +])dnl + +dnl ####################################################################### +dnl ####################################################################### +dnl ####################################################################### + +# Declare some variables; use OPAL_VAR_SCOPE_END to ensure that they +# are cleaned up / undefined. +AC_DEFUN([OPAL_VAR_SCOPE_PUSH],[ + + # Is the private index set? If not, set it. + if test "x$opal_scope_index" = "x"; then + opal_scope_index=1 + fi + + # First, check to see if any of these variables are already set. + # This is a simple sanity check to ensure we're not already + # overwriting pre-existing variables (that have a non-empty + # value). It's not a perfect check, but at least it's something. + for opal_var in $1; do + opal_str="opal_str=\"\$$opal_var\"" + eval $opal_str + + if test "x$opal_str" != "x"; then + AC_MSG_WARN([Found configure shell variable clash!]) + AC_MSG_WARN([[OPAL_VAR_SCOPE_PUSH] called on "$opal_var",]) + AC_MSG_WARN([but it is already defined with value "$opal_str"]) + AC_MSG_WARN([This usually indicates an error in configure.]) + AC_MSG_ERROR([Cannot continue]) + fi + done + + # Ok, we passed the simple sanity check. Save all these names so + # that we can unset them at the end of the scope. + opal_str="opal_scope_$opal_scope_index=\"$1\"" + eval $opal_str + unset opal_str + + env | grep opal_scope + opal_scope_index=`expr $opal_scope_index + 1` +])dnl + +# Unset a bunch of variables that were previously set +AC_DEFUN([OPAL_VAR_SCOPE_POP],[ + # Unwind the index + opal_scope_index=`expr $opal_scope_index - 1` + opal_scope_test=`expr $opal_scope_index \> 0` + if test "$opal_scope_test" = "0"; then + AC_MSG_WARN([[OPAL_VAR_SCOPE_POP] popped too many OPAL configure scopes.]) + AC_MSG_WARN([This usually indicates an error in configure.]) + AC_MSG_ERROR([Cannot continue]) + fi + + # Get the variable names from that index + opal_str="opal_str=\"\$opal_scope_$opal_scope_index\"" + eval $opal_str + + # Iterate over all the variables and unset them all + for opal_var in $opal_str; do + unset $opal_var + done +])dnl + + +dnl ####################################################################### +dnl ####################################################################### +dnl ####################################################################### + +# +# OPAL_WITH_OPTION_MIN_MAX_VALUE(NAME,DEFAULT_VALUE,LOWER_BOUND,UPPER_BOUND) +# Defines a variable OPAL_MAX_xxx, with "xxx" being specified as parameter $1 as "variable_name". +# If not set at configure-time using --with-max-xxx, the default-value ($2) is assumed. +# If set, value is checked against lower (value >= $3) and upper bound (value <= $4) +# +AC_DEFUN([OPAL_WITH_OPTION_MIN_MAX_VALUE], [ + max_value=[$2] + AC_MSG_CHECKING([maximum length of ]m4_translit($1, [_], [ ])) + AC_ARG_WITH([max-]m4_translit($1, [_], [-]), + AC_HELP_STRING([--with-max-]m4_translit($1, [_], [-])[=VALUE], + [maximum length of ]m4_translit($1, [_], [ ])[s. VALUE argument has to be specified (default: [$2]).])) + if test ! -z "$with_max_[$1]" && test "$with_max_[$1]" != "no" ; then + # Ensure it's a number (hopefully an integer!), and >0 + expr $with_max_[$1] + 1 > /dev/null 2> /dev/null + AS_IF([test "$?" != "0"], [happy=0], + [AS_IF([test $with_max_[$1] -ge $3 && test $with_max_[$1] -le $4], + [happy=1], [happy=0])]) + + # If badness in the above tests, bail + AS_IF([test "$happy" = "0"], + [AC_MSG_RESULT([bad value ($with_max_[$1])]) + AC_MSG_WARN([--with-max-]m4_translit($1, [_], [-])[s value must be >= $3 and <= $4]) + AC_MSG_ERROR([Cannot continue])]) + max_value=$with_max_[$1] + fi + AC_MSG_RESULT([$max_value]) + AC_DEFINE_UNQUOTED([OPAL_MAX_]m4_toupper($1), $max_value, + [Maximum length of ]m4_translit($1, [_], [ ])[s (default is $2)]) + [OPAL_MAX_]m4_toupper($1)=$max_value + AC_SUBST([OPAL_MAX_]m4_toupper($1)) +])dnl + +dnl ####################################################################### +dnl ####################################################################### +dnl ####################################################################### + +# Usage: OPAL_COMPUTE_MAX_VALUE(number_bytes, variable_to_set, action if overflow) +# Compute maximum value of datatype of +# number_bytes, setting the result in the second argument. Assumes a +# signed datatype. +AC_DEFUN([OPAL_COMPUTE_MAX_VALUE], [ + # This is more complicated than it really should be. But some + # expr implementations (OpenBSD) have an expr with a max value of + # 2^31 - 1, and we sometimes want to compute the max value of a + # type as big or bigger than that... + opal_num_bits=`expr $1 \* 8 - 1` + newval=1 + value=1 + overflow=0 + + while test $opal_num_bits -ne 0 ; do + newval=`expr $value \* 2` + if test 0 -eq `expr $newval \< 0` ; then + # if the new value is not negative, next iteration... + value=$newval + opal_num_bits=`expr $opal_num_bits - 1` + # if this was the last iteration, subtract 1 (as signed + # max positive is 2^num_bits - 1). Do this here instead + # of outside of the while loop because we might have + # already subtracted 1 by then if we're trying to find the + # max value of the same datatype expr uses as it's + # internal representation (ie, if we hit the else + # below...) + if test 0 -eq $opal_num_bits ; then + value=`expr $value - 1` + fi + else + # if the new value is negative, we've over flowed. First, + # try adding value - 1 instead of value (see if we can get + # to positive max of expr) + newval=`expr $value - 1 + $value` + if test 0 -eq `expr $newval \< 0` ; then + value=$newval + # Still positive, this is as high as we can go. If + # opal_num_bits is 1, we didn't actually overflow. + # Otherwise, we overflowed. + if test 1 -ne $opal_num_bits ; then + overflow=1 + fi + else + # stil negative. Time to give up. + overflow=1 + fi + opal_num_bits=0 + fi + done + + AS_VAR_SET([$2], [$value]) + AS_IF([test $overflow -ne 0], [$3]) +])dnl diff --git a/config/opal_get_version.m4 b/config/opal_get_version.m4 new file mode 100644 index 00000000..d8648a3a --- /dev/null +++ b/config/opal_get_version.m4 @@ -0,0 +1,101 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2008-2014 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2014 Intel, Inc. All rights reserved. +dnl Copyright (c) 2014 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +dnl +dnl This file is also used as input to opal_get_version.sh. +dnl + +# OPAL_GET_VERSION(version_file, variable_prefix) +# ----------------------------------------------- +# parse version_file for version information, setting +# the following shell variables: +# +# prefix_VERSION +# prefix_BASE_VERSION +# prefix_MAJOR_VERSION +# prefix_MINOR_VERSION +# prefix_RELEASE_VERSION +# prefix_GREEK_VERSION +# prefix_REPO_REV +# prefix_TARBALL_VERSION +# prefix_RELEASE_DATE +m4_define([OPAL_GET_VERSION],[ + dnl quote eval to suppress macro expansion with non-GNU m4 + if test -f "$1"; then + srcdir=`dirname $1` + opal_vers=`sed -n " + t clear + : clear + s/^major/$2_MAJOR_VERSION/ + s/^minor/$2_MINOR_VERSION/ + s/^release/$2_RELEASE_VERSION/ + s/^greek/$2_GREEK_VERSION/ + s/^repo_rev/$2_REPO_REV/ + s/^tarball_version/$2_TARBALL_VERSION/ + s/^date/$2_RELEASE_DATE/ + t print + b + : print + p" < "$1"` + [eval] "$opal_vers" + + $2_VERSION="$$2_MAJOR_VERSION.$$2_MINOR_VERSION.$$2_RELEASE_VERSION" + $2_VERSION="${$2_VERSION}${$2_GREEK_VERSION}" + + if test "$$2_TARBALL_VERSION" = ""; then + $2_TARBALL_VERSION=$$2_VERSION + fi + + m4_ifdef([AC_MSG_CHECKING], + [AC_MSG_CHECKING([for repo version])]) + + # If repo_rev was not set in the VERSION file, then get it now + if test "$$2_REPO_REV" = ""; then + # See if we can find the "git" command. + git_happy=0 + git --version > /dev/null 2>&1 + if test $? -eq 0; then + git_happy=1 + fi + + # If we're in a git repo and we found the git command, use + # git describe to get the repo rev + if test -d "$srcdir/.git" && test $git_happy -eq 1; then + if test "$srcdir" != "`pwd`"; then + git_save_dir=`pwd` + cd $srcdir + $2_REPO_REV=`git describe --tags --always` + cd $git_save_dir + unset git_save_dir + else + $2_REPO_REV=`git describe --tags --always` + fi + else + $2_REPO_REV="date`date '+%Y-%m-%d'`" + fi + fi + + m4_ifdef([AC_MSG_RESULT], + [AC_MSG_RESULT([$$2_REPO_REV])]) + fi +]) diff --git a/config/opal_get_version.m4sh b/config/opal_get_version.m4sh new file mode 100644 index 00000000..d9d45d97 --- /dev/null +++ b/config/opal_get_version.m4sh @@ -0,0 +1,93 @@ +m4_define([_m4_divert(SCRIPT)], 100) +m4_divert_push([SCRIPT])dnl +#!/bin/sh +# +# opal_get_version is created from opal_get_version.m4 and opal_get_version.m4sh. +# +# Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2008-2015 Cisco Systems, Inc. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +m4_include([opal_get_version.m4]) + +srcfile="$1" +option="$2" + +if test -z "$srcfile"; then + option="--help" +else + OPAL_GET_VERSION([$srcfile],[OPAL]) + + if test "$option" = ""; then + option="--full" + fi +fi + +case "$option" in + --full|-v|--version) + echo $OPAL_VERSION + ;; + --major) + echo $OPAL_MAJOR_VERSION + ;; + --minor) + echo $OPAL_MINOR_VERSION + ;; + --release) + echo $OPAL_RELEASE_VERSION + ;; + --greek) + echo $OPAL_GREEK_VERSION + ;; + --repo-rev) + echo $OPAL_REPO_REV + ;; + --tarball) + echo $OPAL_TARBALL_VERSION + ;; + --release-date) + echo $OPAL_RELEASE_DATE + ;; + --all) + echo ${OPAL_VERSION} : ${OPAL_MAJOR_VERSION} : ${OPAL_MINOR_VERSION} : ${OPAL_RELEASE_VERSION} : ${OPAL_GREEK_VERSION} : ${OPAL_REPO_REV} : ${OPAL_TARBALL_VERSION} + ;; + -h|--help) + cat < [