diff --git a/.gitignore b/.gitignore index 24b4333af5a4c5e73c10ec7a0b4c201a5cc98e42..dbf40a5ae6a598f12373d0112dfa52990b0a6377 100644 --- a/.gitignore +++ b/.gitignore @@ -1,593 +1,591 @@ -.libs -.deps -.libs -.dirstamp -.DS_Store -.cdt* -.project -.gdb* -.idea - -*.la -*.lo -*.o -*.so -*.a -*.dwarf -*.dSYM -*.S -*.loT -*.orig -*.rej -*.bak -*.class -*.xcscheme -*.out -*.plist -*.orig -*.obj -*.mod -*.i90 -*.ii -*.ti -*.exe -*.log -*.trs -*.sapp -*~ -*\\# - -Makefile -Makefile.in - -# hwloc and pmix have been de-modularized, but still uses parts of the -# MCA system due to the amount of glue code that ended up in the -# framework base. Until that is cleaned up, do not ignore the -# hard-coded static-components.h file. -static-components.h -!opal/mca/hwloc/base/static-components.h -!opal/mca/pmix/base/static-components.h - -*\\# -config.cache -aclocal.m4 -autom4te.cache -config.log -config.status -configure -libtool -doxygen -bin -lib -cscope.* -etags -GRTAGS -GSYMS -GTAGS -GPATH -vc70.pdb -.hgrc -.hgignore -.hg -.hgignore_local -stamp-h? -AUTHORS - -ar-lib -ylwrap -config.lt -config.guess -config.sub -depcomp -compile -install-sh -ltmain.sh -missing -mkinstalldirs -libtool.m4 -lt~obsolete.m4 -ltdl.m4 -argz.m4 -ltargz.m4 -ltsugar.m4 -ltversion.m4 -ltoptions.m4 - -# Libevent and hwloc are included as a tarball. Ignore any expanded -# tarballs, since they are not included in git. Do not ignore the -# tarballs themselves, and those are artifacts we will store in git. -3rd-party/libevent-* -!3rd-party/libevent-*.tar.* -3rd-party/hwloc-* -!3rd-party/hwloc-*.tar.* -3rd-party/treematch/config.h - -3rd-party/romio341/adio/include/romioconf.h -3rd-party/romio341/adio/include/romioconf.h.in -3rd-party/romio341/include/mpio.h -3rd-party/romio341/localdefs -3rd-party/romio341/mpl/confdb/test-driver -3rd-party/romio341/mpl/include/config.h -3rd-party/romio341/mpl/include/config.h.in -3rd-party/romio341/mpl/include/mplconfig.h -3rd-party/romio341/mpl/include/mpl_timer.h -3rd-party/romio341/mpl/localdefs -3rd-party/romio341/test/runtests -3rd-party/romio341/test/fcoll_test.f -3rd-party/romio341/test/fmisc.f -3rd-party/romio341/test/fperf.f -3rd-party/romio341/test/large_file.c -3rd-party/romio341/test/misc.c -3rd-party/romio341/test/pfcoll_test.f -3rd-party/romio341/util/romioinstall - -config/project_list.m4 -config/autogen_found_items.m4 -config/opal_get_version.sh -config/test-driver -config/mca_no_configure_components.m4 -config/mca_m4_config_include.m4 -config/ext_no_configure_components.m4 -config/ext_m4_config_include.m4 -config/auto-extracted-pmix-configure-args.m4 -config/auto-extracted-prrte-configure-args.m4 -config/auto-generated-ompi-exclude.ini - -contrib/build-mca-comps-outside-of-tree/btl_tcp2_config.h -contrib/build-mca-comps-outside-of-tree/btl_tcp2_config.h.in -contrib/build-mca-comps-outside-of-tree/config -contrib/build-mca-comps-outside-of-tree/aclocal.m4 -contrib/dist/linux/compile_debian_mlnx_example -contrib/dist/mofed/compile_debian_mlnx_example -contrib/dist/mofed/debian/changelog -contrib/dist/mofed/debian/control -contrib/dist/mofed/debian/copyright -contrib/dist/mofed/debian/rules -contrib/platform/intel/bend/*orcm* -contrib/scaling/orte_no_op -contrib/scaling/mpi_no_op -contrib/scaling/mpi_barrier -contrib/scaling/mpi_memprobe - -examples/hello_c -examples/hello_cxx -examples/hello_mpifh -examples/hello_usempi -examples/hello_usempif08 -examples/ring_c -examples/ring_cxx -examples/ring_mpifh -examples/ring_usempi -examples/ring_usempif08 -examples/connectivity_c -examples/ring_oshmem -examples/hello_oshmem -examples/ring_oshmemfh -examples/hello_oshmemfh -examples/hello_oshmemcxx -examples/oshmem_circular_shift -examples/oshmem_max_reduction -examples/oshmem_shmalloc -examples/oshmem_strided_puts -examples/oshmem_symmetric_data -examples/spc_example - -ompi/debuggers/*.in -ompi/debuggers/dlopen_test -ompi/debuggers/predefined_gap_test -ompi/debuggers/predefined_pad_test - -ompi/include/mpi.h -ompi/include/mpif-config.h -ompi/include/mpif.h -ompi/include/mpif-c-constants-decl.h -ompi/include/mpif-c-constants.h -ompi/include/mpif-common.h -ompi/include/mpi-ext.h -ompi/include/mpif-ext.h -ompi/include/mpif-f08-types.h -ompi/include/mpif-handles.h -ompi/include/mpif-io-constants.h -ompi/include/mpif-constants.h -ompi/include/mpif-io-handles.h -ompi/include/mpif-sizeof.h -ompi/include/mpi_portable_platform.h -ompi/include/ompi/version.h -ompi/include/ompi/frameworks.h - -ompi/mca/coll/basic/coll-basic-version.h* -ompi/mca/coll/demo/config -ompi/mca/coll/demo/coll_demo_config.h* -ompi/mca/coll/demo/coll-demo-version.h* -ompi/mca/coll/ml/coll_ml_lex.c -ompi/mca/coll/self/coll-self-version.h* -ompi/mca/coll/sm/coll-sm-version.h* - -ompi/mca/osc/monitoring/osc_monitoring_template_gen.h - -ompi/mca/pml/v/autogen.vprotocols -ompi/mca/pml/v/mca_vprotocol_config_output - -ompi/mca/sharedfp/addproc/mca_sharedfp_addproc_control - -ompi/mca/topo/treematch/config.h - -ompi/mpi/c/profile/p*.c - -ompi/mpi/fortran/configure-fortran-output.h -ompi/mpi/fortran/mpiext/mpi-ext-module.F90 -ompi/mpi/fortran/mpiext/mpi-f08-ext-module.F90 -ompi/mpi/fortran/mpiext-use-mpi/mpi-ext-module.F90 -ompi/mpi/fortran/mpiext-use-mpi-f08/mpi-f08-ext-module.F90 - -ompi/mpi/fortran/mpif-h/sizeof_f.f90 -ompi/mpi/fortran/mpif-h/profile/p*.c -ompi/mpi/fortran/mpif-h/profile/psizeof_f.f90 - -ompi/mpi/fortran/use-mpi/mpi-types.F90 - -ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-constants.h -ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-interfaces.h -ompi/mpi/fortran/use-mpi-f08/sizeof_f08.f90 -ompi/mpi/fortran/use-mpi-f08/sizeof_f08.h -ompi/mpi/fortran/use-mpi-f08/profile/psizeof_f08.f90 -ompi/mpi/fortran/use-mpi-f08/profile/*.F90 - -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-ignore-tkr/mpi-ignore-tkr-sizeof.f90 -ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-sizeof.h -ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-removed-interfaces.h - -ompi/mpi/fortran/use-mpi-tkr/fortran_kinds.sh -ompi/mpi/fortran/use-mpi-tkr/fortran_sizes.h -ompi/mpi/fortran/use-mpi-tkr/mpi_kinds.ompi_module -ompi/mpi/fortran/use-mpi-tkr/mpi-tkr-sizeof.f90 -ompi/mpi/fortran/use-mpi-tkr/mpi-tkr-sizeof.h - -ompi/mpi/java/java/mpi -ompi/mpi/java/java/*.jar -ompi/mpi/java/java/*.h -ompi/mpi/java/java/doc - -ompi/mpi/tool/profile/*.c - -ompi/mpiext/affinity/c/example - -ompi/mpiext/ftmpi/c/profile/pcomm_agree.c -ompi/mpiext/ftmpi/c/profile/pcomm_failure_ack.c -ompi/mpiext/ftmpi/c/profile/pcomm_failure_get_acked.c -ompi/mpiext/ftmpi/c/profile/pcomm_iagree.c -ompi/mpiext/ftmpi/c/profile/pcomm_is_revoked.c -ompi/mpiext/ftmpi/c/profile/pcomm_revoke.c -ompi/mpiext/ftmpi/c/profile/pcomm_shrink.c -ompi/mpiext/ftmpi/c/profile/pcomm_ack_failed.c -ompi/mpiext/ftmpi/c/profile/pcomm_get_failed.c -ompi/mpiext/ftmpi/c/profile/pcomm_ishrink.c - -ompi/mpiext/example/tests/progress_c -ompi/mpiext/example/tests/progress_mpifh -ompi/mpiext/example/tests/progress_usempi -ompi/mpiext/example/tests/progress_usempif08 - -ompi/mpiext/cuda/c/mpiext_cuda_c.h -ompi/mpiext/cuda/c/cuda_c.h -ompi/mpiext/rocm/c/mpiext_rocm_c.h - -ompi/mpiext/pcollreq/c/MPIX_*.3 -ompi/mpiext/pcollreq/c/profile/pallgather_init.c -ompi/mpiext/pcollreq/c/profile/pallgatherv_init.c -ompi/mpiext/pcollreq/c/profile/pallreduce_init.c -ompi/mpiext/pcollreq/c/profile/palltoall_init.c -ompi/mpiext/pcollreq/c/profile/palltoallv_init.c -ompi/mpiext/pcollreq/c/profile/palltoallw_init.c -ompi/mpiext/pcollreq/c/profile/pbarrier_init.c -ompi/mpiext/pcollreq/c/profile/pbcast_init.c -ompi/mpiext/pcollreq/c/profile/pexscan_init.c -ompi/mpiext/pcollreq/c/profile/pgather_init.c -ompi/mpiext/pcollreq/c/profile/pgatherv_init.c -ompi/mpiext/pcollreq/c/profile/pmpiext_pcollreq_c.h -ompi/mpiext/pcollreq/c/profile/pneighbor_allgather_init.c -ompi/mpiext/pcollreq/c/profile/pneighbor_allgatherv_init.c -ompi/mpiext/pcollreq/c/profile/pneighbor_alltoall_init.c -ompi/mpiext/pcollreq/c/profile/pneighbor_alltoallv_init.c -ompi/mpiext/pcollreq/c/profile/pneighbor_alltoallw_init.c -ompi/mpiext/pcollreq/c/profile/preduce_init.c -ompi/mpiext/pcollreq/c/profile/preduce_scatter_block_init.c -ompi/mpiext/pcollreq/c/profile/preduce_scatter_init.c -ompi/mpiext/pcollreq/c/profile/pscan_init.c -ompi/mpiext/pcollreq/c/profile/pscatter_init.c -ompi/mpiext/pcollreq/c/profile/pscatterv_init.c -ompi/mpiext/pcollreq/c/profile/ppcollreq_c.h - -ompi/mpiext/pcollreq/mpif-h/profile/pallgather_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pallgatherv_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pallreduce_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/palltoall_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/palltoallv_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/palltoallw_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pbarrier_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pbcast_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pexscan_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pgather_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pgatherv_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_allgather_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_allgatherv_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_alltoall_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_alltoallv_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_alltoallw_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/preduce_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/preduce_scatter_block_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/preduce_scatter_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pscan_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pscatter_init_f.c -ompi/mpiext/pcollreq/mpif-h/profile/pscatterv_init_f.c - -ompi/mpiext/shortfloat/c/mpiext_shortfloat_c.h -ompi/mpiext/shortfloat/mpif-h/mpiext_shortfloat_mpifh.h -ompi/mpiext/shortfloat/use-mpi-f08/mpiext_shortfloat_usempif08.h - -ompi/tools/mpisync/mpisync -ompi/tools/mpisync/mpirun_prof -ompi/tools/mpisync/ompi_timing_post -ompi/tools/mpirun/mpirun - -ompi/tools/ompi_info/ompi_info - -ompi/tools/wrappers/mpic++-wrapper-data.txt -ompi/tools/wrappers/mpicc-wrapper-data.txt -ompi/tools/wrappers/mpifort-wrapper-data.txt -ompi/tools/wrappers/ompi_wrapper_script -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/wrappers/mpicxx-wrapper-data.txt -ompi/tools/wrappers/mpif77-wrapper-data.txt -ompi/tools/wrappers/mpif90-wrapper-data.txt - -opal/asm/atomic-asm.S -opal/asm/atomic-test -opal/asm/generated/atomic-*.s - -opal/include/opal_config.h -opal/include/opal_config.h.in -opal/include/opal/install_dirs.h -opal/include/opal/version.h -opal/include/opal/frameworks.h -opal/include/opal/sys/powerpc/atomic-32.s -opal/include/opal/sys/powerpc/atomic-64.s -opal/include/opal/sys/powerpc/atomic-32-64.s - -opal/mca/base/mca_base_parse_paramfile_lex.c - -opal/mca/btl/usnic/usnic_btl_run_tests - -opal/mca/event/libevent*/libevent/config.h.in -opal/mca/event/libevent*/libevent/config.h -opal/mca/event/libevent*/libevent/libevent.pc -opal/mca/event/libevent*/libevent/libevent_openssl.pc -opal/mca/event/libevent*/libevent/libevent_pthreads.pc -opal/mca/event/libevent*/libevent/include/event2/event-config.h - -opal/mca/installdirs/config/install_dirs.h - -opal/tools/wrappers/opalcc-wrapper-data.txt -opal/tools/wrappers/opalc++-wrapper-data.txt -opal/tools/wrappers/opalCC-wrapper-data.txt -opal/tools/wrappers/opal_wrapper -opal/tools/wrappers/opal.pc - -opal/util/show_help_lex.c -opal/util/keyval/keyval_lex.c - -test/simple/abort -test/simple/accept -test/simple/attach -test/simple/bad_exit -test/simple/bcast_loop -test/simple/binding -test/simple/concurrent_spawn -test/simple/connect -test/simple/crisscross -test/simple/delayed_abort -test/simple/hello_barrier -test/simple/hello_nodename -test/simple/hello_output -test/simple/hello_show_help -test/simple/hello -test/simple/hello++ -test/simple/intercomm1 -test/simple/interlib -test/simple/loop_child -test/simple/loop_spawn -test/simple/mpi_barrier -test/simple/mpi_no_op -test/simple/mpi_spin -test/simple/multi_abort -test/simple/parallel_r8 -test/simple/parallel_r64 -test/simple/parallel_w8 -test/simple/parallel_w64 -test/simple/pinterlib -test/simple/pmix -test/simple/pubsub -test/simple/read_write -test/simple/reduce-hang -test/simple/ring -test/simple/segv -test/simple/simple_spawn -test/simple/slave -test/simple/spawn_multiple -test/simple/xlib -test/simple/ziaprobe -test/simple/ziatest -test/simple/*.dwarf -test/simple/junk* -test/simple/sio -test/simple/sendrecv_blaster -test/simple/early_abort -test/simple/spawn_problem/ch_rec -test/simple/spawn_problem/output -test/simple/spawn_problem/start -test/simple/debugger -test/simple/server_port_name.txt -test/simple/singleton_client_server -test/simple/intercomm_create -test/simple/spawn_tree -test/simple/init-exit77 -test/simple/mpi_info -test/simple/info_spawn -test/simple/client -test/simple/server -test/simple/paccept -test/simple/pconnect -test/simple/thread_init -test/simple/memcached-dummy -test/simple/coll_test -test/simple/badcoll -test/simple/iof -test/simple/no-disconnect -test/simple/nonzero -test/simple/add_host - -oshmem/include/shmem.h -oshmem/include/shmem_portable_platform.h -oshmem/include/oshmem/frameworks.h -oshmem/include/oshmem/version.h - -oshmem/mca/sshmem/base/static-components.h - -oshmem/shmem/c/profile/p*.c -oshmem/shmem/c/profile/*.c - -oshmem/shmem/fortran/libshmem_fortran.la -oshmem/shmem/fortran/profile/pshmem_*_f.c -oshmem/shmem/fortran/profile/pshpdeallc_f.c -oshmem/shmem/fortran/profile/pshpclmove_f.c -oshmem/shmem/fortran/profile/pmy_pe_f.c -oshmem/shmem/fortran/profile/pshpalloc_f.c -oshmem/shmem/fortran/profile/pnum_pes_f.c -oshmem/shmem/fortran/profile/pstart_pes_f.c - -oshmem/tools/oshmem_info/oshmem_info - -oshmem/tools/wrappers/oshmem-c.pc -oshmem/tools/wrappers/oshmem-cxx.pc -oshmem/tools/wrappers/oshmem-fort.pc -oshmem/tools/wrappers/oshmem.pc -oshmem/tools/wrappers/shmemcc-wrapper-data.txt -oshmem/tools/wrappers/shmemfort-wrapper-data.txt -oshmem/tools/wrappers/shmemc++-wrapper-data.txt - -test/asm/atomic_math_noinline -test/asm/atomic_barrier -test/asm/atomic_cmpset_noinline -test/asm/atomic_math -test/asm/atomic_cmpset -test/asm/atomic_spinlock_noinline.c -test/asm/atomic_barrier_noinline.c -test/asm/atomic_math_noinline.c -test/asm/atomic_cmpset_noinline.c -test/asm/atomic_spinlock_noinline -test/asm/atomic_barrier_noinline -test/asm/atomic_spinlock - -test/class/*.txt -test/class/ompi_bitmap_test_out.txt -test/class/ompi_circular_buffer_fifo -test/class/ompi_fifo -test/class/ompi_rb_tree -test/class/ompi_bitmap -test/class/opal_bitmap -test/class/opal_fifo -test/class/opal_cstring -test/class/opal_hash_table -test/class/opal_lifo -test/class/opal_list -test/class/opal_pointer_array -test/class/opal_proc_table -test/class/opal_tree -test/class/opal_value_array - -test/datatype/ddt_test -test/datatype/ddt_pack -test/datatype/external32 -test/datatype/to_self -test/datatype/checksum -test/datatype/position -test/datatype/ddt_raw -test/datatype/opal_datatype_test -test/datatype/position_noncontig -test/datatype/unpack_ooo -test/datatype/unpack_hetero - -test/event/signal-test -test/event/event-test -test/event/time-test - -test/monitoring/monitoring_test -test/monitoring/check_monitoring -test/monitoring/example_reduce_count -test/monitoring/test_overhead -test/monitoring/test_pvar_access - -test/mpi/environment/chello - -test/runtime/parse_context -test/runtime/sigchld -test/runtime/start_shut -test/runtime/opal_init_finalize -test/runtime/orte_init_finalize - -test/spc/spc_test - -test/threads/opal_condition -test/threads/opal_thread - -test/util/aaa -test/util/test_session_dir_out -test/util/opal_os_path -test/util/opal_argv -test/util/opal_os_create_dirpath -test/util/opal_if -test/util/opal_error -test/util/opal_timer -test/util/orte_sys_info -test/util/orte_session_dir -test/util/orte_sys_info -test/util/orte_universe_setup_file_io -test/util/opal_basename -test/util/ompi_numtostr -test/util/ompi_pack -test/util/test-file -test/util/opal_sos -test/util/opal_path_nfs -test/util/opal_path_nfs.out -test/util/opal_bit_ops -test/util/bipartite_graph -test/util/opal_sha256 - -opal/test/reachable/reachable_netlink -opal/test/reachable/reachable_weighted -opal/mca/threads/argobots/threads_argobots.h -opal/mca/threads/qthreads/threads_qthreads.h - -docs/_build -docs/_static -docs/_static/css/custom.css -docs/_templates - -# Common Python virtual environment directory names -venv -py?? - -# Copies of PRRTE RST files (i.e., not source controlled in this tree) -docs/prrte-rst-content -docs/schizo-ompi-rst-content - -# Copies of the built HTML docs and man pages (for distribution -# tarballs) -docs/html -docs/man +.libs +.deps +.libs +.dirstamp +.DS_Store +.cdt* +.project +.gdb* +.idea + +*.la +*.lo +*.o +*.so +*.a +*.dwarf +*.dSYM +*.S +*.loT +*.orig +*.rej +*.bak +*.class +*.xcscheme +*.out +*.plist +*.orig +*.obj +*.mod +*.i90 +*.ii +*.ti +*.exe +*.log +*.trs +*.sapp +*~ +*\\# + +Makefile +Makefile.in + +# hwloc and pmix have been de-modularized, but still uses parts of the +# MCA system due to the amount of glue code that ended up in the +# framework base. Until that is cleaned up, do not ignore the +# hard-coded static-components.h file. +static-components.h +!opal/mca/hwloc/base/static-components.h +!opal/mca/pmix/base/static-components.h + +*\\# +config.cache +aclocal.m4 +autom4te.cache +config.log +config.status +configure +libtool +doxygen +bin +lib +cscope.* +etags +GRTAGS +GSYMS +GTAGS +GPATH +vc70.pdb +.hgrc +.hgignore +.hg +.hgignore_local +stamp-h? +AUTHORS + +ar-lib +ylwrap +config.lt +config.guess +config.sub +depcomp +compile +install-sh +ltmain.sh +missing +mkinstalldirs +libtool.m4 +lt~obsolete.m4 +ltdl.m4 +argz.m4 +ltargz.m4 +ltsugar.m4 +ltversion.m4 +ltoptions.m4 + +# Libevent and hwloc are included as a tarball. Ignore any expanded +# tarballs, since they are not included in git. Do not ignore the +# tarballs themselves, and those are artifacts we will store in git. +3rd-party/libevent-* +!3rd-party/libevent-*.tar.* +3rd-party/treematch/config.h + +3rd-party/romio341/adio/include/romioconf.h +3rd-party/romio341/adio/include/romioconf.h.in +3rd-party/romio341/include/mpio.h +3rd-party/romio341/localdefs +3rd-party/romio341/mpl/confdb/test-driver +3rd-party/romio341/mpl/include/config.h +3rd-party/romio341/mpl/include/config.h.in +3rd-party/romio341/mpl/include/mplconfig.h +3rd-party/romio341/mpl/include/mpl_timer.h +3rd-party/romio341/mpl/localdefs +3rd-party/romio341/test/runtests +3rd-party/romio341/test/fcoll_test.f +3rd-party/romio341/test/fmisc.f +3rd-party/romio341/test/fperf.f +3rd-party/romio341/test/large_file.c +3rd-party/romio341/test/misc.c +3rd-party/romio341/test/pfcoll_test.f +3rd-party/romio341/util/romioinstall + +config/project_list.m4 +config/autogen_found_items.m4 +config/opal_get_version.sh +config/test-driver +config/mca_no_configure_components.m4 +config/mca_m4_config_include.m4 +config/ext_no_configure_components.m4 +config/ext_m4_config_include.m4 +config/auto-extracted-pmix-configure-args.m4 +config/auto-extracted-prrte-configure-args.m4 +config/auto-generated-ompi-exclude.ini + +contrib/build-mca-comps-outside-of-tree/btl_tcp2_config.h +contrib/build-mca-comps-outside-of-tree/btl_tcp2_config.h.in +contrib/build-mca-comps-outside-of-tree/config +contrib/build-mca-comps-outside-of-tree/aclocal.m4 +contrib/dist/linux/compile_debian_mlnx_example +contrib/dist/mofed/compile_debian_mlnx_example +contrib/dist/mofed/debian/changelog +contrib/dist/mofed/debian/control +contrib/dist/mofed/debian/copyright +contrib/dist/mofed/debian/rules +contrib/platform/intel/bend/*orcm* +contrib/scaling/orte_no_op +contrib/scaling/mpi_no_op +contrib/scaling/mpi_barrier +contrib/scaling/mpi_memprobe + +examples/hello_c +examples/hello_cxx +examples/hello_mpifh +examples/hello_usempi +examples/hello_usempif08 +examples/ring_c +examples/ring_cxx +examples/ring_mpifh +examples/ring_usempi +examples/ring_usempif08 +examples/connectivity_c +examples/ring_oshmem +examples/hello_oshmem +examples/ring_oshmemfh +examples/hello_oshmemfh +examples/hello_oshmemcxx +examples/oshmem_circular_shift +examples/oshmem_max_reduction +examples/oshmem_shmalloc +examples/oshmem_strided_puts +examples/oshmem_symmetric_data +examples/spc_example + +ompi/debuggers/*.in +ompi/debuggers/dlopen_test +ompi/debuggers/predefined_gap_test +ompi/debuggers/predefined_pad_test + +ompi/include/mpi.h +ompi/include/mpif-config.h +ompi/include/mpif.h +ompi/include/mpif-c-constants-decl.h +ompi/include/mpif-c-constants.h +ompi/include/mpif-common.h +ompi/include/mpi-ext.h +ompi/include/mpif-ext.h +ompi/include/mpif-f08-types.h +ompi/include/mpif-handles.h +ompi/include/mpif-io-constants.h +ompi/include/mpif-constants.h +ompi/include/mpif-io-handles.h +ompi/include/mpif-sizeof.h +ompi/include/mpi_portable_platform.h +ompi/include/ompi/version.h +ompi/include/ompi/frameworks.h + +ompi/mca/coll/basic/coll-basic-version.h* +ompi/mca/coll/demo/config +ompi/mca/coll/demo/coll_demo_config.h* +ompi/mca/coll/demo/coll-demo-version.h* +ompi/mca/coll/ml/coll_ml_lex.c +ompi/mca/coll/self/coll-self-version.h* +ompi/mca/coll/sm/coll-sm-version.h* + +ompi/mca/osc/monitoring/osc_monitoring_template_gen.h + +ompi/mca/pml/v/autogen.vprotocols +ompi/mca/pml/v/mca_vprotocol_config_output + +ompi/mca/sharedfp/addproc/mca_sharedfp_addproc_control + +ompi/mca/topo/treematch/config.h + +ompi/mpi/c/profile/p*.c + +ompi/mpi/fortran/configure-fortran-output.h +ompi/mpi/fortran/mpiext/mpi-ext-module.F90 +ompi/mpi/fortran/mpiext/mpi-f08-ext-module.F90 +ompi/mpi/fortran/mpiext-use-mpi/mpi-ext-module.F90 +ompi/mpi/fortran/mpiext-use-mpi-f08/mpi-f08-ext-module.F90 + +ompi/mpi/fortran/mpif-h/sizeof_f.f90 +ompi/mpi/fortran/mpif-h/profile/p*.c +ompi/mpi/fortran/mpif-h/profile/psizeof_f.f90 + +ompi/mpi/fortran/use-mpi/mpi-types.F90 + +ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-constants.h +ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-interfaces.h +ompi/mpi/fortran/use-mpi-f08/sizeof_f08.f90 +ompi/mpi/fortran/use-mpi-f08/sizeof_f08.h +ompi/mpi/fortran/use-mpi-f08/profile/psizeof_f08.f90 +ompi/mpi/fortran/use-mpi-f08/profile/*.F90 + +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-ignore-tkr/mpi-ignore-tkr-sizeof.f90 +ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-sizeof.h +ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-removed-interfaces.h + +ompi/mpi/fortran/use-mpi-tkr/fortran_kinds.sh +ompi/mpi/fortran/use-mpi-tkr/fortran_sizes.h +ompi/mpi/fortran/use-mpi-tkr/mpi_kinds.ompi_module +ompi/mpi/fortran/use-mpi-tkr/mpi-tkr-sizeof.f90 +ompi/mpi/fortran/use-mpi-tkr/mpi-tkr-sizeof.h + +ompi/mpi/java/java/mpi +ompi/mpi/java/java/*.jar +ompi/mpi/java/java/*.h +ompi/mpi/java/java/doc + +ompi/mpi/tool/profile/*.c + +ompi/mpiext/affinity/c/example + +ompi/mpiext/ftmpi/c/profile/pcomm_agree.c +ompi/mpiext/ftmpi/c/profile/pcomm_failure_ack.c +ompi/mpiext/ftmpi/c/profile/pcomm_failure_get_acked.c +ompi/mpiext/ftmpi/c/profile/pcomm_iagree.c +ompi/mpiext/ftmpi/c/profile/pcomm_is_revoked.c +ompi/mpiext/ftmpi/c/profile/pcomm_revoke.c +ompi/mpiext/ftmpi/c/profile/pcomm_shrink.c +ompi/mpiext/ftmpi/c/profile/pcomm_ack_failed.c +ompi/mpiext/ftmpi/c/profile/pcomm_get_failed.c +ompi/mpiext/ftmpi/c/profile/pcomm_ishrink.c + +ompi/mpiext/example/tests/progress_c +ompi/mpiext/example/tests/progress_mpifh +ompi/mpiext/example/tests/progress_usempi +ompi/mpiext/example/tests/progress_usempif08 + +ompi/mpiext/cuda/c/mpiext_cuda_c.h +ompi/mpiext/cuda/c/cuda_c.h +ompi/mpiext/rocm/c/mpiext_rocm_c.h + +ompi/mpiext/pcollreq/c/MPIX_*.3 +ompi/mpiext/pcollreq/c/profile/pallgather_init.c +ompi/mpiext/pcollreq/c/profile/pallgatherv_init.c +ompi/mpiext/pcollreq/c/profile/pallreduce_init.c +ompi/mpiext/pcollreq/c/profile/palltoall_init.c +ompi/mpiext/pcollreq/c/profile/palltoallv_init.c +ompi/mpiext/pcollreq/c/profile/palltoallw_init.c +ompi/mpiext/pcollreq/c/profile/pbarrier_init.c +ompi/mpiext/pcollreq/c/profile/pbcast_init.c +ompi/mpiext/pcollreq/c/profile/pexscan_init.c +ompi/mpiext/pcollreq/c/profile/pgather_init.c +ompi/mpiext/pcollreq/c/profile/pgatherv_init.c +ompi/mpiext/pcollreq/c/profile/pmpiext_pcollreq_c.h +ompi/mpiext/pcollreq/c/profile/pneighbor_allgather_init.c +ompi/mpiext/pcollreq/c/profile/pneighbor_allgatherv_init.c +ompi/mpiext/pcollreq/c/profile/pneighbor_alltoall_init.c +ompi/mpiext/pcollreq/c/profile/pneighbor_alltoallv_init.c +ompi/mpiext/pcollreq/c/profile/pneighbor_alltoallw_init.c +ompi/mpiext/pcollreq/c/profile/preduce_init.c +ompi/mpiext/pcollreq/c/profile/preduce_scatter_block_init.c +ompi/mpiext/pcollreq/c/profile/preduce_scatter_init.c +ompi/mpiext/pcollreq/c/profile/pscan_init.c +ompi/mpiext/pcollreq/c/profile/pscatter_init.c +ompi/mpiext/pcollreq/c/profile/pscatterv_init.c +ompi/mpiext/pcollreq/c/profile/ppcollreq_c.h + +ompi/mpiext/pcollreq/mpif-h/profile/pallgather_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pallgatherv_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pallreduce_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/palltoall_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/palltoallv_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/palltoallw_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pbarrier_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pbcast_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pexscan_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pgather_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pgatherv_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_allgather_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_allgatherv_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_alltoall_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_alltoallv_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_alltoallw_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/preduce_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/preduce_scatter_block_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/preduce_scatter_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pscan_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pscatter_init_f.c +ompi/mpiext/pcollreq/mpif-h/profile/pscatterv_init_f.c + +ompi/mpiext/shortfloat/c/mpiext_shortfloat_c.h +ompi/mpiext/shortfloat/mpif-h/mpiext_shortfloat_mpifh.h +ompi/mpiext/shortfloat/use-mpi-f08/mpiext_shortfloat_usempif08.h + +ompi/tools/mpisync/mpisync +ompi/tools/mpisync/mpirun_prof +ompi/tools/mpisync/ompi_timing_post +ompi/tools/mpirun/mpirun + +ompi/tools/ompi_info/ompi_info + +ompi/tools/wrappers/mpic++-wrapper-data.txt +ompi/tools/wrappers/mpicc-wrapper-data.txt +ompi/tools/wrappers/mpifort-wrapper-data.txt +ompi/tools/wrappers/ompi_wrapper_script +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/wrappers/mpicxx-wrapper-data.txt +ompi/tools/wrappers/mpif77-wrapper-data.txt +ompi/tools/wrappers/mpif90-wrapper-data.txt + +opal/asm/atomic-asm.S +opal/asm/atomic-test +opal/asm/generated/atomic-*.s + +opal/include/opal_config.h +opal/include/opal_config.h.in +opal/include/opal/install_dirs.h +opal/include/opal/version.h +opal/include/opal/frameworks.h +opal/include/opal/sys/powerpc/atomic-32.s +opal/include/opal/sys/powerpc/atomic-64.s +opal/include/opal/sys/powerpc/atomic-32-64.s + +opal/mca/base/mca_base_parse_paramfile_lex.c + +opal/mca/btl/usnic/usnic_btl_run_tests + +opal/mca/event/libevent*/libevent/config.h.in +opal/mca/event/libevent*/libevent/config.h +opal/mca/event/libevent*/libevent/libevent.pc +opal/mca/event/libevent*/libevent/libevent_openssl.pc +opal/mca/event/libevent*/libevent/libevent_pthreads.pc +opal/mca/event/libevent*/libevent/include/event2/event-config.h + +opal/mca/installdirs/config/install_dirs.h + +opal/tools/wrappers/opalcc-wrapper-data.txt +opal/tools/wrappers/opalc++-wrapper-data.txt +opal/tools/wrappers/opalCC-wrapper-data.txt +opal/tools/wrappers/opal_wrapper +opal/tools/wrappers/opal.pc + +opal/util/show_help_lex.c +opal/util/keyval/keyval_lex.c + +test/simple/abort +test/simple/accept +test/simple/attach +test/simple/bad_exit +test/simple/bcast_loop +test/simple/binding +test/simple/concurrent_spawn +test/simple/connect +test/simple/crisscross +test/simple/delayed_abort +test/simple/hello_barrier +test/simple/hello_nodename +test/simple/hello_output +test/simple/hello_show_help +test/simple/hello +test/simple/hello++ +test/simple/intercomm1 +test/simple/interlib +test/simple/loop_child +test/simple/loop_spawn +test/simple/mpi_barrier +test/simple/mpi_no_op +test/simple/mpi_spin +test/simple/multi_abort +test/simple/parallel_r8 +test/simple/parallel_r64 +test/simple/parallel_w8 +test/simple/parallel_w64 +test/simple/pinterlib +test/simple/pmix +test/simple/pubsub +test/simple/read_write +test/simple/reduce-hang +test/simple/ring +test/simple/segv +test/simple/simple_spawn +test/simple/slave +test/simple/spawn_multiple +test/simple/xlib +test/simple/ziaprobe +test/simple/ziatest +test/simple/*.dwarf +test/simple/junk* +test/simple/sio +test/simple/sendrecv_blaster +test/simple/early_abort +test/simple/spawn_problem/ch_rec +test/simple/spawn_problem/output +test/simple/spawn_problem/start +test/simple/debugger +test/simple/server_port_name.txt +test/simple/singleton_client_server +test/simple/intercomm_create +test/simple/spawn_tree +test/simple/init-exit77 +test/simple/mpi_info +test/simple/info_spawn +test/simple/client +test/simple/server +test/simple/paccept +test/simple/pconnect +test/simple/thread_init +test/simple/memcached-dummy +test/simple/coll_test +test/simple/badcoll +test/simple/iof +test/simple/no-disconnect +test/simple/nonzero +test/simple/add_host + +oshmem/include/shmem.h +oshmem/include/shmem_portable_platform.h +oshmem/include/oshmem/frameworks.h +oshmem/include/oshmem/version.h + +oshmem/mca/sshmem/base/static-components.h + +oshmem/shmem/c/profile/p*.c +oshmem/shmem/c/profile/*.c + +oshmem/shmem/fortran/libshmem_fortran.la +oshmem/shmem/fortran/profile/pshmem_*_f.c +oshmem/shmem/fortran/profile/pshpdeallc_f.c +oshmem/shmem/fortran/profile/pshpclmove_f.c +oshmem/shmem/fortran/profile/pmy_pe_f.c +oshmem/shmem/fortran/profile/pshpalloc_f.c +oshmem/shmem/fortran/profile/pnum_pes_f.c +oshmem/shmem/fortran/profile/pstart_pes_f.c + +oshmem/tools/oshmem_info/oshmem_info + +oshmem/tools/wrappers/oshmem-c.pc +oshmem/tools/wrappers/oshmem-cxx.pc +oshmem/tools/wrappers/oshmem-fort.pc +oshmem/tools/wrappers/oshmem.pc +oshmem/tools/wrappers/shmemcc-wrapper-data.txt +oshmem/tools/wrappers/shmemfort-wrapper-data.txt +oshmem/tools/wrappers/shmemc++-wrapper-data.txt + +test/asm/atomic_math_noinline +test/asm/atomic_barrier +test/asm/atomic_cmpset_noinline +test/asm/atomic_math +test/asm/atomic_cmpset +test/asm/atomic_spinlock_noinline.c +test/asm/atomic_barrier_noinline.c +test/asm/atomic_math_noinline.c +test/asm/atomic_cmpset_noinline.c +test/asm/atomic_spinlock_noinline +test/asm/atomic_barrier_noinline +test/asm/atomic_spinlock + +test/class/*.txt +test/class/ompi_bitmap_test_out.txt +test/class/ompi_circular_buffer_fifo +test/class/ompi_fifo +test/class/ompi_rb_tree +test/class/ompi_bitmap +test/class/opal_bitmap +test/class/opal_fifo +test/class/opal_cstring +test/class/opal_hash_table +test/class/opal_lifo +test/class/opal_list +test/class/opal_pointer_array +test/class/opal_proc_table +test/class/opal_tree +test/class/opal_value_array + +test/datatype/ddt_test +test/datatype/ddt_pack +test/datatype/external32 +test/datatype/to_self +test/datatype/checksum +test/datatype/position +test/datatype/ddt_raw +test/datatype/opal_datatype_test +test/datatype/position_noncontig +test/datatype/unpack_ooo +test/datatype/unpack_hetero + +test/event/signal-test +test/event/event-test +test/event/time-test + +test/monitoring/monitoring_test +test/monitoring/check_monitoring +test/monitoring/example_reduce_count +test/monitoring/test_overhead +test/monitoring/test_pvar_access + +test/mpi/environment/chello + +test/runtime/parse_context +test/runtime/sigchld +test/runtime/start_shut +test/runtime/opal_init_finalize +test/runtime/orte_init_finalize + +test/spc/spc_test + +test/threads/opal_condition +test/threads/opal_thread + +test/util/aaa +test/util/test_session_dir_out +test/util/opal_os_path +test/util/opal_argv +test/util/opal_os_create_dirpath +test/util/opal_if +test/util/opal_error +test/util/opal_timer +test/util/orte_sys_info +test/util/orte_session_dir +test/util/orte_sys_info +test/util/orte_universe_setup_file_io +test/util/opal_basename +test/util/ompi_numtostr +test/util/ompi_pack +test/util/test-file +test/util/opal_sos +test/util/opal_path_nfs +test/util/opal_path_nfs.out +test/util/opal_bit_ops +test/util/bipartite_graph +test/util/opal_sha256 + +opal/test/reachable/reachable_netlink +opal/test/reachable/reachable_weighted +opal/mca/threads/argobots/threads_argobots.h +opal/mca/threads/qthreads/threads_qthreads.h + +docs/_build +docs/_static +docs/_static/css/custom.css +docs/_templates + +# Common Python virtual environment directory names +venv +py?? + +# Copies of PRRTE RST files (i.e., not source controlled in this tree) +docs/prrte-rst-content +docs/schizo-ompi-rst-content + +# Copies of the built HTML docs and man pages (for distribution +# tarballs) +docs/html +docs/man diff --git a/3rd-party/hwloc-2.7.1.tar.gz b/3rd-party/hwloc-2.7.1.tar.gz deleted file mode 100644 index 95dce21a46497ecadde172420b21ece029f43072..0000000000000000000000000000000000000000 Binary files a/3rd-party/hwloc-2.7.1.tar.gz and /dev/null differ diff --git a/3rd-party/hwloc-2.7.1/COPYING b/3rd-party/hwloc-2.7.1/COPYING new file mode 100644 index 0000000000000000000000000000000000000000..e77516e18017178a5b427bd770a396392700e290 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/COPYING @@ -0,0 +1,39 @@ +Copyright © 2004-2006 The Trustees of Indiana University and Indiana University Research and Technology Corporation. All rights reserved. +Copyright © 2004-2005 The University of Tennessee and The University of Tennessee Research Foundation. All rights reserved. +Copyright © 2004-2005 High Performance Computing Center Stuttgart, University of Stuttgart. All rights reserved. +Copyright © 2004-2005 The Regents of the University of California. All rights reserved. +Copyright © 2009 CNRS +Copyright © 2009-2016 Inria. All rights reserved. +Copyright © 2009-2015 Université Bordeaux +Copyright © 2009-2015 Cisco Systems, Inc. All rights reserved. +Copyright © 2009-2012 Oracle and/or its affiliates. All rights reserved. +Copyright © 2010 IBM +Copyright © 2010 Jirka Hladky +Copyright © 2012 Aleksej Saushev, The NetBSD Foundation +Copyright © 2012 Blue Brain Project, EPFL. All rights reserved. +Copyright © 2013-2014 University of Wisconsin-La Crosse. All rights reserved. +Copyright © 2015 Research Organization for Information Science and Technology (RIST). All rights reserved. +Copyright © 2015-2016 Intel, Inc. All rights reserved. +See COPYING in top-level directory. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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/3rd-party/hwloc-2.7.1/Makefile.am b/3rd-party/hwloc-2.7.1/Makefile.am new file mode 100644 index 0000000000000000000000000000000000000000..1996b4becd0fe6b863295ebcc25c21ba0afc6114 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/Makefile.am @@ -0,0 +1,103 @@ +# Copyright © 2009-2021 Inria. All rights reserved. +# Copyright © 2009 Université Bordeaux +# Copyright © 2009-2014 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. + +# Note that the -I directory must *exactly* match what was specified +# via AC_CONFIG_MACRO_DIR in configure.ac. +ACLOCAL_AMFLAGS = -I ./config + +# +# "make distcheck" requires that tarballs are able to be able to "make +# dist", so we have to include config/distscript.sh. +# +EXTRA_DIST = \ + README VERSION COPYING AUTHORS \ + config/hwloc_get_version.sh \ + config/distscript.sh \ + config/libtool-big-sur-fixup.patch + +SUBDIRS = include hwloc + +if HWLOC_BUILD_STANDALONE +if BUILD_NETLOC +SUBDIRS += netloc +endif +SUBDIRS += utils tests contrib/systemd contrib/completion contrib/misc contrib/hwloc-ps.www +# We need doc/ if HWLOC_BUILD_DOXYGEN, or during make install if HWLOC_INSTALL_DOXYGEN. +# There's no INSTALL_SUBDIRS, so always enter doc/ and check HWLOC_BUILD/INSTALL_DOXYGEN there +SUBDIRS += doc +endif + +# Do not let automake automatically add the non-standalone dirs to the +# distribution tarball if we're building in embedded mode. +DIST_SUBDIRS = $(SUBDIRS) +if HWLOC_BUILD_STANDALONE +DIST_SUBDIRS += contrib/windows +EXTRA_DIST += contrib/windows-cmake +if !BUILD_NETLOC +DIST_SUBDIRS += netloc +endif +endif + +# Only install the pkg file if we're building in standalone mode (and not on Windows) +if HWLOC_BUILD_STANDALONE +hwlocpkgconfigdir = $(libdir)/pkgconfig +hwlocpkgconfig_DATA = hwloc.pc +if BUILD_NETLOC +# JMS Need to compare hwloc.pc and netloc.pc -- I think netloc.pc is +# missing some things. +# pkgconfig_DATA += netloc.pc Disabled until the netloc API is public +EXTRA_DIST += netloc.pc +if BUILD_NETLOCSCOTCH +hwlocpkgconfig_DATA += netlocscotch.pc +endif BUILD_NETLOCSCOTCH +endif BUILD_NETLOC +endif HWLOC_BUILD_STANDALONE + +# Only install the valgrind suppressions file if we're building in +# standalone mode +if HWLOC_BUILD_STANDALONE +dist_pkgdata_DATA = contrib/hwloc-valgrind.supp +endif + +if HWLOC_BUILD_STANDALONE +dist-hook: + sh "$(top_srcdir)/config/distscript.sh" "$(top_srcdir)" "$(distdir)" "$(HWLOC_VERSION)" +else !HWLOC_BUILD_STANDALONE +# Create directories needed by embedders' autogen (directories ignored by embedded dist) +dist-hook: + @MKDIR_P@ \ + $(distdir)/doc \ + $(distdir)/netloc \ + $(distdir)/utils \ + $(distdir)/tests \ + $(distdir)/contrib/completion \ + $(distdir)/contrib/hwloc-ps.www \ + $(distdir)/contrib/misc \ + $(distdir)/contrib/systemd \ + $(distdir)/contrib/windows +endif !HWLOC_BUILD_STANDALONE + +if HWLOC_BUILD_STANDALONE +if HWLOC_HAVE_WINDOWS +# +# Winball specific rules +# +install-data-local: + sed -e 's/$$/'$$'\015'/ < $(srcdir)/README > $(DESTDIR)$(prefix)/README.txt + sed -e 's/$$/'$$'\015'/ < $(srcdir)/NEWS > $(DESTDIR)$(prefix)/NEWS.txt + sed -e 's/$$/'$$'\015'/ < $(srcdir)/COPYING > $(DESTDIR)$(prefix)/COPYING.txt +uninstall-local: + rm -f $(DESTDIR)$(prefix)/README.txt $(DESTDIR)$(prefix)/NEWS.txt $(DESTDIR)$(prefix)/COPYING.txt +endif HWLOC_HAVE_WINDOWS +endif HWLOC_BUILD_STANDALONE + +# +# Build the documenation and top-level README file +# +if HWLOC_BUILD_STANDALONE +.PHONY: doc readme +doc readme: + $(MAKE) -C doc +endif HWLOC_BUILD_STANDALONE diff --git a/3rd-party/hwloc-2.7.1/NEWS b/3rd-party/hwloc-2.7.1/NEWS new file mode 100644 index 0000000000000000000000000000000000000000..75557e5f43b2d4d05bd31392966df410dca0ebfd --- /dev/null +++ b/3rd-party/hwloc-2.7.1/NEWS @@ -0,0 +1,1978 @@ +Copyright © 2009 CNRS +Copyright © 2009-2022 Inria. All rights reserved. +Copyright © 2009-2013 Université Bordeaux +Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. +Copyright © 2020 Hewlett Packard Enterprise. All rights reserved. + +$COPYRIGHT$ + +Additional copyrights may follow + +$HEADER$ + +=========================================================================== + +This file contains the main features as well as overviews of specific +bug fixes (and other actions) for each version of hwloc since version +0.9. + + +Version 2.7.1 +------------- +* Workaround crashes when virtual machines report incoherent x86 CPUID + information about numbers of cores and threads. + Thanks to Peter Bense for the report. +* Use setenv() instead of putenv() when trying to force enable oneAPI L0 + support, to avoid issues with applications that touch the environment, + thanks to Josh Hursey for the patch. +* Add some warnings at the end of configure when GPU libraries are + missing on the system or their path is missing in the environment. + + +Version 2.7.0 +------------- +* Backends + + Add support for NUMA nodes and caches with more than 64 PUs across + multiple processor groups on Windows 11 and Windows Server 2022. + + Group objects are not created for Windows processor groups anymore, + except if HWLOC_WINDOWS_PROCESSOR_GROUP_OBJS=1 in the environment. + + Expose "Cluster" group objects on Linux kernel 5.16+ for CPUs + that share some internal cache or bus. This can be equivalent + to the L2 Cache level on some platforms (e.g. x86) or a specific + level between L2 and L3 on others (e.g. ARM Kungpeng 920). + Thanks to Jonathan Cameron for the help. + - HWLOC_DONT_MERGE_CLUSTER_GROUPS=1 may be set in the environment + to prevent these groups from being merged with identical caches, etc. + + Improve the oneAPI LevelZero backend: + - Expose subdevices such as "ze0.1" inside root OS devices ("ze0") + when the hardware contains multiple subdevices. + - Add many new attributes to describe device type, and the + numbers of slices, subslices, execution units and threads. + - Expose the memory information as LevelZeroHBM/DDR/MemorySize infos. + + Ignore the max frequencies of cores in Linux cpukinds when the + base frequencies are available (to avoid exposing hybrid CPUs + when Intel Turbo Boost Max 3.0 gives slightly different max + frequencies to CPU cores). + - May be reverted by setting HWLOC_CPUKINDS_MAXFREQ=1 in the environment. +* Tools + + Add --grey and --palette options to switch lstopo to greyscale or + white-background-only graphics, or to tune individual colors. +* Build + + Windows CMake builds now support non-MSVC compilers, detect several + features at build time, can build/run tests, etc. + Thanks to Michael Hirsch and Alexander Neumann . + + +Version 2.6.0 +------------- +* Backends + + Expose two cpukinds for energy-efficient cores (icestorm) and + high-performance cores (firestorm) on Apple M1 on Mac OS X. + + Use sysfs CPU "capacity" to rank hybrid cores by efficiency + on Linux when available (mostly on recent ARM platforms for now). + + Improve HWLOC_MEMBIND_BIND (without the STRICT flag) on Linux kernel + >= 5.15: If more than one node is given, the kernel may now use all + of them instead of only the first one before falling back to others. + + Expose cache os_index when available on Linux, it may be needed + when using resctrl to configure cache partitioning, memory bandwidth + monitoring, etc. + + Add a "XGMIHops" distances matrix in the RSMI backend for AMD GPU + interconnected through XGMI links. + + Expose AMD GPU memory information (VRAM and GTT) in the RSMI backend. + + Add OS devices such as "bxi0" for Atos/Bull BXI HCAs on Linux. +* Tools + + lstopo has a better placement algorithm with respect to I/O + objects, see --children-order in the manpage for details. + + hwloc-annotate may now change object subtypes and cache or memory + sizes. +* Build + + Allow to specify the ROCm installation for building the RSMI backend: + - Use a custom installation path if specified with --with-rocm=. + - Use /opt/rocm- if specified with --with-rocm-version= + or the ROCM_VERSION environment variable. + - Try /opt/rocm if it exists. + - See "How do I enable ROCm SMI and select which version to use?" + in the FAQ for details. + + Add a CMakeLists for Windows under contrib/windows-cmake/ . +* Documentation + + Add FAQ entry "How do I create a custom heterogeneous and + asymmetric topology?" + + +Version 2.5.0 +------------- +* API + + Add hwloc/windows.h to query Windows processor groups. + + Add hwloc_get_obj_with_same_locality() to convert between objects + with same locality, for instance NUMA nodes and Packages, + or OS devices within a PCI device. + + Add hwloc_distances_transform() to modify distances structures. + - hwloc-annotate and lstopo have new distances-transform options. + + hwloc_distances_add() is replaced with _add_create() followed by + _add_values() and _add_commit(). See hwloc/distances.h for details. + + Add topology flags to mitigate binding modifications during + hwloc discovery, especially on Windows: + - HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_CPUBINDING and _MEMBINDING + restrict discovery to PUs and NUMA nodes inside the binding. + - HWLOC_TOPOLOGY_FLAG_DONT_CHANGE_BINDING prevents from ever + changing the binding during discovery. +* Backends + + Add a levelzero backend for oneAPI L0 devices, exposed as OS devices + of subtype "LevelZero" and name such as "ze0". + - Add hwloc/levelzero.h for interoperability between converting + between L0 API devices and hwloc cpusets or OS devices. + + Expose NEC Vector Engine cards on Linux as OS devices of subtype + "VectorEngine" and name "ve0", etc. + Thanks to Anara Kozhokanova, Tim Cramer and Erich Focht for the help. + + Add a NVLinkBandwidth distances structure between NVIDIA GPUs + (and POWER processor or NVSwitches) in the NVML backend, + and a XGMIBandwidth distances structure between AMD GPUs + in the RSMI backends. + - See "Topology Attributes: Distances, Memory Attributes and CPU Kinds" + in the documentation for details about these new distances. + + Add support for NUMA node 0 being offline in Linux, thanks to Jirka Hladky. +* Build + + Add --with-cuda-version= or look at the CUDA_VERSION + environment variable to find the appropriate CUDA pkg-config files. + Thanks to Stephen Herbein for the suggestion. + - Also add --with-cuda= to specify the CUDA installation path + manually (and its NVML and OpenCL components). + Thanks to Andrea Bocci for the suggestion. + - See "How do I enable CUDA and select which CUDA version to use?" + in the FAQ for details. +* Tools + + lstopo now has a --windows-processor-groups option on Windows. + + hwloc-ps now has a --short-name option to avoid long/truncated + command path. + + hwloc-ps now has a --single-ancestor option to return a single + (possibly too large) object where a process is bound. + + hwloc-ps --pid-cmd may now query environment variables, + including MPI-specific variables to find out process ranks. + + +Version 2.4.1 +------------- +* Fix AMD OpenCL device locality when PCI bus or device number >= 128. + Thanks to Edgar Leon for reporting the issue. + + Applications using any of the following inline functions must + be recompiled to get the fix: hwloc_opencl_get_device_pci_busid() + hwloc_opencl_get_device_cpuset(), hwloc_opencl_get_device_osdev(). +* Fix the ranking of cpukinds on non-Windows systems, + thanks to Ivan Kochin for the report. +* Fix the insertion of custom Groups after loading the topology, + thanks to Scott Hicks. +* Add support for CPU0 being offline in Linux, thanks to Garrett Clay. +* Fix missing x86 Package and Core objects FreeBSD/NetBSD. + Thanks to Thibault Payet and Yuri Victorovich for the report. +* Fix the import of very large distances with heterogeneous object types. +* Fix a memory leak in the Linux backend, + thanks to Perceval Anichini. + + +Version 2.4.0 +------------- +* API + + Add hwloc/cpukinds.h for reporting information about hybrid CPUs. + - Use Linux cpufreq frequencies to rank cores by efficiency. + - Use x86 CPUID hybrid leaf and future Linux kernels sysfs CPU type + files to identify Intel Atom and Core cores. + - Use the Windows native EfficiencyClass to separate kinds. +* Backends + + Properly handle Linux kernel 5.10+ exposing ACPI HMAT information + with knowledge of Generic Initiators. +* Tools + + lstopo has new --cpukinds and --no-cpukinds options for showing + CPU kinds or not in textual and graphical modes respectively. + + hwloc-calc has a new --cpukind option for filtering PUs by kind. + + hwloc-annotate has a new cpukind command for modifying CPU kinds. +* Misc + + Fix hwloc_bitmap_nr_ulongs(), thanks to Norbert Eicker. + + Add a documentation section about + "Topology Attributes: Distances, Memory Attributes and CPU Kinds". + + Silence some spurious warnings in the OpenCL backend and when showing + process binding with lstopo --ps. + + +Version 2.3.0 +------------- +* API + + Add hwloc/memattrs.h for exposing latency/bandwidth information + between initiators (CPU sets for now) and target NUMA nodes, + typically on heterogeneous platforms. + - When available, bandwidths and latencies are read from the ACPI HMAT + table exposed by Linux kernel 5.2+. + - Attributes may also be customized to expose user-defined performance + information. + + Add hwloc_get_local_numanode_objs() for listing NUMA nodes that are + local to some locality. + + The new topology flag HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT causes + support arrays to be loaded from XML exported with hwloc 2.3+. + - hwloc_topology_get_support() now returns an additional "misc" + array with feature "imported_support" set when support was imported. + + Add hwloc_topology_refresh() to refresh internal caches after modifying + the topology and before consulting the topology in a multithread context. +* Backends + + Add a ROCm SMI backend and a hwloc/rsmi.h helper file for getting + the locality of AMD GPUs, now exposed as "rsmi" OS devices. + Thanks to Mike Li. + + Remove POWER device-tree-based topology on Linux, + (it was disabled by default since 2.1). +* Tools + + Command-line options for specifying flags now understand comma-separated + lists of flag names (substrings). + + hwloc-info and hwloc-calc have new --local-memory --local-memory-flags + and --best-memattr options for reporting local memory nodes and filtering + by memory attributes. + + hwloc-bind has a new --best-memattr option for filtering by memory attributes + among the memory binding set. + + Tools that have a --restrict option may now receive a nodeset or + some custom flags for restricting the topology. + + lstopo now has a --thickness option for changing line thickness in the + graphical output. + + Fix lstopo drawing when autoresizing on Windows 10. + + Pressing the F5 key in lstopo X11 and Windows graphical/interactive outputs + now refreshes the display according to the current topology and binding. + + Add a tikz lstopo graphical backend to generate picture easily included into + LaTeX documents. Thanks to Clement Foyer. +* Misc + + The default installation path of the Bash completion file has changed to + ${datadir}/bash-completion/completions/hwloc. Thanks to Tomasz Kłoczko. + + +Version 2.2.0 +------------- +* API + + Add hwloc_bitmap_singlify_by_core() to remove SMT from a given cpuset, + thanks to Florian Reynier for the suggestion. + + Add --enable-32bits-pci-domain to stop ignoring PCI devices with domain + >16bits (e.g. 10000:02:03.4). Enabling this option breaks the library ABI. + Thanks to Dylan Simon for the help. +* Backends + + Add support for Linux cgroups v2. + + Add NUMA support for FreeBSD. + + Add get_last_cpu_location support for FreeBSD. + + Remove support for Intel Xeon Phi (MIC, Knights Corner) co-processors. +* Tools + + Add --uid to filter the hwloc-ps output by uid on Linux. + + Add a GRAPHICAL OUTPUT section in the manpage of lstopo. +* Misc + + Use the native dlopen instead of libltdl, + unless --disable-plugin-dlopen is passed at configure time. + + +Version 2.1.0 +------------- +* API + + Add a new "Die" object (HWLOC_OBJ_DIE) for upcoming x86 processors + with multiple dies per package, in the x86 and Linux backends. + + Add the new HWLOC_OBJ_MEMCACHE object type for memory-side caches. + - They are filtered-out by default, except in command-line tools. + - They are only available on very recent platforms running Linux 5.2+ + and uptodate ACPI tables. + - The KNL MCDRAM in cache mode is still exposed as a L3 unless + HWLOC_KNL_MSCACHE_L3=0 in the environment. + + Add HWLOC_RESTRICT_FLAG_BYNODESET and _REMOVE_MEMLESS for restricting + topologies based on some memory nodes. + + Add hwloc_topology_set_components() for blacklisting some components + from being enabled in a topology. + + Add hwloc_bitmap_nr_ulongs() and hwloc_bitmap_from/to_ulongs(), + thanks to Junchao Zhang for the suggestion. + + Improve the API for dealing with disallowed resources + - HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM is replaced with FLAG_INCLUDE_DISALLOWED + and --whole-system command-line options with --disallowed. + . Former names are still accepted for backward compatibility. + - Add hwloc_topology_allow() for changing allowed sets after load(). + - Add the HWLOC_ALLOW=all environment variable to totally ignore + administrative restrictions such as Linux Cgroups. + - Add disallowed_pu and disallowed_numa bits to the discovery support + structure. + + Group objects have a new "dont_merge" attribute to prevent them from + being automatically merged with identical parent or children. + + Add more distances-related features: + - Add hwloc_distances_get_name() to retrieve a string describing + what a distances structure contain. + - Add hwloc_distances_get_by_name() to retrieve distances structures + based on their name. + - Add hwloc_distances_release_remove() + - Distances may now cover objects of different types with new kind + HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES. +* Backends + + Add support for Linux 5.3 new sysfs cpu topology files with Die information. + + Add support for Intel v2 Extended Topology Enumeration in the x86 backend. + + Improve memory locality on Linux by using HMAT initiators (exposed + since Linux 5.2+), and NUMA distances for CPU-less NUMA nodes. + + The x86 backend now properly handles offline CPUs. + + Detect the locality of NVIDIA GPU OpenCL devices. + + Ignore NUMA nodes that correspond to NVIDIA GPU by default. + - They may be unignored if HWLOC_KEEP_NVIDIA_GPU_NUMA_NODES=1 in the environment. + - Fix their CPU locality and add info attributes to identify them. + Thanks to Max Katz and Edgar Leon for the help. + + Add support for IBM S/390 drawers. + + Rework the heuristics for discovering KNL Cluster and Memory modes + to stop assuming all CPUs are online (required for mOS support). + Thanks to Sharath K Bhat for testing patches. + + Ignore NUMA node information from AMD topoext in the x86 backend, + unless HWLOC_X86_TOPOEXT_NUMANODES=1 is set in the environment. + + Expose Linux DAX devices as hwloc Block OS devices. + + Remove support for /proc/cpuinfo-only topology discovery in Linux + kernel prior to 2.6.16. + + Disable POWER device-tree-based topology on Linux by default. + - It may be reenabled by setting HWLOC_USE_DT=1 in the environment. + + Discovery components are now divided in phases that may be individually + blacklisted. + - The linuxio component has been merged back into the linux component. +* Tools + + lstopo + - lstopo factorizes objects by default in the graphical output when + there are more than 4 identical children. + . New options --no-factorize and --factorize may be used to configure this. + . Hit the 'f' key to disable factorizing in interactive outputs. + - Both logical and OS/physical indexes are now displayed by default + for PU and NUMA nodes. + - The X11 and Windows interactive outputs support many keyboard + shortcuts to dynamically customize the attributes, legend, etc. + - Add --linespacing and change default margins and linespacing. + - Add --allow for changing allowed sets. + - Add a native SVG backend. Its graphical output may be slightly less + pretty than Cairo (still used by default if available) but the SVG + code provides attributes to manipulate objects from HTML/JS. + See dynamic_SVG_example.html for an example. + + Add --nodeset options to hwloc-calc for converting between cpusets and + nodesets. + + Add --no-smt to lstopo, hwloc-bind and hwloc-calc to ignore multiple + PU in SMT cores. + + hwloc-annotate may annotate multiple locations at once. + + Add a HTML/JS version of hwloc-ps. See contrib/hwloc-ps.www/README. + + Add bash completions. +* Misc + + Add several FAQ entries in "Compatibility between hwloc versions" + about API version, ABI, XML, Synthetic strings, and shmem topologies. + + +Version 2.0.4 (also included in 1.11.13 when appropriate) +------------- +* Add support for Linux 5.3 new sysfs cpu topology files with Die information. +* Add support for Intel v2 Extended Topology Enumeration in the x86 backend. +* Tiles, Modules and Dies are exposed as Groups for now. + + HWLOC_DONT_MERGE_DIE_GROUPS=1 may be set in the environment to prevent + Die groups from being automatically merged with identical parent or children. +* Ignore NUMA node information from AMD topoext in the x86 backend, + unless HWLOC_X86_TOPOEXT_NUMANODES=1 is set in the environment. +* Group objects have a new "dont_merge" attribute to prevent them from + being automatically merged with identical parent or children. + + +Version 2.0.3 (also included in 1.11.12 when appropriate) +------------- +* Fix build on Cygwin, thanks to Marco Atzeri for the patches. +* Fix a corner case of hwloc_topology_restrict() where children would + become out-of-order. +* Fix the return length of export_xmlbuffer() functions to always + include the ending \0. +* Fix lstopo --children-order argument parsing. + + +Version 2.0.2 (also included in 1.11.11 when appropriate) +------------- +* Add support for Hygon Dhyana processors in the x86 backend, + thanks to Pu Wen for the patch. +* Fix symbol renaming to also rename internal components, + thanks to Evan Ramos for the patch. +* Fix build on HP-UX, thanks to Richard Lloyd for reporting the issues. +* Detect PCI link speed without being root on Linux >= 4.13. +* Add HWLOC_VERSION* macros to the public headers, + thanks to Gilles Gouaillardet for the suggestion. + + +Version 2.0.1 (also included in 1.11.10 when relevant) +------------- +* Bump the library soname to 15:0:0 to avoid conflicts with hwloc 1.11.x + releases. The hwloc 2.0.0 soname was buggy (12:0:0), applications will + have to be recompiled. +* Serialize pciaccess discovery to fix concurrent topology loads in + multiple threads. +* Fix hwloc-dump-hwdata to only process SMBIOS information that correspond + to the KNL and KNM configuration. +* Add a heuristic for guessing KNL/KNM memory and cluster modes when + hwloc-dump-hwdata could not run as root earlier. +* Add --no-text lstopo option to remove text from some boxes in the + graphical output. Mostly useful for removing Group labels. +* Some minor fixes to memory binding. + + +Version 2.0.0 +------------- +*** The ABI of the library has changed. *** + For instance some hwloc_obj fields were reordered, added or removed, see below. + + HWLOC_API_VERSION and hwloc_get_api_version() now give 0x00020000. + + See "How do I handle ABI breaks and API upgrades ?" in the FAQ + and "Upgrading to hwloc 2.0 API" in the documentation. +* Major API changes + + Memory, I/O and Misc objects are now stored in dedicated children lists, + not in the usual children list that is now only used for CPU-side objects. + - hwloc_get_next_child() may still be used to iterate over these 4 lists + of children at once. + - hwloc_obj_type_is_normal(), _memory() and _io() may be used to check + the kind of a given object type. + + Topologies always have at least one NUMA object. On non-NUMA machines, + a single NUMA object is added to describe the entire machine memory. + The NUMA level cannot be ignored anymore. + + The NUMA level is special since NUMA nodes are not in the main hierarchy + of objects anymore. Its depth is a fake negative depth that should not be + compared with normal levels. + - If all memory objects are attached to parents at the same depth, + it may be retrieved with hwloc_get_memory_parents_depth(). + + The HWLOC_OBJ_CACHE type is replaced with 8 types HWLOC_OBJ_L[1-5]CACHE + and HWLOC_OBJ_L[1-3]ICACHE that remove the need to disambiguate levels + when looking for caches with _by_type() functions. + - New hwloc_obj_type_is_{,d,i}cache() functions may be used to check whether + a given type is a cache. + + Reworked ignoring/filtering API + - Replace hwloc_topology_ignore*() functions with hwloc_topology_set_type_filter() + and hwloc_topology_set_all_types_filter(). + . Contrary to hwloc_topology_ignore_{type,all}_keep_structure() which + removed individual objects, HWLOC_TYPE_FILTER_KEEP_STRUCTURE only removes + entire levels (so that topology do not become too asymmetric). + - Remove HWLOC_TOPOLOGY_FLAG_ICACHES in favor of hwloc_topology_set_icache_types_filter() + with HWLOC_TYPE_FILTER_KEEP_ALL. + - Remove HWLOC_TOPOLOGY_FLAG_IO_DEVICES, _IO_BRIDGES and _WHOLE_IO in favor of + hwloc_topology_set_io_types_filter() with HWLOC_TYPE_FILTER_KEEP_ALL or + HWLOC_TYPE_FILTER_KEEP_IMPORTANT. + + The distance API has been completely reworked. It is now described + in hwloc/distances.h. + + Return values + - Most functions in hwloc/bitmap.h now return an int that may be negative + in case of failure to realloc/extend the internal storage of a bitmap. + - hwloc_obj_add_info() also returns an int in case allocations fail. +* Minor API changes + + Object attributes + - obj->memory is removed. + . local_memory and page_types attributes are now in obj->attr->numanode + . total_memory moves obj->total_memory. + - Objects do not have allowed_cpuset and allowed_nodeset anymore. + They are only available for the entire topology using + hwloc_topology_get_allowed_cpuset() and hwloc_topology_get_allowed_nodeset(). + - Objects now have a "subtype" field that supersedes former "Type" and + "CoProcType" info attributes. + + Object and level depths are now signed ints. + + Object string printing and parsing + - hwloc_type_sscanf() deprecates the old hwloc_obj_type_sscanf(). + - hwloc_type_sscanf_as_depth() is added to convert a type name into + a level depth. + - hwloc_obj_cpuset_snprintf() is deprecated in favor of hwloc_bitmap_snprintf(). + + Misc objects + - Replace hwloc_topology_insert_misc_object_by_cpuset() with + hwloc_topology_insert_group_object() to precisely specify the location + of an additional hierarchy level in the topology. + - Misc objects have their own level and depth to iterate over all of them. + - Misc objects may now only be inserted as a leaf object with + hwloc_topology_insert_misc_object() which deprecates + hwloc_topology_insert_misc_object_by_parent(). + + hwloc_topology_restrict() doesn't remove objects that contain memory + by default anymore. + - The list of existing restrict flags was modified. + + The discovery support array now contains some NUMA specific bits. + + XML export functions take an additional flags argument, + for instance for exporting XMLs that are compatible with hwloc 1.x. + + Functions diff_load_xml*(), diff_export_xml*() and diff_destroy() in + hwloc/diff.h do not need a topology as first parameter anymore. + + hwloc_parse_cpumap_file () superseded by hwloc_linux_read_path_as_cpumask() + in hwloc/linux.h. + + HWLOC_MEMBIND_DEFAULT and HWLOC_MEMBIND_FIRSTTOUCH were clarified. +* New APIs and Features + + Add hwloc/shmem.h for sharing topologies between processes running on + the same machine (for reducing the memory footprint). + + Add the experimental netloc subproject. It is disabled by default + and can be enabled with --enable-netloc. + It currently brings command-line tools to gather and visualize the + topology of InfiniBand fabrics, and an API to convert such topologies + into Scotch architectures for process mapping. + See the documentation for details. +* Removed APIs and features + + Remove the online_cpuset from struct hwloc_obj. Offline PUs get unknown + topologies on Linux nowadays, and wrong topology on Solaris. Other OS + do not support them. And one cannot do much about them anyway. Just keep + them in complete_cpuset. + + Remove the now-unused "System" object type HWLOC_OBJ_SYSTEM, + defined to MACHINE for backward compatibility. + + The almost-unused "os_level" attribute has been removed from the + hwloc_obj structure. + + Remove the custom interface for assembling the topologies of different + nodes as well as the hwloc-assembler tools. + + hwloc_topology_set_fsroot() is removed, the environment variable + HWLOC_FSROOT may be used for the same remote testing/debugging purpose. + + Remove the deprecated hwloc_obj_snprintf(), hwloc_obj_type_of_string(), + hwloc_distribute[v](). + * Remove Myrinet Express interoperability (hwloc/myriexpress.h). + + Remove Kerrighed support from the Linux backend. + + Remove Tru64 (OSF/1) support. + - Remove HWLOC_MEMBIND_REPLICATE which wasn't available anywhere else. +* Backend improvements + + Linux + - OS devices do not have to be attached through PCI anymore, + for instance enabling the discovery of NVDIMM block devices. + - Remove the dependency on libnuma. + - Add a SectorSize attribute to block OS devices. + + Mac OS X + - Fix detection of cores and hyperthreads. + - Add CPUVendor, Model, ... attributes. + + Windows + - Add get_area_memlocation(). +* Tools + + lstopo and hwloc-info have a new --filter option matching the new filtering API. + + lstopo can be given --children-order=plain to force a basic displaying + of memory and normal children together below their parent. + + hwloc-distances was removed and replaced with lstopo --distances. +* Misc + + Exports + - Exporting to synthetic now ignores I/O and Misc objects. + + PCI discovery + - Separate OS device discovery from PCI discovery. Only the latter is disabled + with --disable-pci at configure time. Both may be disabled with --disable-io. + - The `linuxpci' component is now renamed into `linuxio'. + - The old `libpci' component name from hwloc 1.6 is not supported anymore, + only the `pci' name from hwloc 1.7 is now recognized. + - The HWLOC_PCI___LOCALCPUS environment variables are superseded + with a single HWLOC_PCI_LOCALITY where bus ranges may be specified. + - Do not set PCI devices and bridges name automatically. Vendor and device + names are already in info attributes. + + Components and discovery + - Add HWLOC_SYNTHETIC environment variable to enforce a synthetic topology + as if hwloc_topology_set_synthetic() had been called. + - HWLOC_COMPONENTS doesn't support xml or synthetic component attributes + anymore, they should be passed in HWLOC_XMLFILE or HWLOC_SYNTHETIC instead. + - HWLOC_COMPONENTS takes precedence over other environment variables + for selecting components. + + hwloc now requires a C99 compliant compiler. + + +Version 1.11.13 (also included in 2.0.4) +--------------- +* Add support for Linux 5.3 new sysfs cpu topology files with Die information. +* Add support for Intel v2 Extended Topology Enumeration in the x86 backend. +* Tiles, Modules and Dies are exposed as Groups for now. + + HWLOC_DONT_MERGE_DIE_GROUPS=1 may be set in the environment to prevent + Die groups from being automatically merged with identical parent or children. +* Ignore NUMA node information from AMD topoext in the x86 backend, + unless HWLOC_X86_TOPOEXT_NUMANODES=1 is set in the environment. +* Group objects have a new "dont_merge" attribute to prevent them from + being automatically merged with identical parent or children. + + +Version 1.11.12 (also included in 2.0.3) +--------------- +* Fix a corner case of hwloc_topology_restrict() where children would + become out-of-order. +* Fix the return length of export_xmlbuffer() functions to always + include the ending \0. + + +Version 1.11.11 (also included in 2.0.2) +--------------- +* Add support for Hygon Dhyana processors in the x86 backend, + thanks to Pu Wen for the patch. +* Fix symbol renaming to also rename internal components, + thanks to Evan Ramos for the patch. +* Fix build on HP-UX, thanks to Richard Lloyd for reporting the issues. +* Detect PCI link speed without being root on Linux >= 4.13. + + +Version 1.11.10 (also included in 2.0.1) +--------------- +* Fix detection of cores and hyperthreads on Mac OS X. +* Serialize pciaccess discovery to fix concurrent topology loads in + multiple threads. +* Fix first touch area memory binding on Linux when thread memory + binding is different. +* Some minor fixes to memory binding. +* Fix hwloc-dump-hwdata to only process SMBIOS information that correspond + to the KNL and KNM configuration. +* Add a heuristic for guessing KNL/KNM memory and cluster modes when + hwloc-dump-hwdata could not run as root earlier. +* Fix discovery of NVMe OS devices on Linux >= 4.0. +* Add get_area_memlocation() on Windows. +* Add CPUVendor, Model, ... attributes on Mac OS X. + + +Version 1.11.9 +-------------- +* Add support for Zhaoxin ZX-C and ZX-D processors in the x86 backend, + thanks to Jeff Zhao for the patch. +* Fix AMD Epyc 24-core L3 cache locality in the x86 backend. +* Don't crash in the x86 backend when the CPUID vendor string is unknown. +* Fix the missing pu discovery support bit on some OS. +* Fix the management of the lstopoStyle info attribute for custom colors. +* Add verbose warnings when failing to load hwloc v2.0+ XMLs. + + +Version 1.11.8 +-------------- +* Multiple Solaris improvements, thanks to Maureen Chew for the help: + + Detect caches on Sparc. + + Properly detect allowed/disallowed PUs and NUMA nodes with processor sets. + + Add hwloc_get_last_cpu_location() support for the current thread. +* Add support for CUDA compute capability 7.0 and fix support for 6.[12]. +* Tools improvements + + Fix search for objects by physical index in command-line tools. + + Add missing "cpubind:get_thisthread_last_cpu_location" in the output + of hwloc-info --support. + + Add --pid and --name to specify target processes in hwloc-ps. + + Display thread names in lstopo and hwloc-ps on Linux. +* Doc improvements + + Add a FAQ entry about building on Windows. + + Install missing sub-manpage for hwloc_obj_add_info() and + hwloc_obj_get_info_by_name(). + + +Version 1.11.7 +-------------- +* Fix hwloc-bind --membind for CPU-less NUMA nodes (again). + Thanks to Gilles Gouaillardet for reporting the issue. +* Fix a memory leak on IBM S/390 platforms running Linux. +* Fix a memory leak when forcing the x86 backend first on amd64/topoext + platforms running Linux. +* Command-line tools now support "hbm" instead "numanode" for filtering + only high-bandwidth memory nodes when selecting locations. + + hwloc-bind also support --hbm and --no-hbm for filtering only or + no HBM nodes. + Thanks to Nicolas Denoyelle for the suggestion. +* Add --children and --descendants to hwloc-info for listing object + children or object descendants of a specific type. +* Add --no-index, --index, --no-attrs, --attrs to disable/enable display + of index numbers or attributes in the graphical lstopo output. +* Try to gather hwloc-dump-hwdata output from all possible locations + in hwloc-gather-topology. +* Updates to the documentation of locations in hwloc(7) and + command-line tools manpages. + + +Version 1.11.6 +-------------- +* Make the Linux discovery about twice faster, especially on the CPU side, + by trying to avoid sysfs file accesses as much as possible. +* Add support for AMD Family 17h processors (Zen) SMT cores in the Linux + and x86 backends. +* Add the HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES flag (and the + HWLOC_THISSYSTEM_ALLOWED_RESOURCES environment variable) for reading the + set of allowed resources from the local operating system even if the + topology was loaded from XML or synthetic. +* Fix hwloc_bitmap_set/clr_range() for infinite ranges that do not + overlap currently defined ranges in the bitmap. +* Don't reset the lstopo zoom scale when moving the X11 window. +* lstopo now has --flags for manually setting topology flags. +* hwloc_get_depth_type() returns HWLOC_TYPE_DEPTH_UNKNOWN for Misc objects. + + +Version 1.11.5 +-------------- +* Add support for Knights Mill Xeon Phi, thanks to Piotr Luc for the patch. +* Reenable distance gathering on Solaris, disabled by mistake since v1.0. + Thanks to TU Wien for the help. +* Fix hwloc_get_*obj*_inside_cpuset() functions to ignore objects with + empty CPU sets, for instance, CPU-less NUMA nodes such as KNL MCDRAM. + Thanks to Nicolas Denoyelle for the report. +* Fix XML import of multiple distance matrices. +* Add a FAQ entry about "hwloc is only a structural model, it ignores + performance models, memory bandwidth, etc.?" + + +Version 1.11.4 +-------------- +* Add MemoryMode and ClusterMode attributes in the Machine object on KNL. + Add doc/examples/get-knl-modes.c for an example of retrieving them. + Thanks to Grzegorz Andrejczuk. +* Fix Linux build with -m32 with respect to libudev. + Thanks to Paul Hargrove for reporting the issue. +* Fix build with Visual Studio 2015, thanks to Eloi Gaudry for reporting + the issue and providing the patch. +* Don't forget to display OS device children in the graphical lstopo. +* Fix a memory leak on Solaris, thanks to Bryon Gloden for the patch. +* Properly handle realloc() failures, thanks to Bryon Gloden for reporting + the issue. +* Fix lstopo crash in ascii/fig/windows outputs when some objects have a + lstopoStyle info attribute. + + +Version 1.11.3 +-------------- +* Bug fixes + + Fix a memory leak on Linux S/390 hosts with books. + + Fix /proc/mounts parsing on Linux by using mntent.h. + Thanks to Nathan Hjelm for reporting the issue. + + Fix a x86 infinite loop on VMware due to the x2APIC feature being + advertised without actually being fully supported. + Thanks to Jianjun Wen for reporting the problem and testing the patch. + + Fix the return value of hwloc_alloc() on mmap() failure. + Thanks to Hugo Brunie for reporting the issue. + + Fix the return value of command-line tools in some error cases. + + Do not break individual thread bindings during x86 backend discovery in a + multithreaded process. Thanks to Farouk Mansouri for the report. + + Fix hwloc-bind --membind for CPU-less NUMA nodes. + + Fix some corner cases in the XML export/import of application userdata. +* API Improvements + + Add HWLOC_MEMBIND_BYNODESET flag so that membind() functions accept + either cpusets or nodesets. + + Add hwloc_get_area_memlocation() to check where pages are actually + allocated. Only implemented on Linux for now. + - There's no _nodeset() variant, but the new flag HWLOC_MEMBIND_BYNODESET + is supported. + + Make hwloc_obj_type_sscanf() parse back everything that may be outputted + by hwloc_obj_type_snprintf(). +* Detection Improvements + + Allow the x86 backend to add missing cache levels, so that it completes + what the Solaris backend lacks. + Thanks to Ryan Zezeski for reporting the issue. + + Do not filter-out FibreChannel PCI adapters by default anymore. + Thanks to Matt Muggeridge for the report. + + Add support for CUDA compute capability 6.x. +* Tools + + Add --support to hwloc-info to list supported features, just like with + hwloc_topology_get_support(). + - Also add --objects and --topology to explicitly switch between the + default modes. + + Add --tid to let hwloc-bind operate on individual threads on Linux. + + Add --nodeset to let hwloc-bind report memory binding as NUMA node sets. + + hwloc-annotate and lstopo don't drop application userdata from XMLs anymore. + - Add --cu to hwloc-annotate to drop these application userdata. + + Make the hwloc-dump-hwdata dump directory configurable through configure + options such as --runstatedir or --localstatedir. +* Misc Improvements + + Add systemd service template contrib/systemd/hwloc-dump-hwdata.service + for launching hwloc-dump-hwdata at boot on Linux. + Thanks to Grzegorz Andrejczuk. + + Add HWLOC_PLUGINS_BLACKLIST environment variable to prevent some plugins + from being loaded. Thanks to Alexandre Denis for the suggestion. + + Small improvements for various Windows build systems, + thanks to Jonathan L Peyton and Marco Atzeri. + + +Version 1.11.2 +-------------- +* Improve support for Intel Knights Landing Xeon Phi on Linux: + + Group local NUMA nodes of normal memory (DDR) and high-bandwidth memory + (MCDRAM) together through "Cluster" groups so that the local MCDRAM is + easy to find. + - See "How do I find the local MCDRAM NUMA node on Intel Knights + Landing Xeon Phi?" in the documentation. + - For uniformity across all KNL configurations, always have a NUMA node + object even if the host is UMA. + + Fix the detection of the memory-side cache: + - Add the hwloc-dump-hwdata superuser utility to dump SMBIOS information + into /var/run/hwloc/ as root during boot, and load this dumped + information from the hwloc library at runtime. + - See "Why do I need hwloc-dump-hwdata for caches on Intel Knights + Landing Xeon Phi?" in the documentation. + Thanks to Grzegorz Andrejczuk for the patches and for the help. +* The x86 and linux backends may now be combined for discovering CPUs + through x86 CPUID and memory from the Linux kernel. + This is useful for working around buggy CPU information reported by Linux + (for instance the AMD Bulldozer/Piledriver bug below). + Combination is enabled by passing HWLOC_COMPONENTS=x86 in the environment. +* Fix L3 cache sharing on AMD Opteron 63xx (Piledriver) and 62xx (Bulldozer) + in the x86 backend. Thanks to many users who helped. +* Fix the overzealous L3 cache sharing fix added to the x86 backend in 1.11.1 + for AMD Opteron 61xx (Magny-Cours) processors. +* The x86 backend may now add the info attribute Inclusive=0 or 1 to caches + it discovers, or to caches discovered by other backends earlier. + Thanks to Guillaume Beauchamp for the patch. +* Fix the management on alloc_membind() allocation failures on AIX, HP-UX + and OSF/Tru64. +* Fix spurious failures to load with ENOMEM on AIX in case of Misc objects + below PUs. +* lstopo improvements in X11 and Windows graphical mode: + + Add + - f 1 shortcuts to manually zoom-in, zoom-out, reset the scale, + or fit the entire window. + + Display all keyboard shortcuts in the console. +* Debug messages may be disabled at runtime by passing HWLOC_DEBUG_VERBOSE=0 + in the environment when --enable-debug was passed to configure. +* Add a FAQ entry "What are these Group objects in my topology?". + + +Version 1.11.1 +-------------- +* Detection fixes + + Hardwire the topology of Fujitsu K-computer, FX10, FX100 servers to + workaround buggy Linux kernels. + Thanks to Takahiro Kawashima and Gilles Gouaillardet. + + Fix L3 cache information on AMD Opteron 61xx Magny-Cours processors + in the x86 backend. Thanks to Guillaume Beauchamp for the patch. + + Detect block devices directly attached to PCI without a controller, + for instance NVMe disks. Thanks to Barry M. Tannenbaum. + + Add the PCISlot attribute to all PCI functions instead of only the + first one. +* Miscellaneous internal fixes + + Ignore PCI bridges that could fail assertions by reporting buggy + secondary-subordinate bus numbers + Thanks to George Bosilca for reporting the issue. + + Fix an overzealous assertion when inserting an intermediate Group object + while Groups are totally ignored. + + Fix a memory leak on Linux on AMD processors with dual-core compute units. + Thanks to Bob Benner. + + Fix a memory leak on failure to load a xml diff file. + + Fix some segfaults when inputting an invalid synthetic description. + + Fix a segfault when plugins fail to find core symbols. + Thanks to Guy Streeter. +* Many fixes and improvements in the Windows backend: + + Fix the discovery of more than 32 processors and multiple processor + groups. Thanks to Barry M. Tannenbaum for the help. + + Add thread binding set support in case of multiple process groups. + + Add thread binding get support. + + Add get_last_cpu_location() support for the current thread. + + Disable the unsupported process binding in case of multiple processor + groups. + + Fix/update the Visual Studio support under contrib/windows. + Thanks to Eloi Gaudry for the help. +* Tools fixes + + Fix a segfault when displaying logical indexes in the graphical lstopo. + Thanks to Guillaume Mercier for reporting the issue. + + Fix lstopo linking with X11 libraries, for instance on Mac OS X. + Thanks to Scott Atchley and Pierre Ramet for reporting the issue. + + hwloc-annotate, hwloc-diff and hwloc-patch do not drop unavailable + resources from the output anymore and those may be annotated as well. + + Command-line tools may now import XML from the standard input with -i -.xml + + Add missing documentation for the hwloc-info --no-icaches option. + + +Version 1.11.0 +-------------- +* API + + Socket objects are renamed into Package to align with the terminology + used by processor vendors. The old HWLOC_OBJ_SOCKET type and "Socket" + name are still supported for backward compatibility. + + HWLOC_OBJ_NODE is replaced with HWLOC_OBJ_NUMANODE for clarification. + HWLOC_OBJ_NODE is still supported for backward compatibility. + "Node" and "NUMANode" strings are supported as in earlier releases. +* Detection improvements + + Add support for Intel Knights Landing Xeon Phi. + Thanks to Grzegorz Andrejczuk and Lukasz Anaczkowski. + + Add Vendor, Model, Revision, SerialNumber, Type and LinuxDeviceID + info attributes to Block OS devices on Linux. Thanks to Vineet Pedaballe + for the help. + - Add --disable-libudev to avoid dependency on the libudev library. + + Add "MemoryModule" Misc objects with information about DIMMs, on Linux + when privileged and when I/O is enabled. + Thanks to Vineet Pedaballe for the help. + + Add a PCISlot attribute to PCI devices on Linux when supported to + identify the physical PCI slot where the board is plugged. + + Add CPUStepping info attribute on x86 processors, + thanks to Thomas Röhl for the suggestion. + + Ignore the device-tree on non-Power architectures to avoid buggy + detection on ARM. Thanks to Orion Poplawski for reporting the issue. + + Work-around buggy Xeon E5v3 BIOS reporting invalid PCI-NUMA affinity + for the PCI links on the second processor. + + Add support for CUDA compute capability 5.x, thanks Benjamin Worpitz. + + Many fixes to the x86 backend + - Add L1i and fix L2/L3 type on old AMD processors without topoext support. + - Fix Intel CPU family and model numbers when basic family isn't 6 or 15. + - Fix package IDs on recent AMD processors. + - Fix misc issues due to incomplete APIC IDs on x2APIC processors. + - Avoid buggy discovery on old SGI Altix UVs with non-unique APIC IDs. + + Gather total machine memory on NetBSD. +* Tools + + lstopo + - Collapse identical PCI devices unless --no-collapse is given. + This avoids gigantic outputs when a PCI device contains dozens of + identical virtual functions. + - The ASCII art output is now called "ascii", for instance in + "lstopo -.ascii". + The former "txt" extension is retained for backward compatibility. + - Automatically scales graphical box width to the inner text in Cairo, + ASCII and Windows outputs. + - Add --rect to lstopo to force rectangular layout even for NUMA nodes. + - Add --restrict-flags to configure the behavior of --restrict. + - Objects may have a "Type" info attribute to specify a better type name + and display it in lstopo. + - Really export all verbose information to the given output file. + + hwloc-annotate + - May now operate on all types of objects, including I/O. + - May now insert Misc objects in the topology. + - Do not drop instruction caches and I/O devices from the output anymore. + + Fix lstopo path in hwloc-gather-topology after install. +* Misc + + Fix hwloc/cudart.h for machines with multiple PCI domains, + thanks to Imre Kerr for reporting the problem. + + Fix PCI Bridge-specific depth attribute. + + Fix hwloc_bitmap_intersect() for two infinite bitmaps. + + Fix some corner cases in the building of levels on large NUMA machines + with non-uniform NUMA groups and I/Os. + + Improve the performance of object insertion by cpuset for large + topologies. + + Prefix verbose XML import errors with the source name. + + Improve pkg-config checks and error messages. + + Fix excluding after a component with an argument in the HWLOC_COMPONENTS + environment variable. +* Documentation + + Fix the recommended way in documentation and examples to allocate memory + on some node, it should use HWLOC_MEMBIND_BIND. + Thanks to Nicolas Bouzat for reporting the issue. + + Add a "Miscellaneous objects" section in the documentation. + + Add a FAQ entry "What happens to my topology if I disable symmetric + multithreading, hyper-threading, etc. ?" to the documentation. + + +Version 1.10.1 +-------------- +* Actually remove disallowed NUMA nodes from nodesets when the whole-system + flag isn't enabled. +* Fix the gathering of PCI domains. Thanks to James Custer for reporting + the issue and providing a patch. +* Fix the merging of identical parent and child in presence of Misc objects. + Thanks to Dave Love for reporting the issue. +* Fix some misordering of children when merging with ignore_keep_structure() + in partially allowed topologies. +* Fix an overzealous assertion in the debug code when running on a single-PU + host with I/O. Thanks to Thomas Van Doren for reporting the issue. +* Don't forget to setup NUMA node object nodesets in x86 backend (for BSDs) + and OSF/Tru64 backend. +* Fix cpuid-x86 build error with gcc -O3 on x86-32. Thanks to Thomas Van Doren + for reporting the issue. +* Fix support for future very large caches in the x86 backend. +* Fix vendor/device names for SR-IOV PCI devices on Linux. +* Fix an unlikely crash in case of buggy hierarchical distance matrix. +* Fix PU os_index on some AIX releases. Thanks to Hendryk Bockelmann and + Erik Schnetter for helping debugging. +* Fix hwloc_bitmap_isincluded() in case of infinite sets. +* Change hwloc-ls.desktop into a lstopo.desktop and only install it if + lstopo is built with Cairo/X11 support. It cannot work with a non-graphical + lstopo or hwloc-ls. +* Add support for the renaming of Socket into Package in future releases. +* Add support for the replacement of HWLOC_OBJ_NODE with HWLOC_OBJ_NUMANODE + in future releases. +* Clarify the documentation of distance matrices in hwloc.h and in the manpage + of the hwloc-distances. Thanks to Dave Love for the suggestion. +* Improve some error messages by displaying more information about the + hwloc library in use. +* Document how to deal with the ABI break when upgrading to the upcoming 2.0 + See "How do I handle ABI breaks and API upgrades ?" in the FAQ. + + +Version 1.10.0 +-------------- +* API + + Add hwloc_topology_export_synthetic() to export a topology to a + synthetic string without using lstopo. See the Synthetic topologies + section in the documentation. + + Add hwloc_topology_set/get_userdata() to let the application save + a private pointer in the topology whenever it needs a way to find + its own object corresponding to a topology. + + Add hwloc_get_numanode_obj_by_os_index() and document that this function + as well as hwloc_get_pu_obj_by_os_index() are good at converting + nodesets and cpusets into objects. + + hwloc_distrib() does not ignore any objects anymore when there are + too many of them. They get merged with others instead. + Thanks to Tim Creech for reporting the issue. +* Tools + + hwloc-bind --get now executes the command after displaying + the binding instead of ignoring the command entirely. + Thanks to John Donners for the suggestion. + + Clarify that memory sizes shown in lstopo are local by default + unless specified (total memory added in the root object). +* Synthetic topologies + + Synthetic topology descriptions may now specify attributes such as + memory sizes and OS indexes. See the Synthetic topologies section + in the documentation. + + lstopo now exports in this fully-detailed format by default. + The new option --export-synthetic-flags may be used to revert + back the old format. +* Documentation + + Add the doc/examples/ subdirectory with several real-life examples, + including the already existing hwloc-hello.C for basics. + Thanks to Rob Aulwes for the suggestion. + + Improve the documentation of CPU and memory binding in the API. + + Add a FAQ entry about operating system errors, especially on AMD + platforms with buggy cache information. + + Add a FAQ entry about loading many topologies in a single program. +* Misc + + Work around buggy Linux kernels reporting 2 sockets instead + 1 socket with 2 NUMA nodes for each Xeon E5 v3 (Haswell) processor. + + pciutils/libpci support is now removed since libpciaccess works + well and there's also a Linux-specific PCI backend. For the record, + pciutils was GPL and therefore disabled by default since v1.6.2. + + Add --disable-cpuid configure flag to work around buggy processor + simulators reporting invalid CPUID information. + Thanks for Andrew Friedley for reporting the issue. + + Fix a racy use of libltdl when manipulating multiple topologies in + different threads. + Thanks to Andra Hugo for reporting the issue and testing patches. + + Fix some build failures in private/misc.h. + Thanks to Pavan Balaji and Ralph Castain for the reports. + + Fix failures to detect X11/Xutil.h on some Solaris platforms. + Thanks to Siegmar Gross for reporting the failure. + + The plugin ABI has changed, this release will not load plugins + built against previous hwloc releases. + + +Version 1.9.1 +------------- +* Fix a crash when the PCI locality is invalid. Attach to the root object + instead. Thanks to Nicolas Denoyelle for reporting the issue. +* Fix -f in lstopo manpage. Thanks to Jirka Hladky for reporting the issue. +* Fix hwloc_obj_type_sscanf() and others when strncasecmp() is not properly + available. Thanks to Nick Papior Andersen for reporting the problem. +* Mark Linux file descriptors as close-on-exec to avoid leaks on exec. +* Fix some minor memory leaks. + + +Version 1.9.0 +------------- +* API + + Add hwloc_obj_type_sscanf() to extend hwloc_obj_type_of_string() with + type-specific attributes such as Cache/Group depth and Cache type. + hwloc_obj_type_of_string() is moved to hwloc/deprecated.h. + + Add hwloc_linux_get_tid_last_cpu_location() for retrieving the + last CPU where a Linux thread given by TID ran. + + Add hwloc_distrib() to extend the old hwloc_distribute[v]() functions. + hwloc_distribute[v]() is moved to hwloc/deprecated.h. + + Don't mix total and local memory when displaying verbose object attributes + with hwloc_obj_attr_snprintf() or in lstopo. +* Backends + + Add CPUVendor, CPUModelNumber and CPUFamilyNumber info attributes for + x86, ia64 and Xeon Phi sockets on Linux, to extend the x86-specific + support added in v1.8.1. Requested by Ralph Castain. + + Add many CPU- and Platform-related info attributes on ARM and POWER + platforms, in the Machine and Socket objects. + + Add CUDA info attributes describing the number of multiprocessors and + cores and the size of the global, shared and L2 cache memories in CUDA + OS devices. + + Add OpenCL info attributes describing the number of compute units and + the global memory size in OpenCL OS devices. + + The synthetic backend now accepts extended types such as L2Cache, L1i or + Group3. lstopo also exports synthetic strings using these extended types. +* Tools + + lstopo + - Do not overwrite output files by default anymore. + Pass -f or --force to enforce it. + - Display OpenCL, CUDA and Xeon Phi numbers of cores and memory sizes + in the graphical output. + - Fix export to stdout when specifying a Cairo-based output type + with --of. + + hwloc-ps + - Add -e or --get-last-cpu-location to report where processes/threads + run instead of where they are bound. + - Report locations as likely-more-useful objects such as Cores or Sockets + instead of Caches when possible. + + hwloc-bind + - Fix failure on Windows when not using --pid. + - Add -e as a synonym to --get-last-cpu-location. + + hwloc-distrib + - Add --reverse to distribute using last objects first and singlify + into last bits first. Thanks to Jirka Hladky for the suggestion. + + hwloc-info + - Report unified caches when looking for data or instruction cache + ancestor objects. +* Misc + + Add experimental Visual Studio support under contrib/windows. + Thanks to Eloi Gaudry for his help and for providing the first draft. + + Fix some overzealous assertions and warnings about the ordering of + objects on a level with respect to cpusets. The ordering is only + guaranteed for complete cpusets (based on the first bit in sets). + + Fix some memory leaks when importing xml diffs and when exporting a + "too complex" entry. + + +Version 1.8.1 +------------- +* Fix the cpuid code on Windows 64bits so that the x86 backend gets + enabled as expected and can populate CPU information. + Thanks to Robin Scher for reporting the problem. +* Add CPUVendor/CPUModelNumber/CPUFamilyNumber attributes when running + on x86 architecture. Thanks to Ralph Castain for the suggestion. +* Work around buggy BIOS reporting duplicate NUMA nodes on Linux. + Thanks to Jeff Becker for reporting the problem and testing the patch. +* Add a name to the lstopo graphical window. Thanks to Michael Prokop + for reporting the issue. + + +Version 1.8.0 +------------- +* New components + + Add the "linuxpci" component that always works on Linux even when + libpciaccess and libpci aren't available (and even with a modified + file-system root). By default the old "pci" component runs first + because "linuxpci" lacks device names (obj->name is always NULL). +* API + + Add the topology difference API in hwloc/diff.h for manipulating + many similar topologies. + + Add hwloc_topology_dup() for duplicating an entire topology. + + hwloc.h and hwloc/helper.h have been reorganized to clarify the + documentation sections. The actual inline code has moved out of hwloc.h + into the new hwloc/inlines.h. + + Deprecated functions are now in hwloc/deprecated.h, and not in the + official documentation anymore. +* Tools + + Add hwloc-diff and hwloc-patch tools together with the new diff API. + + Add hwloc-compress-dir to (de)compress an entire directory of XML files + using hwloc-diff and hwloc-patch. + + Object colors in the graphical output of lstopo may be changed by adding + a "lstopoStyle" info attribute. See CUSTOM COLORS in the lstopo(1) manpage + for details. Thanks to Jirka Hladky for discussing the idea. + + hwloc-gather-topology may now gather I/O-related files on Linux when + --io is given. Only the linuxpci component supports discovering I/O + objects from these extended tarballs. + + hwloc-annotate now supports --ri to remove/replace info attributes with + a given name. + + hwloc-info supports "root" and "all" special locations for dumping + information about the root object. + + lstopo now supports --append-legend to append custom lines of text + to the legend in the graphical output. Thanks to Jirka Hladky for + discussing the idea. + + hwloc-calc and friends have a more robust parsing of locations given + on the command-line and they report useful error messages about it. + + Add --whole-system to hwloc-bind, hwloc-calc, hwloc-distances and + hwloc-distrib, and add --restrict to hwloc-bind for uniformity among + tools. +* Misc + + Calling hwloc_topology_load() or hwloc_topology_set_*() on an already + loaded topology now returns an error (deprecated since release 1.6.1). + + Fix the initialisation of cpusets and nodesets in Group objects added + when inserting PCI hostbridges. + + Never merge Group objects that were added explicitly by the user with + hwloc_custom_insert_group_object_by_parent(). + + Add a sanity check during dynamic plugin loading to prevent some + crashes when hwloc is dynamically loaded by another plugin mechanisms. + + Add --with-hwloc-plugins-path to specify the install/load directories + of plugins. + + Add the MICSerialNumber info attribute to the root object when running + hwloc inside a Xeon Phi to match the same attribute in the MIC OS device + when running in the host. + + +Version 1.7.2 +------------- +* Do not create invalid block OS devices on very old Linux kernel such + as RHEL4 2.6.9. +* Fix PCI subvendor/device IDs. +* Fix the management of Misc objects inserted by parent. + Thanks to Jirka Hladky for reporting the problem. +* Add a PortState into attribute to OpenFabrics OS devices. +* Add a MICSerialNumber info attribute to Xeon PHI/MIC OS devices. +* Improve verbose error messages when failing to load from XML. + + +Version 1.7.1 +------------- +* Fix a failed assertion in the distance grouping code when loading a XML + file that already contains some groups. + Thanks to Laercio Lima Pilla for reporting the problem. +* Remove unexpected Group objects when loading XML topologies with I/O + objects and NUMA distances. + Thanks to Elena Elkina for reporting the problem and testing patches. +* Fix PCI link speed discovery when using libpciaccess. +* Fix invalid libpciaccess virtual function device/vendor IDs when using + SR-IOV PCI devices on Linux. +* Fix GL component build with old NVCtrl releases. + Thanks to Jirka Hladky for reporting the problem. +* Fix embedding breakage caused by libltdl. + Thanks to Pavan Balaji for reporting the problem. +* Always use the system-wide libltdl instead of shipping one inside hwloc. +* Document issues when enabling plugins while embedding hwloc in another + project, in the documentation section Embedding hwloc in Other Software. +* Add a FAQ entry "How to get useful topology information on NetBSD?" + in the documentation. +* Somes fixes in the renaming code for embedding. +* Miscellaneous minor build fixes. + + +Version 1.7.0 +------------- +* New operating system backends + + Add BlueGene/Q compute node kernel (CNK) support. See the FAQ in the + documentation for details. Thanks to Jeff Hammond, Christopher Samuel + and Erik Schnetter for their help. + + Add NetBSD support, thanks to Aleksej Saushev. +* New I/O device discovery + + Add co-processor OS devices such as "mic0" for Intel Xeon Phi (MIC) + on Linux. Thanks to Jerome Vienne for helping. + + Add co-processor OS devices such as "cuda0" for NVIDIA CUDA-capable GPUs. + + Add co-processor OS devices such as "opencl0d0" for OpenCL GPU devices + on the AMD OpenCL implementation. + + Add GPU OS devices such as ":0.0" for NVIDIA X11 displays. + + Add GPU OS devices such as "nvml0" for NVIDIA GPUs. + Thanks to Marwan Abdellah and Stefan Eilemann for helping. + These new OS devices have some string info attributes such as CoProcType, + GPUModel, etc. to better identify them. + See the I/O Devices and Attributes documentation sections for details. +* New components + + Add the "opencl", "cuda", "nvml" and "gl" components for I/O device + discovery. + + "nvml" also improves the discovery of NVIDIA GPU PCIe link speed. + All of these new components may be built as plugins. They may also be + disabled entirely by passing --disable-opencl/cuda/nvml/gl to configure. + See the I/O Devices, Components and Plugins, and FAQ documentation + sections for details. +* API + + Add hwloc_topology_get_flags(). + + Add hwloc/plugins.h for building external plugins. + See the Adding new discovery components and plugins section. +* Interoperability + + Add hwloc/opencl.h, hwloc/nvml.h, hwloc/gl.h and hwloc/intel-mic.h + to retrieve the locality of OS devices that correspond to AMD OpenCL + GPU devices or indexes, to NVML devices or indexes, to NVIDIA X11 + displays, or to Intel Xeon Phi (MIC) device indexes. + + Add new helpers in hwloc/cuda.h and hwloc/cudart.h to convert + between CUDA devices or indexes and hwloc OS devices. + + Add hwloc_ibv_get_device_osdev() and clarify the requirements + of the OpenFabrics Verbs helpers in hwloc/openfabrics-verbs.h. +* Tools + + hwloc-info is not only a synonym of lstopo -s anymore, it also + dumps information about objects given on the command-line. +* Documentation + + Add a section "Existing components and plugins". + + Add a list of common OS devices in section "Software devices". + + Add a new FAQ entry "Why is lstopo slow?" about lstopo slowness + issues because of GPUs. + + Clarify the documentation of inline helpers in hwloc/myriexpress.h + and hwloc/openfabrics-verbs.h. +* Misc + + Improve cache detection on AIX. + + The HWLOC_COMPONENTS variable now excludes the components whose + names are prefixed with '-'. + + lstopo --ignore PU now works when displaying the topology in + graphical and textual mode (not when exporting to XML). + + Make sure I/O options always appear in lstopo usage, not only when + using pciutils/libpci. + + Remove some unneeded Linux specific includes from some interoperability + headers. + + Fix some inconsistencies in hwloc-distrib and hwloc-assembler-remote + manpages. Thanks to Guy Streeter for the report. + + Fix a memory leak on AIX when getting memory binding. + + Fix many small memory leaks on Linux. + + The `libpci' component is now called `pci' but the old name is still + accepted in the HWLOC_COMPONENTS variable for backward compatibility. + + +Version 1.6.2 +------------- +* Use libpciaccess instead of pciutils/libpci by default for I/O discovery. + pciutils/libpci is only used if --enable-libpci is given to configure + because its GPL license may taint hwloc. See the Installation section + in the documentation for details. +* Fix get_cpubind on Solaris when bound to a single PU with + processor_bind(). Thanks to Eugene Loh for reporting the problem + and providing a patch. + + +Version 1.6.1 +------------- +* Fix some crash or buggy detection in the x86 backend when Linux + cgroups/cpusets restrict the available CPUs. +* Fix the pkg-config output with --libs --static. + Thanks to Erik Schnetter for reporting one of the problems. +* Fix the output of hwloc-calc -H --hierarchical when using logical + indexes in the output. +* Calling hwloc_topology_load() multiple times on the same topology + is officially deprecated. hwloc will warn in such cases. +* Add some documentation about existing plugins/components, package + dependencies, and I/O devices specification on the command-line. + + +Version 1.6.0 +------------- +* Major changes + + Reorganize the backend infrastructure to support dynamic selection + of components and dynamic loading of plugins. For details, see the + new documentation section Components and plugins. + - The HWLOC_COMPONENTS variable lets one replace the default discovery + components. + - Dynamic loading of plugins may be enabled with --enable-plugins + (except on AIX and Windows). It will build libxml2 and libpci + support as separated modules. This helps reducing the dependencies + of the core hwloc library when distributed as a binary package. +* Backends + + Add CPUModel detection on Darwin and x86/FreeBSD. + Thanks to Robin Scher for providing ways to implement this. + + The x86 backend now adds CPUModel info attributes to socket objects + created by other backends that do not natively support this attribute. + + Fix detection on FreeBSD in case of cpuset restriction. Thanks to + Sebastian Kuzminsky for reporting the problem. +* XML + + Add hwloc_topology_set_userdata_import/export_callback(), + hwloc_export_obj_userdata() and _userdata_base64() to let + applications specify how to save/restore the custom data they placed + in the userdata private pointer field of hwloc objects. +* Tools + + Add hwloc-annotate program to add string info attributes to XML + topologies. + + Add --pid-cmd to hwloc-ps to append the output of a command to each + PID line. May be used for showing Open MPI process ranks, see the + hwloc-ps(1) manpage for details. + + hwloc-bind now exits with an error if binding fails; the executable + is not launched unless binding suceeeded or --force was given. + + Add --quiet to hwloc-calc and hwloc-bind to hide non-fatal error + messages. + + Fix command-line pid support in windows tools. + + All programs accept --verbose as a synonym to -v. +* Misc + + Fix some DIR descriptor leaks on Linux. + + Fix I/O device lists when some were filtered out after a XML import. + + Fix the removal of I/O objects when importing a I/O-enabled XML topology + without any I/O topology flag. + + When merging objects with HWLOC_IGNORE_TYPE_KEEP_STRUCTURE or + lstopo --merge, compare object types before deciding which one of two + identical object to remove (e.g. keep sockets in favor of caches). + + Add some GUID- and LID-related info attributes to OpenFabrics + OS devices. + + Only add CPUType socket attributes on Solaris/Sparc. Other cases + don't report reliable information (Solaris/x86), and a replacement + is available as the Architecture string info in the Machine object. + + Add missing Backend string info on Solaris in most cases. + + Document object attributes and string infos in a new Attributes + section in the documentation. + + Add a section about Synthetic topologies in the documentation. + + +Version 1.5.2 (some of these changes are in 1.6.2 but not in 1.6) +------------- +* Use libpciaccess instead of pciutils/libpci by default for I/O discovery. + pciutils/libpci is only used if --enable-libpci is given to configure + because its GPL license may taint hwloc. See the Installation section + in the documentation for details. +* Fix get_cpubind on Solaris when bound to a single PU with + processor_bind(). Thanks to Eugene Loh for reporting the problem + and providing a patch. +* Fix some DIR descriptor leaks on Linux. +* Fix I/O device lists when some were filtered out after a XML import. +* Add missing Backend string info on Solaris in most cases. +* Fix the removal of I/O objects when importing a I/O-enabled XML topology + without any I/O topology flag. +* Fix the output of hwloc-calc -H --hierarchical when using logical + indexes in the output. +* Fix the pkg-config output with --libs --static. + Thanks to Erik Schnetter for reporting one of the problems. + + +Version 1.5.1 +------------- +* Fix block OS device detection on Linux kernel 3.3 and later. + Thanks to Guy Streeter for reporting the problem and testing the fix. +* Fix the cpuid code in the x86 backend (for FreeBSD). Thanks to + Sebastian Kuzminsky for reporting problems and testing patches. +* Fix 64bit detection on FreeBSD. +* Fix some corner cases in the management of the thissystem flag with + respect to topology flags and environment variables. +* Fix some corner cases in command-line parsing checks in hwloc-distrib + and hwloc-distances. +* Make sure we do not miss some block OS devices on old Linux kernels + when a single PCI device has multiple IDE hosts/devices behind it. +* Do not disable I/O devices or instruction caches in hwloc-assembler output. + + +Version 1.5.0 +------------- +* Backends + + Do not limit the number of processors to 1024 on Solaris anymore. + + Gather total machine memory on FreeBSD. Thanks to Cyril Roelandt. + + XML topology files do not depend on the locale anymore. Float numbers + such as NUMA distances or PCI link speeds now always use a dot as a + decimal separator. + + Add instruction caches detection on Linux, AIX, Windows and Darwin. + + Add get_last_cpu_location() support for the current thread on AIX. + + Support binding on AIX when threads or processes were bound with + bindprocessor(). Thanks to Hendryk Bockelmann for reporting the issue + and testing patches, and to Farid Parpia for explaining the binding + interfaces. + + Improve AMD topology detection in the x86 backend (for FreeBSD) using + the topoext feature. +* API + + Increase HWLOC_API_VERSION to 0x00010500 so that API changes may be + detected at build-time. + + Add a cache type attribute describind Data, Instruction and Unified + caches. Caches with different types but same depth (for instance L1d + and L1i) are placed on different levels. + + Add hwloc_get_cache_type_depth() to retrieve the hwloc level depth of + of the given cache depth and type, for instance L1i or L2. + It helps disambiguating the case where hwloc_get_type_depth() returns + HWLOC_TYPE_DEPTH_MULTIPLE. + + Instruction caches are ignored unless HWLOC_TOPOLOGY_FLAG_ICACHES is + passed to hwloc_topology_set_flags() before load. + + Add hwloc_ibv_get_device_osdev_by_name() OpenFabrics helper in + openfabrics-verbs.h to find the hwloc OS device object corresponding to + an OpenFabrics device. +* Tools + + Add lstopo-no-graphics, a lstopo built without graphical support to + avoid dependencies on external libraries such as Cairo and X11. When + supported, graphical outputs are only available in the original lstopo + program. + - Packagers splitting lstopo and lstopo-no-graphics into different + packages are advised to use the alternatives system so that lstopo + points to the best available binary. + + Instruction caches are enabled in lstopo by default. Use --no-icaches + to disable them. + + Add -t/--threads to show threads in hwloc-ps. +* Removal of obsolete components + + Remove the old cpuset interface (hwloc/cpuset.h) which is deprecated and + superseded by the bitmap API (hwloc/bitmap.h) since v1.1. + hwloc_cpuset and nodeset types are still defined, but all hwloc_cpuset_* + compatibility wrappers are now gone. + + Remove Linux libnuma conversion helpers for the deprecated and + broken nodemask_t interface. + + Remove support for "Proc" type name, it was superseded by "PU" in v1.0. + + Remove hwloc-mask symlinks, it was replaced by hwloc-calc in v1.0. +* Misc + + Fix PCIe 3.0 link speed computation. + + Non-printable characters are dropped from strings during XML export. + + Fix importing of escaped characters with the minimalistic XML backend. + + Assert hwloc_is_thissystem() in several I/O related helpers. + + Fix some memory leaks in the x86 backend for FreeBSD. + + Minor fixes to ease native builds on Windows. + + Limit the number of retries when operating on all threads within a + process on Linux if the list of threads is heavily getting modified. + + +Version 1.4.3 +------------- +* This release is only meant to fix the pciutils license issue when upgrading + to hwloc v1.5 or later is not possible. It contains several other minor + fixes but ignores many of them that are only in v1.5 or later. +* Use libpciaccess instead of pciutils/libpci by default for I/O discovery. + pciutils/libpci is only used if --enable-libpci is given to configure + because its GPL license may taint hwloc. See the Installation section + in the documentation for details. +* Fix PCIe 3.0 link speed computation. +* Fix importing of escaped characters with the minimalistic XML backend. +* Fix a memory leak in the x86 backend. + + +Version 1.4.2 +------------- +* Fix build on Solaris 9 and earlier when fabsf() is not a compiler + built-in. Thanks to Igor Galić for reporting the problem. +* Fix support for more than 32 processors on Windows. Thanks to Hartmut + Kaiser for reporting the problem. +* Fix process-wide binding and cpulocation routines on Linux when some + threads disappear in the meantime. Thanks to Vlad Roubtsov for reporting + the issue. +* Make installed scripts executable. Thanks to Jirka Hladky for reporting + the problem. +* Fix libtool revision management when building for Windows. This fix was + also released as hwloc v1.4.1.1 Windows builds. Thanks to Hartmut Kaiser + for reporting the problem. +* Fix the __hwloc_inline keyword in public headers when compiling with a + C++ compiler. +* Add Port info attribute to network OS devices inside OpenFabrics PCI + devices so as to identify which interface corresponds to which port. +* Document requirements for interoperability helpers: I/O devices discovery + is required for some of them; the topology must match the current host + for most of them. + + +Version 1.4.1 (contains all 1.3.2 changes) +------------- +* Fix hwloc_alloc_membind, thanks Karl Napf for reporting the issue. +* Fix memory leaks in some get_membind() functions. +* Fix helpers converting from Linux libnuma to hwloc (hwloc/linux-libnuma.h) + in case of out-of-order NUMA node ids. +* Fix some overzealous assertions in the distance grouping code. +* Workaround BIOS reporting empty I/O locality in CUDA and OpenFabrics + helpers on Linux. Thanks to Albert Solernou for reporting the problem. +* Install a valgrind suppressions file hwloc-valgrind.supp (see the FAQ). +* Fix memory binding documentation. Thanks to Karl Napf for reporting the + issues. + + +Version 1.4.0 (does not contain all 1.3.2 changes) +------------- +* Major features + + Add "custom" interface and "assembler" tools to build multi-node + topology. See the Multi-node Topologies section in the documentation + for details. +* Interface improvements + + Add symmetric_subtree object attribute to ease assumptions when consulting + regular symmetric topologies. + + Add a CPUModel and CPUType info attribute to Socket objects on Linux + and Solaris. + + Add hwloc_get_obj_index_inside_cpuset() to retrieve the "logical" index + of an object within a subtree of the topology. + + Add more NVIDIA CUDA helpers in cuda.h and cudart.h to find hwloc objects + corresponding to CUDA devices. +* Discovery improvements + + Add a group object above partial distance matrices to make sure + the matrices are available in the final topology, except when this + new object would contradict the existing hierarchy. + + Grouping by distances now also works when loading from XML. + + Fix some corner cases in object insertion, for instance when dealing + with NUMA nodes without any CPU. +* Backends + + Implement hwloc_get_area_membind() on Linux. + + Honor I/O topology flags when importing from XML. + + Further improve XML-related error checking and reporting. + + Hide synthetic topology error messages unless HWLOC_SYNTHETIC_VERBOSE=1. +* Tools + + Add synthetic exporting of symmetric topologies to lstopo. + + lstopo --horiz and --vert can now be applied to some specific object types. + + lstopo -v -p now displays distance matrices with physical indexes. + + Add hwloc-distances utility to list distances. +* Documentation + + Fix and/or document the behavior of most inline functions in hwloc/helper.h + when the topology contains some I/O or Misc objects. + + Backend documentation enhancements. +* Bug fixes + + Fix missing last bit in hwloc_linux_get_thread_cpubind(). + Thanks to Carolina Gómez-Tostón Gutiérrez for reporting the issue. + + Fix FreeBSD build without cpuid support. + + Fix several Windows build issues. + + Fix inline keyword definition in public headers. + + Fix dependencies in the embedded library. + + Improve visibility support detection. Thanks to Dave Love for providing + the patch. + + Remove references to internal symbols in the tools. + + +Version 1.3.3 +------------- +* This release is only meant to fix the pciutils license issue when upgrading + to hwloc v1.4 or later is not possible. It contains several other minor + fixes but ignores many of them that are only in v1.4 or later. +* Use libpciaccess instead of pciutils/libpci by default for I/O discovery. + pciutils/libpci is only used if --enable-libpci is given to configure + because its GPL license may taint hwloc. See the Installation section + in the documentation for details. + + +Version 1.3.2 +------------- +* Fix missing last bit in hwloc_linux_get_thread_cpubind(). + Thanks to Carolina Gómez-Tostón Gutiérrez for reporting the issue. +* Fix build with -mcmodel=medium. Thanks to Devendar Bureddy for reporting + the issue. +* Fix build with Solaris Studio 12 compiler when XML is disabled. + Thanks to Paul H. Hargrove for reporting the problem. +* Fix installation with old GNU sed, for instance on Red Hat 8. + Thanks to Paul H. Hargrove for reporting the problem. +* Fix PCI locality when Linux cgroups restrict the available CPUs. +* Fix floating point issue when grouping by distance on mips64 architecture. + Thanks to Paul H. Hargrove for reporting the problem. +* Fix conversion from/to Linux libnuma when some NUMA nodes have no memory. +* Fix support for gccfss compilers with broken ffs() support. Thanks to + Paul H. Hargrove for reporting the problem and providing a patch. +* Fix FreeBSD build without cpuid support. +* Fix several Windows build issues. +* Fix inline keyword definition in public headers. +* Fix dependencies in the embedded library. +* Detect when a compiler such as xlc may not report compile errors + properly, causing some configure checks to be wrong. Thanks to + Paul H. Hargrove for reporting the problem and providing a patch. +* Improve visibility support detection. Thanks to Dave Love for providing + the patch. +* Remove references to internal symbols in the tools. +* Fix installation on systems with limited command-line size. + Thanks to Paul H. Hargrove for reporting the problem. +* Further improve XML-related error checking and reporting. + + +Version 1.3.1 +------------- +* Fix pciutils detection with pkg-config when not installed in standard + directories. +* Fix visibility options detection with the Solaris Studio compiler. + Thanks to Igor Galić and Terry Dontje for reporting the problems. +* Fix support for old Linux sched.h headers such as those found + on Red Hat 8. Thanks to Paul H. Hargrove for reporting the problems. +* Fix inline and attribute support for Solaris compilers. Thanks to + Dave Love for reporting the problems. +* Print a short summary at the end of the configure output. Thanks to + Stefan Eilemann for the suggestion. +* Add --disable-libnuma configure option to disable libnuma-based + memory binding support on Linux. Thanks to Rayson Ho for the + suggestion. +* Make hwloc's configure script properly obey $PKG_CONFIG. Thanks to + Nathan Phillip Brink for raising the issue. +* Silence some harmless pciutils warnings, thanks to Paul H. Hargrove + for reporting the problem. +* Fix the documentation with respect to hwloc_pid_t and hwloc_thread_t + being either pid_t and pthread_t on Unix, or HANDLE on Windows. + + +Version 1.3.0 +------------- +* Major features + + Add I/O devices and bridges to the topology using the pciutils + library. Only enabled after setting the relevant flag with + hwloc_topology_set_flags() before hwloc_topology_load(). See the + I/O Devices section in the documentation for details. +* Discovery improvements + + Add associativity to the cache attributes. + + Add support for s390/z11 "books" on Linux. + + Add the HWLOC_GROUPING_ACCURACY environment variable to relax + distance-based grouping constraints. See the Environment Variables + section in the documentation for details about grouping behavior + and configuration. + + Allow user-given distance matrices to remove or replace those + discovered by the OS backend. +* XML improvements + + XML is now always supported: a minimalistic custom import/export + code is used when libxml2 is not available. It is only guaranteed + to read XML files generated by hwloc. + + hwloc_topology_export_xml() and export_xmlbuffer() now return an + integer. + + Add hwloc_free_xmlbuffer() to free the buffer allocated by + hwloc_topology_export_xmlbuffer(). + + Hide XML topology error messages unless HWLOC_XML_VERBOSE=1. +* Minor API updates + + Add hwloc_obj_add_info to customize object info attributes. +* Tools + + lstopo now displays I/O devices by default. Several options are + added to configure the I/O discovery. + + hwloc-calc and hwloc-bind now accept I/O devices as input. + + Add --restrict option to hwloc-calc and hwloc-distribute. + + Add --sep option to change the output field separator in hwloc-calc. + + Add --whole-system option to hwloc-ps. + + +Version 1.2.2 +------------- +* Fix build on AIX 5.2, thanks Utpal Kumar Ray for the report. +* Fix XML import of very large page sizes or counts on 32bits platform, + thanks to Karsten Hopp for the RedHat ticket. +* Fix crash when administrator limitations such as Linux cgroup require + to restrict distance matrices. Thanks to Ake Sandgren for reporting the + problem. +* Fix the removal of objects such as AMD Magny-Cours dual-node sockets + in case of administrator restrictions. +* Improve error reporting and messages in case of wrong synthetic topology + description. +* Several other minor internal fixes and documentation improvements. + + +Version 1.2.1 +------------- +* Improve support of AMD Bulldozer "Compute-Unit" modules by detecting + logical processors with different core IDs on Linux. +* Fix hwloc-ps crash when listing processes from another Linux cpuset. + Thanks to Carl Smith for reporting the problem. +* Fix build on AIX and Solaris. Thanks to Carl Smith and Andreas Kupries + for reporting the problems. +* Fix cache size detection on Darwin. Thanks to Erkcan Özcan for reporting + the problem. +* Make configure fail if --enable-xml or --enable-cairo is given and + proper support cannot be found. Thanks to Andreas Kupries for reporting + the XML problem. +* Fix spurious L1 cache detection on AIX. Thanks to Hendryk Bockelmann + for reporting the problem. +* Fix hwloc_get_last_cpu_location(THREAD) on Linux. Thanks to Gabriele + Fatigati for reporting the problem. +* Fix object distance detection on Solaris. +* Add pthread_self weak symbol to ease static linking. +* Minor documentation fixes. + + +Version 1.2.0 +------------- +* Major features + + Expose latency matrices in the API as an array of distance structures + within objects. Add several helpers to find distances. + + Add hwloc_topology_set_distance_matrix() and environment variables + to provide a matrix of distances between a given set of objects. + + Add hwloc_get_last_cpu_location() and hwloc_get_proc_last_cpu_location() + to retrieve the processors where a process or thread recently ran. + - Add the corresponding --get-last-cpu-location option to hwloc-bind. + + Add hwloc_topology_restrict() to restrict an existing topology to a + given cpuset. + - Add the corresponding --restrict option to lstopo. +* Minor API updates + + Add hwloc_bitmap_list_sscanf/snprintf/asprintf to convert between bitmaps + and strings such as 4-5,7-9,12,15- + + hwloc_bitmap_set/clr_range() now support infinite ranges. + + Clarify the difference between inserting Misc objects by cpuset or by + parent. + + hwloc_insert_misc_object_by_cpuset() now returns NULL in case of error. +* Discovery improvements + + x86 backend (for freebsd): add x2APIC support + + Support standard device-tree phandle, to get better support on e.g. ARM + systems providing it. + + Detect cache size on AIX. Thanks Christopher and IBM. + + Improve grouping to support asymmetric topologies. +* Tools + + Command-line tools now support "all" and "root" special locations + consisting in the entire topology, as well as type names with depth + attributes such as L2 or Group4. + + hwloc-calc improvements: + - Add --number-of/-N option to report the number of objects of a given + type or depth. + - -I is now equivalent to --intersect for listing the indexes of + objects of a given type or depth that intersects the input. + - Add -H to report the output as a hierarchical combination of types + and depths. + + Add --thissystem to lstopo. + + Add lstopo-win, a console-less lstopo variant on Windows. +* Miscellaneous + + Remove C99 usage from code base. + + Rename hwloc-gather-topology.sh into hwloc-gather-topology + + Fix AMD cache discovery on freebsd when there is no L3 cache, thanks + Andriy Gapon for the fix. + + +Version 1.1.2 +------------- +* Fix a segfault in the distance-based grouping code when some objects + are not placed in any group. Thanks to Bernd Kallies for reporting + the problem and providing a patch. +* Fix the command-line parsing of hwloc-bind --mempolicy interleave. + Thanks to Guy Streeter for reporting the problem. +* Stop truncating the output in hwloc_obj_attr_snprintf() and in the + corresponding lstopo output. Thanks to Guy Streeter for reporting the + problem. +* Fix object levels ordering in synthetic topologies. +* Fix potential incoherency between device tree and kernel information, + when SMT is disabled on Power machines. +* Fix and document the behavior of hwloc_topology_set_synthetic() in case + of invalid argument. Thanks to Guy Streeter for reporting the problem. +* Add some verbose error message reporting when it looks like the OS + gives erroneous information. +* Do not include unistd.h and stdint.h in public headers on Windows. +* Move config.h files into their own subdirectories to avoid name + conflicts when AC_CONFIG_HEADERS adds -I's for them. +* Remove the use of declaring variables inside "for" loops. +* Some other minor fixes. +* Many minor documentation fixes. + + +Version 1.1.1 +------------- +* Add hwloc_get_api_version() which returns the version of hwloc used + at runtime. Thanks to Guy Streeter for the suggestion. +* Fix the number of hugepages reported for NUMA nodes on Linux. +* Fix hwloc_bitmap_to_ulong() right after allocating the bitmap. + Thanks to Bernd Kallies for reporting the problem. +* Fix hwloc_bitmap_from_ith_ulong() to properly zero the first ulong. + Thanks to Guy Streeter for reporting the problem. +* Fix hwloc_get_membind_nodeset() on Linux. + Thanks to Bernd Kallies for reporting the problem and providing a patch. +* Fix some file descriptor leaks in the Linux discovery. +* Fix the minimum width of NUMA nodes, caches and the legend in the graphical + lstopo output. Thanks to Jirka Hladky for reporting the problem. +* Various fixes to bitmap conversion from/to taskset-strings. +* Fix and document snprintf functions behavior when the buffer size is too + small or zero. Thanks to Guy Streeter for reporting the problem. +* Fix configure to avoid spurious enabling of the cpuid backend. + Thanks to Tim Anderson for reporting the problem. +* Cleanup error management in hwloc-gather-topology.sh. + Thanks to Jirka Hladky for reporting the problem and providing a patch. +* Add a manpage and usage for hwloc-gather-topology.sh on Linux. + Thanks to Jirka Hladky for providing a patch. +* Memory binding documentation enhancements. + + +Version 1.1.0 +------------- + +* API + + Increase HWLOC_API_VERSION to 0x00010100 so that API changes may be + detected at build-time. + + Add a memory binding interface. + + The cpuset API (hwloc/cpuset.h) is now deprecated. It is replaced by + the bitmap API (hwloc/bitmap.h) which offers the same features with more + generic names since it applies to CPU sets, node sets and more. + Backward compatibility with the cpuset API and ABI is still provided but + it will be removed in a future release. + Old types (hwloc_cpuset_t, ...) are still available as a way to clarify + what kind of hwloc_bitmap_t each API function manipulates. + Upgrading to the new API only requires to replace hwloc_cpuset_ function + calls with the corresponding hwloc_bitmap_ calls, with the following + renaming exceptions: + - hwloc_cpuset_cpu -> hwloc_bitmap_only + - hwloc_cpuset_all_but_cpu -> hwloc_bitmap_allbut + - hwloc_cpuset_from_string -> hwloc_bitmap_sscanf + + Add an `infos' array in each object to store couples of info names and + values. It enables generic storage of things like the old dmi board infos + that were previously stored in machine specific attributes. + + Add linesize cache attribute. +* Features + + Bitmaps (and thus CPU sets and node sets) are dynamically (re-)allocated, + the maximal number of CPUs (HWLOC_NBMAXCPUS) has been removed. + + Improve the distance-based grouping code to better support irregular + distance matrices. + + Add support for device-tree to get cache information (useful on Power + architectures). +* Helpers + + Add NVIDIA CUDA helpers in cuda.h and cudart.h to ease interoperability + with CUDA Runtime and Driver APIs. + + Add Myrinet Express helper in myriexpress.h to ease interoperability. +* Tools + + lstopo now displays physical/OS indexes by default in graphical mode + (use -l to switch back to logical indexes). The textual output still uses + logical by default (use -p to switch to physical indexes). + + lstopo prefixes logical indexes with `L#' and physical indexes with `P#'. + Physical indexes are also printed as `P#N' instead of `phys=N' within + object attributes (in parentheses). + + Add a legend at the bottom of the lstopo graphical output, use --no-legend + to remove it. + + Add hwloc-ps to list process' bindings. + + Add --membind and --mempolicy options to hwloc-bind. + + Improve tools command-line options by adding a generic --input option + (and more) which replaces the old --xml, --synthetic and --fsys-root. + + Cleanup lstopo output configuration by adding --output-format. + + Add --intersect in hwloc-calc, and replace --objects with --largest. + + Add the ability to work on standard input in hwloc-calc. + + Add --from, --to and --at in hwloc-distrib. + + Add taskset-specific functions and command-line tools options to + manipulate CPU set strings in the format of the taskset program. + + Install hwloc-gather-topology.sh on Linux. + + +Version 1.0.3 +------------- + +* Fix support for Linux cpuset when emulated by a cgroup mount point. +* Remove unneeded runtime dependency on libibverbs.so in the library and + all utils programs. +* Fix hwloc_cpuset_to_linux_libnuma_ulongs in case of non-linear OS-indexes + for NUMA nodes. +* lstopo now displays physical/OS indexes by default in graphical mode + (use -l to switch back to logical indexes). The textual output still uses + logical by default (use -p to switch to physical indexes). + + +Version 1.0.2 +------------- + +* Public headers can now be included directly from C++ programs. +* Solaris fix for non-contiguous cpu numbers. Thanks to Rolf vandeVaart for + reporting the issue. +* Darwin 10.4 fix. Thanks to Olivier Cessenat for reporting the issue. +* Revert 1.0.1 patch that ignored sockets with unknown ID values since it + only slightly helped POWER7 machines with old Linux kernels while it + prevents recent kernels from getting the complete POWER7 topology. +* Fix hwloc_get_common_ancestor_obj(). +* Remove arch-specific bits in public headers. +* Some fixes in the lstopo graphical output. +* Various man page clarifications and minor updates. + + +Version 1.0.1 +------------- + +* Various Solaris fixes. Thanks to Yannick Martin for reporting the issue. +* Fix "non-native" builds on x86 platforms (e.g., when building 32 + bit executables with compilers that natively build 64 bit). +* Ignore sockets with unknown ID values (which fixes issues on POWER7 + machines). Thanks to Greg Bauer for reporting the issue. +* Various man page clarifications and minor updates. +* Fixed memory leaks in hwloc_setup_group_from_min_distance_clique(). +* Fix cache type filtering on MS Windows 7. Thanks to Αλέξανδρος + Παπαδογιαννάκ for reporting the issue. +* Fixed warnings when compiling with -DNDEBUG. + + +Version 1.0.0 +------------- + +* The ABI of the library has changed. +* Backend updates + + Add FreeBSD support. + + Add x86 cpuid based backend. + + Add Linux cgroup support to the Linux cpuset code. + + Support binding of entire multithreaded process on Linux. + + Fix and enable Group support in Windows. + + Cleanup XML export/import. +* Objects + + HWLOC_OBJ_PROC is renamed into HWLOC_OBJ_PU for "Processing Unit", + its stringified type name is now "PU". + + Use new HWLOC_OBJ_GROUP objects instead of MISC when grouping + objects according to NUMA distances or arbitrary OS aggregation. + + Rework memory attributes. + + Add different cpusets in each object to specify processors that + are offline, unavailable, ... + + Cleanup the storage of object names and DMI infos. +* Features + + Add support for looking up specific PID topology information. + + Add hwloc_topology_export_xml() to export the topology in a XML file. + + Add hwloc_topology_get_support() to retrieve the supported features + for the current topology context. + + Support non-SYSTEM object as the root of the tree, use MACHINE in + most common cases. + + Add hwloc_get_*cpubind() routines to retrieve the current binding + of processes and threads. +* API + + Add HWLOC_API_VERSION to help detect the currently used API version. + + Add missing ending "e" to *compare* functions. + + Add several routines to emulate PLPA functions. + + Rename and rework the cpuset and/or/xor/not/clear operators to output + their result in a dedicated argument instead of modifying one input. + + Deprecate hwloc_obj_snprintf() in favor of hwloc_obj_type/attr_snprintf(). + + Clarify the use of parent and ancestor in the API, do not use father. + + Replace hwloc_get_system_obj() with hwloc_get_root_obj(). + + Return -1 instead of HWLOC_OBJ_TYPE_MAX in the API since the latter + isn't public. + + Relax constraints in hwloc_obj_type_of_string(). + + Improve displaying of memory sizes. + + Add 0x prefix to cpuset strings. +* Tools + + lstopo now displays logical indexes by default, use --physical to + revert back to OS/physical indexes. + + Add colors in the lstopo graphical outputs to distinguish between online, + offline, reserved, ... objects. + + Extend lstopo to show cpusets, filter objects by type, ... + + Renamed hwloc-mask into hwloc-calc which supports many new options. +* Documentation + + Add a hwloc(7) manpage containing general information. + + Add documentation about how to switch from PLPA to hwloc. + + Cleanup the distributed documentation files. +* Miscellaneous + + Many compilers warning fixes. + + Cleanup the ABI by using the visibility attribute. + + Add project embedding support. + + +Version 0.9.4 (unreleased) +------------- + +* Fix reseting colors to normal in lstopo -.txt output. +* Fix Linux pthread_t binding error report. + + +Version 0.9.3 +------------- + +* Fix autogen.sh to work with Autoconf 2.63. +* Fix various crashes in particular conditions: + - xml files with root attributes + - offline CPUs + - partial sysfs support + - unparseable /proc/cpuinfo + - ignoring NUMA level while Misc level have been generated +* Tweak documentation a bit +* Do not require the pthread library for binding the current thread on Linux +* Do not erroneously consider the sched_setaffinity prototype is the old version + when there is actually none. +* Fix _syscall3 compilation on archs for which we do not have the + sched_setaffinity system call number. +* Fix AIX binding. +* Fix libraries dependencies: now only lstopo depends on libtermcap, fix + binutils-gold link +* Have make check always build and run hwloc-hello.c +* Do not limit size of a cpuset. + + +Version 0.9.2 +------------- + +* Trivial documentation changes. + + +Version 0.9.1 +------------- + +* Re-branded to "hwloc" and moved to the Open MPI project, relicensed under the + BSD license. +* The prefix of all functions and tools is now hwloc, and some public + functions were also renamed for real. +* Group NUMA nodes into Misc objects according to their physical distance + that may be reported by the OS/BIOS. + May be ignored by setting HWLOC_IGNORE_DISTANCES=1 in the environment. +* Ignore offline CPUs on Solaris. +* Improved binding support on AIX. +* Add HP-UX support. +* CPU sets are now allocated/freed dynamically. +* Add command line options to tune the lstopo graphical output, add + semi-graphical textual output +* Extend topobind to support multiple cpusets or objects on the command + line as topomask does. +* Add an Infiniband-specific helper hwloc/openfabrics-verbs.h to retrieve + the physical location of IB devices. + + +Version 0.9 (formerly named "libtopology") +----------- + +* First release. diff --git a/3rd-party/hwloc-2.7.1/README b/3rd-party/hwloc-2.7.1/README new file mode 100644 index 0000000000000000000000000000000000000000..43210e636ce41be4bd68642c1298379b621e5e07 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/README @@ -0,0 +1,85 @@ +Introduction + +The Hardware Locality (hwloc) software project aims at easing the process of +discovering hardware resources in parallel architectures. It offers +command-line tools and a C API for consulting these resources, their locality, +attributes, and interconnection. hwloc primarily aims at helping +high-performance computing (HPC) applications, but is also applicable to any +project seeking to exploit code and/or data locality on modern computing +platforms. + +hwloc is actually made of two subprojects distributed together: + + * The original hwloc project for describing the internals of computing nodes. + It is described in details starting at section Hardware Locality (hwloc) + Introduction. + * The network-oriented companion called netloc (Network Locality), described + in details starting with section Network Locality (netloc). + +See also the Related pages tab above for links to other sections. + +Netloc may be disabled, but the original hwloc cannot. Both hwloc and netloc +APIs are documented after these sections. + +Installation + +hwloc (https://www.open-mpi.org/projects/hwloc/) is available under the BSD +license. It is hosted as a sub-project of the overall Open MPI project (https:/ +/www.open-mpi.org/). Note that hwloc does not require any functionality from +Open MPI -- it is a wholly separate (and much smaller!) project and code base. +It just happens to be hosted as part of the overall Open MPI project. + +Basic Installation + +Installation is the fairly common GNU-based process: + +shell$ ./configure --prefix=... +shell$ make +shell$ make install + +hwloc- and netloc-specific configure options and requirements are documented in +sections hwloc Installation and Netloc Installation respectively. + +Also note that if you install supplemental libraries in non-standard locations, +hwloc's configure script may not be able to find them without some help. You +may need to specify additional CPPFLAGS, LDFLAGS, or PKG_CONFIG_PATH values on +the configure command line. + +For example, if libpciaccess was installed into /opt/pciaccess, hwloc's +configure script may not find it be default. Try adding PKG_CONFIG_PATH to the +./configure command line, like this: + +./configure PKG_CONFIG_PATH=/opt/pciaccess/lib/pkgconfig ... + +Running the "lstopo" tool is a good way to check as a graphical output whether +hwloc properly detected the architecture of your node. Netloc command-line +tools can be used to display the network topology interconnecting your nodes. + +Installing from a Git clone + +Additionally, the code can be directly cloned from Git: + +shell$ git clone https://github.com/open-mpi/hwloc.git +shell$ cd hwloc +shell$ ./autogen.sh + +Note that GNU Autoconf >=2.63, Automake >=1.11 and Libtool >=2.2.6 are required +when building from a Git clone. + +Nightly development snapshots are available on the web site, they can be +configured and built without any need for Git or GNU Autotools. + +Questions and Bugs + +Bugs should be reported in the tracker (https://github.com/open-mpi/hwloc/ +issues). Opening a new issue automatically displays lots of hints about how to +debug and report issues. + +Questions may be sent to the users or developers mailing lists (https:// +www.open-mpi.org/community/lists/hwloc.php). + +There is also a #hwloc IRC channel on Libera Chat (irc.libera.chat). + + + +See https://www.open-mpi.org/projects/hwloc/doc/ for more hwloc documentation. diff --git a/3rd-party/hwloc-2.7.1/VERSION b/3rd-party/hwloc-2.7.1/VERSION new file mode 100644 index 0000000000000000000000000000000000000000..d17fb44e231edd4b31a68adedcc999cd3de8bf63 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/VERSION @@ -0,0 +1,47 @@ +# This is the VERSION file for hwloc, describing the precise version +# of hwloc 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 +# ... If release is zero, then it is omitted. + +# Please update HWLOC_VERSION* in contrib/windows/hwloc_config.h too. + +major=2 +minor=7 +release=1 + +# greek is 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), sc2005 (Super Computing 2005 release). The only +# requirement is that it must be entirely printable ASCII characters +# and have no white space. + +greek= + +# The date when this release was created + +date="Mar 20, 2022" + +# If snapshot=1, then use the value from snapshot_version as the +# entire hwloc version (i.e., ignore major, minor, release, and +# greek). This is only set to 1 when making snapshot tarballs. +snapshot=0 +snapshot_version=${major}.${minor}.${release}${greek}-git + +# The shared library version of hwloc's public library. This version +# is maintained in accordance with the "Library Interface Versions" +# chapter from the GNU Libtool documentation. Notes: + +# 1. Since version numbers are associated with *releases*, the version +# number maintained on the hwloc git master (and developer branches) +# is always 0:0:0. + +# 2. Version numbers are described in the Libtool current:revision:age +# format. + +libhwloc_so_version=20:3:5 +libnetloc_so_version=0:0:0 + +# Please also update the lines in contrib/windows/libhwloc.vcxproj diff --git a/3rd-party/hwloc-2.7.1/config/distscript.sh b/3rd-party/hwloc-2.7.1/config/distscript.sh new file mode 100644 index 0000000000000000000000000000000000000000..d72a3fd3052a3678d94a90e541b576821fd8dd29 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/config/distscript.sh @@ -0,0 +1,130 @@ +#!/bin/sh -f +# +# Copyright © 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright © 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright © 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright © 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright © 2010-2014 Inria. All rights reserved. +# Copyright © 2009-2014 Cisco Systems, Inc. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +builddir="`pwd`" + +srcdir=$1 +cd "$srcdir" +srcdir=`pwd` +cd "$builddir" + +distdir="$builddir/$2" +HWLOC_VERSION=$3 + +if test "$distdir" = ""; then + echo "Must supply relative distdir as argv[2] -- aborting" + exit 1 +elif test "$HWLOC_VERSION" = ""; then + echo "Must supply version as argv[1] -- aborting" + exit 1 +fi + +#======================================================================== + +start=`date` +cat <=2.70 or AC_PROG_CC_C99 is stored in ac_cv_prog_cc_c99 + if test "x$ac_cv_prog_cc_c99" = xno ; then + AC_MSG_WARN([hwloc requires a C99 compiler]) + AC_MSG_ERROR([Aborting.]) + fi + + # GCC specifics. + _HWLOC_C_COMPILER_VENDOR([hwloc_c_vendor]) + if test "$hwloc_c_vendor" = "gnu"; then + HWLOC_GCC_CFLAGS="-Wall -Wmissing-prototypes -Wundef" + HWLOC_GCC_CFLAGS="$HWLOC_GCC_CFLAGS -Wpointer-arith -Wcast-align" + fi + + # Enample system extensions for O_DIRECTORY, fdopen, fssl, etc. + AH_VERBATIM([USE_HPUX_SYSTEM_EXTENSIONS], +[/* Enable extensions on HP-UX. */ +#ifndef _HPUX_SOURCE +# undef _HPUX_SOURCE +#endif +]) + AC_DEFINE([_HPUX_SOURCE], [1], [Are we building for HP-UX?]) + + AC_LANG_PUSH([C]) + + # Check to see if we're producing a 32 or 64 bit executable by + # checking the sizeof void*. Note that AC CHECK_SIZEOF even works + # when cross compiling (!), according to the AC 2.64 docs. This + # check is needed because on some systems, you can instruct the + # compiler to specifically build 32 or 64 bit executables -- even + # though the $target may indicate something different. + AC_CHECK_SIZEOF([void *]) + + # + # List of components to be built, either statically or dynamically. + # To be enlarged below. + # + hwloc_components="noos xml synthetic xml_nolibxml" + + # + # Check OS support + # + AC_MSG_CHECKING([which OS support to include]) + case ${target} in + powerpc64-bgq-linux*) # must be before Linux + AC_DEFINE(HWLOC_BGQ_SYS, 1, [Define to 1 on BlueGene/Q]) + hwloc_bgq=yes + AC_MSG_RESULT([bgq]) + hwloc_components="$hwloc_components bgq" + ;; + *-*-linux*) + AC_DEFINE(HWLOC_LINUX_SYS, 1, [Define to 1 on Linux]) + hwloc_linux=yes + AC_MSG_RESULT([Linux]) + hwloc_components="$hwloc_components linux" + if test "x$enable_io" != xno; then + AC_DEFINE(HWLOC_HAVE_LINUXIO, 1, [Define to 1 for I/O discovery in the Linux component]) + hwloc_linuxio_happy=yes + if test x$enable_pci != xno; then + AC_DEFINE(HWLOC_HAVE_LINUXPCI, 1, [Define to 1 if enabling Linux-specific PCI discovery in the Linux I/O component]) + hwloc_linuxpci_happy=yes + fi + fi + ;; + *-*-irix*) + AC_DEFINE(HWLOC_IRIX_SYS, 1, [Define to 1 on Irix]) + hwloc_irix=yes + AC_MSG_RESULT([IRIX]) + # no irix component yet + ;; + *-*-darwin*) + AC_DEFINE(HWLOC_DARWIN_SYS, 1, [Define to 1 on Darwin]) + hwloc_darwin=yes + AC_MSG_RESULT([Darwin]) + hwloc_components="$hwloc_components darwin" + ;; + *-*-solaris*) + AC_DEFINE(HWLOC_SOLARIS_SYS, 1, [Define to 1 on Solaris]) + hwloc_solaris=yes + AC_MSG_RESULT([Solaris]) + hwloc_components="$hwloc_components solaris" + ;; + *-*-aix*) + AC_DEFINE(HWLOC_AIX_SYS, 1, [Define to 1 on AIX]) + hwloc_aix=yes + AC_MSG_RESULT([AIX]) + hwloc_components="$hwloc_components aix" + ;; + *-*-hpux*) + AC_DEFINE(HWLOC_HPUX_SYS, 1, [Define to 1 on HP-UX]) + hwloc_hpux=yes + AC_MSG_RESULT([HP-UX]) + hwloc_components="$hwloc_components hpux" + ;; + *-*-mingw*|*-*-cygwin*) + AC_DEFINE(HWLOC_WIN_SYS, 1, [Define to 1 on WINDOWS]) + hwloc_windows=yes + AC_MSG_RESULT([Windows]) + hwloc_components="$hwloc_components windows" + ;; + *-*-*freebsd*) + AC_DEFINE(HWLOC_FREEBSD_SYS, 1, [Define to 1 on *FREEBSD]) + hwloc_freebsd=yes + AC_MSG_RESULT([FreeBSD]) + hwloc_components="$hwloc_components freebsd" + ;; + *-*-*netbsd*) + AC_DEFINE(HWLOC_NETBSD_SYS, 1, [Define to 1 on *NETBSD]) + hwloc_netbsd=yes + AC_MSG_RESULT([NetBSD]) + hwloc_components="$hwloc_components netbsd" + ;; + *) + AC_MSG_RESULT([Unsupported! ($target)]) + AC_DEFINE(HWLOC_UNSUPPORTED_SYS, 1, [Define to 1 on unsupported systems]) + AC_MSG_WARN([***********************************************************]) + AC_MSG_WARN([*** hwloc does not support this system.]) + AC_MSG_WARN([*** hwloc will *attempt* to build (but it may not work).]) + AC_MSG_WARN([*** hwloc run-time results may be reduced to showing just one processor,]) + AC_MSG_WARN([*** and binding will not be supported.]) + AC_MSG_WARN([*** You have been warned.]) + AC_MSG_WARN([*** Pausing to give you time to read this message...]) + AC_MSG_WARN([***********************************************************]) + sleep 10 + ;; + esac + + # + # Check CPU support + # + AC_MSG_CHECKING([which CPU support to include]) + case ${target} in + i*86-*-*|x86_64-*-*|amd64-*-*) + case ${ac_cv_sizeof_void_p} in + 4) + AC_DEFINE(HWLOC_X86_32_ARCH, 1, [Define to 1 on x86_32]) + hwloc_x86_32=yes + HWLOC_MS_LIB_ARCH=X86 + AC_MSG_RESULT([x86_32]) + ;; + 8) + AC_DEFINE(HWLOC_X86_64_ARCH, 1, [Define to 1 on x86_64]) + hwloc_x86_64=yes + HWLOC_MS_LIB_ARCH=X64 + AC_MSG_RESULT([x86_64]) + ;; + *) + AC_DEFINE(HWLOC_X86_64_ARCH, 1, [Define to 1 on x86_64]) + hwloc_x86_64=yes + HWLOC_MS_LIB_ARCH=X64 + AC_MSG_RESULT([unknown -- assuming x86_64]) + ;; + esac + ;; + *) + AC_MSG_RESULT([unknown]) + ;; + esac + AC_SUBST(HWLOC_MS_LIB_ARCH) + + AC_CHECK_SIZEOF([unsigned long]) + AC_DEFINE_UNQUOTED([HWLOC_SIZEOF_UNSIGNED_LONG], $ac_cv_sizeof_unsigned_long, [The size of `unsigned long', as computed by sizeof]) + AC_CHECK_SIZEOF([unsigned int]) + AC_DEFINE_UNQUOTED([HWLOC_SIZEOF_UNSIGNED_INT], $ac_cv_sizeof_unsigned_int, [The size of `unsigned int', as computed by sizeof]) + + # + # Check for compiler attributes and visibility + # + _HWLOC_CHECK_ATTRIBUTES + _HWLOC_CHECK_VISIBILITY + HWLOC_CFLAGS="$HWLOC_FLAGS $HWLOC_VISIBILITY_CFLAGS" + AS_IF([test "$HWLOC_VISIBILITY_CFLAGS" != ""], + [AC_MSG_WARN(["$HWLOC_VISIBILITY_CFLAGS" has been added to the hwloc CFLAGS])]) + + # Make sure the compiler returns an error code when function arg + # count is wrong, otherwise sched_setaffinity checks may fail. + HWLOC_STRICT_ARGS_CFLAGS= + hwloc_args_check=0 + AC_MSG_CHECKING([whether the C compiler rejects function calls with too many arguments]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + extern int one_arg(int x); + int foo(void) { return one_arg(1, 2); } + ]])], + [AC_MSG_RESULT([no])], + [hwloc_args_check=1 + AC_MSG_RESULT([yes])]) + AC_MSG_CHECKING([whether the C compiler rejects function calls with too few arguments]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + extern int two_arg(int x, int y); + int foo(void) { return two_arg(3); } + ]])], + [AC_MSG_RESULT([no])], + [hwloc_args_check=`expr $hwloc_args_check + 1` + AC_MSG_RESULT([yes])]) + AS_IF([test "$hwloc_args_check" != "2"],[ + AC_MSG_WARN([Your C compiler does not consider incorrect argument counts to be a fatal error.]) + case "$hwloc_c_vendor" in + ibm) + HWLOC_STRICT_ARGS_CFLAGS="-qhalt=e" + ;; + intel) + HWLOC_STRICT_ARGS_CFLAGS="-we140" + ;; + *) + HWLOC_STRICT_ARGS_CFLAGS=FAIL + AC_MSG_WARN([Please report this warning and configure using a different C compiler if possible.]) + ;; + esac + AS_IF([test "$HWLOC_STRICT_ARGS_CFLAGS" != "FAIL"],[ + AC_MSG_WARN([Configure will append '$HWLOC_STRICT_ARGS_CFLAGS' to the value of CFLAGS when needed.]) + AC_MSG_WARN([Alternatively you may configure with a different compiler.]) + ]) + ]) + + AS_IF([test "$hwloc_mode" = "standalone"],[ + # For the common developer case, if we're in a developer checkout and + # using the GNU compilers, turn on maximum warnings unless + # specifically disabled by the user. + AC_MSG_CHECKING([whether to enable "picky" compiler mode]) + hwloc_want_picky=0 + AS_IF([test "$hwloc_c_vendor" = "gnu"], + [AS_IF([test -e "$srcdir/.git"], + [hwloc_want_picky=1])]) + if test "$enable_picky" = "yes"; then + if test "$hwloc_c_vendor" = "gnu"; then + AC_MSG_RESULT([yes]) + hwloc_want_picky=1 + else + AC_MSG_RESULT([no]) + AC_MSG_WARN([Warning: --enable-picky used, but is currently only defined for the GCC compiler set -- automatically disabled]) + hwloc_want_picky=0 + fi + elif test "$enable_picky" = "no"; then + AC_MSG_RESULT([no]) + hwloc_want_picky=0 + else + if test "$hwloc_want_picky" = 1; then + AC_MSG_RESULT([yes (default)]) + else + AC_MSG_RESULT([no (default)]) + fi + fi + if test "$hwloc_want_picky" = 1; then + add="-Wall -Wextra -Wunused-parameter -Wundef -Wno-long-long -Wsign-compare" + add="$add -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes" + add="$add -Wcomment -pedantic -Wshadow -Wwrite-strings -Wnested-externs" + add="$add -Wpointer-arith -Wbad-function-cast -Wold-style-definition" + add="$add -Werror-implicit-function-declaration" + + _HWLOC_CHECK_CC_OPTION([-Wdiscarded-qualifiers], [add]) + _HWLOC_CHECK_CC_OPTION([-Wvariadic-macros], [add]) + _HWLOC_CHECK_CC_OPTION([-Wtype-limits], [add]) + _HWLOC_CHECK_CC_OPTION([-Wstack-usage=262144], [add]) + + # -Wextra enables some -Wfoo that we want to disable it at some place + _HWLOC_CHECK_CC_OPTION([-Wmissing-field-initializers], [add], [AC_DEFINE(HWLOC_HAVE_GCC_W_MISSING_FIELD_INITIALIZERS, 1, [Define to 1 if gcc -Wmissing-field-initializers is supported and enabled])]) + _HWLOC_CHECK_CC_OPTION([-Wcast-function-type], [add], [AC_DEFINE(HWLOC_HAVE_GCC_W_CAST_FUNCTION_TYPE, 1, [Define to 1 if gcc -Wcast-function-type is supported and enabled])]) + + HWLOC_CFLAGS="$HWLOC_CFLAGS $add" + fi + ]) + + # + # Now detect support + # + + AC_CHECK_HEADERS([unistd.h]) + AC_CHECK_HEADERS([dirent.h]) + AC_CHECK_HEADERS([strings.h]) + AC_CHECK_HEADERS([ctype.h]) + + AC_CHECK_FUNCS([strcasecmp], [ + _HWLOC_CHECK_DECL([strcasecmp], [ + AC_DEFINE([HWLOC_HAVE_DECL_STRCASECMP], [1], [Define to 1 if function `strcasecmp' is declared by system headers]) + ]) + ]) + AC_CHECK_FUNCS([strncasecmp], [ + _HWLOC_CHECK_DECL([strncasecmp], [ + AC_DEFINE([HWLOC_HAVE_DECL_STRNCASECMP], [1], [Define to 1 if function `strncasecmp' is declared by system headers]) + ]) + ]) + + AC_CHECK_FUNCS([strftime]) + AC_CHECK_FUNCS([setlocale]) + + AC_CHECK_HEADER([stdint.h], [ + AC_DEFINE([HWLOC_HAVE_STDINT_H], [1], [Define to 1 if you have the header file.]) + ]) + AC_CHECK_HEADERS([sys/mman.h]) + + if test x$hwloc_freebsd = xyes; then + echo + echo "**** FreeBSD-specific checks" + + AC_CHECK_HEADERS([sys/domainset.h]) + AC_CHECK_HEADERS([sys/thr.h]) + AC_CHECK_HEADERS([pthread_np.h]) + AC_CHECK_HEADERS([sys/cpuset.h],,,[[#include ]]) + AC_CHECK_FUNCS([cpuset_setaffinity]) + AC_CHECK_FUNCS([cpuset_setid]) + + echo "**** end of FreeBSD-specific checks" + echo + fi + + if test x$hwloc_windows = xyes; then + echo + echo "**** Windows-specific checks" + + AC_CHECK_HEADER([windows.h], [ + AC_DEFINE([HWLOC_HAVE_WINDOWS_H], [1], [Define to 1 if you have the `windows.h' header.]) + ]) + + old_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -D_WIN32_WINNT=0x0601" + AC_CHECK_TYPES([KAFFINITY, + PROCESSOR_CACHE_TYPE, + CACHE_DESCRIPTOR, + LOGICAL_PROCESSOR_RELATIONSHIP, + RelationProcessorPackage, + GROUP_AFFINITY, + PROCESSOR_RELATIONSHIP, + NUMA_NODE_RELATIONSHIP, + CACHE_RELATIONSHIP, + PROCESSOR_GROUP_INFO, + GROUP_RELATIONSHIP, + SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, + PSAPI_WORKING_SET_EX_BLOCK, + PSAPI_WORKING_SET_EX_INFORMATION, + PROCESSOR_NUMBER], + [],[],[[#include ]]) + CPPFLAGS="$old_CPPFLAGS" + + AC_CHECK_DECLS([GetModuleFileName], [], [], [#include ]) + + AC_CHECK_LIB([gdi32], [main], + [HWLOC_LIBS="-lgdi32 $HWLOC_LIBS" + AC_DEFINE([HAVE_LIBGDI32], 1, [Define to 1 if we have -lgdi32])]) + AC_CHECK_LIB([user32], [PostQuitMessage], [hwloc_have_user32="yes"]) + + AC_PATH_PROGS([HWLOC_MS_LIB], [lib]) + + echo "**** end of Windows-specific checks" + echo + fi + + if test x$hwloc_solaris = xyes; then + echo + echo "**** Solaris-specific checks" + + AC_CHECK_HEADERS([sys/lgrp_user.h], [ + AC_CHECK_LIB([lgrp], [lgrp_init], + [HWLOC_LIBS="-llgrp $HWLOC_LIBS" + AC_DEFINE([HAVE_LIBLGRP], 1, [Define to 1 if we have -llgrp]) + AC_CHECK_DECLS([lgrp_latency_cookie],,,[[#include ]]) + ]) + ]) + AC_CHECK_HEADERS([kstat.h], [ + AC_CHECK_LIB([kstat], [main], + [HWLOC_LIBS="-lkstat $HWLOC_LIBS" + AC_DEFINE([HAVE_LIBKSTAT], 1, [Define to 1 if we have -lkstat])]) + ]) + + AC_CHECK_HEADERS([picl.h], [ + AC_CHECK_LIB([picl], [picl_initialize], + [HWLOC_LIBS="-lpicl $HWLOC_LIBS"])]) + + echo "**** end of Solaris-specific checks" + echo + fi + + if test x$hwloc_aix = xyes; then + echo + echo "**** AIX-specific checks" + + AC_SEARCH_LIBS([pthread_getthrds_np], [pthread], [ + AC_DEFINE([HWLOC_HAVE_PTHREAD_GETTHRDS_NP], 1, `Define to 1 if you have pthread_getthrds_np') + ]) + + echo "**** end of AIX-specific checks" + echo + fi + + if test x$hwloc_darwin = xyes; then + echo + echo "**** Darwin-specific checks" + + AC_MSG_CHECKING([for the Foundation framework]) + tmp_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -framework Foundation" + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ +#include + ], [ +return CFDictionaryGetTypeID(); + ])], + [AC_MSG_RESULT(yes) + HWLOC_DARWIN_LDFLAGS="$HWLOC_DARWIN_LDFLAGS -framework Foundation" + AC_DEFINE(HWLOC_HAVE_DARWIN_FOUNDATION, 1, `Define to 1 if you have the Foundation Darwin framework')], + [AC_MSG_RESULT(no)]) + LDFLAGS="$tmp_save_LDFLAGS" + + AC_MSG_CHECKING([for the IOKit framework]) + tmp_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -framework IOKit" + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ +#include + ], [ +io_registry_entry_t service = IORegistryGetRootEntry(kIOMasterPortDefault); + ])], + [AC_MSG_RESULT(yes) + HWLOC_DARWIN_LDFLAGS="$HWLOC_DARWIN_LDFLAGS -framework IOKit" + AC_DEFINE(HWLOC_HAVE_DARWIN_IOKIT, 1, `Define to 1 if you have the IOKit Darwin framework')], + [AC_MSG_RESULT(no)]) + LDFLAGS="$tmp_save_LDFLAGS" + + AC_SUBST(HWLOC_DARWIN_LDFLAGS) + + echo "**** end of Darwin-specific checks" + echo + fi + + if test x$hwloc_linux = xyes; then + echo + echo "**** Linux-specific checks" + + AC_CHECK_DECLS([sched_getcpu],,[:],[[ + #ifndef _GNU_SOURCE + # define _GNU_SOURCE + #endif + #include + ]]) + + _HWLOC_CHECK_DECL([sched_setaffinity], [ + hwloc_have_sched_setaffinity=yes + AC_DEFINE([HWLOC_HAVE_SCHED_SETAFFINITY], [1], [Define to 1 if glibc provides a prototype of sched_setaffinity()]) + AS_IF([test "$HWLOC_STRICT_ARGS_CFLAGS" = "FAIL"],[ + AC_MSG_WARN([Support for sched_setaffinity() requires a C compiler which]) + AC_MSG_WARN([considers incorrect argument counts to be a fatal error.]) + AC_MSG_ERROR([Cannot continue.]) + ]) + AC_MSG_CHECKING([for old prototype of sched_setaffinity]) + hwloc_save_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $HWLOC_STRICT_ARGS_CFLAGS" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + #ifndef _GNU_SOURCE + # define _GNU_SOURCE + #endif + #include + static unsigned long mask; + ]], [[ sched_setaffinity(0, (void*) &mask); ]])], + [AC_DEFINE([HWLOC_HAVE_OLD_SCHED_SETAFFINITY], [1], [Define to 1 if glibc provides the old prototype (without length) of sched_setaffinity()]) + AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])]) + CFLAGS=$hwloc_save_CFLAGS + ], , [[ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif +#include + ]]) + + AC_MSG_CHECKING([for working CPU_SET]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([[ + #include + cpu_set_t set; + ]], [[ CPU_ZERO(&set); CPU_SET(0, &set);]])], + [AC_DEFINE([HWLOC_HAVE_CPU_SET], [1], [Define to 1 if the CPU_SET macro works]) + AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])]) + + AC_MSG_CHECKING([for working CPU_SET_S]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([[ + #include + cpu_set_t *set; + ]], [[ + set = CPU_ALLOC(1024); + CPU_ZERO_S(CPU_ALLOC_SIZE(1024), set); + CPU_SET_S(CPU_ALLOC_SIZE(1024), 0, set); + CPU_FREE(set); + ]])], + [AC_DEFINE([HWLOC_HAVE_CPU_SET_S], [1], [Define to 1 if the CPU_SET_S macro works]) + AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])]) + + AC_MSG_CHECKING([for working syscall with 6 parameters]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([[ + #include + #include + ]], [[syscall(0, 1, 2, 3, 4, 5, 6);]])], + [AC_DEFINE([HWLOC_HAVE_SYSCALL], [1], [Define to 1 if function `syscall' is available with 6 parameters]) + AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])]) + + # Linux libudev support + if test "x$enable_libudev" != xno; then + AC_CHECK_HEADERS([libudev.h], [ + AC_CHECK_LIB([udev], [udev_device_new_from_subsystem_sysname], [ + HWLOC_LIBS="$HWLOC_LIBS -ludev" + AC_DEFINE([HWLOC_HAVE_LIBUDEV], [1], [Define to 1 if you have libudev.]) + ]) + ]) + fi + + echo "**** end of Linux-specific checks" + echo + fi + + if test "x$hwloc_linux" != "xyes" ; then + # Don't look for sys/sysctl.h on Linux because it's deprecated and + # generates a warning in GCC10. Also it's unneeded. + AC_CHECK_HEADERS([sys/param.h]) + AC_CHECK_HEADERS([sys/sysctl.h], [ + AC_CHECK_DECLS([CTL_HW, HW_NCPU, HW_REALMEM64, HW_MEMSIZE64, HW_PHYSMEM64, HW_USERMEM64, HW_REALMEM, HW_MEMSIZE, HW_PHYSMEM, HW_USERMEM],,,[[ + #if HAVE_SYS_PARAM_H + #include + #endif + #include + ]]) + ],,[ + AC_INCLUDES_DEFAULT + #if HAVE_SYS_PARAM_H + #include + #endif + ]) + + # Don't detect sysctl* on Linux because its sysctl() syscall is + # long deprecated and unneeded. Some libc still expose the symbol + # and raise a big warning at link time. + + # Do a full link test instead of just using AC_CHECK_FUNCS, which + # just checks to see if the symbol exists or not. For example, + # the prototype of sysctl uses u_int, which on some platforms + # (such as FreeBSD) is only defined under __BSD_VISIBLE, __USE_BSD + # or other similar definitions. So while the symbols "sysctl" and + # "sysctlbyname" might still be available in libc (which autoconf + # checks for), they might not be actually usable. + AC_MSG_CHECKING([for sysctl]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + #include + #include + #include + ], [ + return sysctl(NULL,0,NULL,NULL,NULL,0); + ])], + [AC_DEFINE([HAVE_SYSCTL],[1],[Define to '1' if sysctl is present and usable]) + AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no)]) + AC_MSG_CHECKING([for sysctlbyname]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + #include + #include + #include + ], [ + return sysctlbyname(NULL,NULL,NULL,NULL,0); + ])], + [AC_DEFINE([HAVE_SYSCTLBYNAME],[1],[Define to '1' if sysctlbyname is present and usable]) + AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no)]) + fi + + AC_CHECK_DECLS([pthread_setaffinity_np],,[:],[[ + #include + #ifdef HAVE_PTHREAD_NP_H + # include + #endif + ]]) + AC_CHECK_DECLS([pthread_getaffinity_np],,[:],[[ + #include + #ifdef HAVE_PTHREAD_NP_H + # include + #endif + ]]) + + AC_CHECK_DECLS([fabsf], [ + AC_CHECK_LIB([m], [fabsf], + [need_libm=yes]) + ], [], [[#include ]]) + AC_CHECK_DECLS([modff], [ + AC_CHECK_LIB([m], [modff], + [need_libm=yes]) + ], [], [[#include ]]) + if test x$need_libm = xyes; then + HWLOC_LIBS="-lm $HWLOC_LIBS" + fi + + AC_CHECK_DECLS([_SC_NPROCESSORS_ONLN, + _SC_NPROCESSORS_CONF, + _SC_NPROC_ONLN, + _SC_NPROC_CONF, + _SC_PAGESIZE, + _SC_PAGE_SIZE, + _SC_LARGE_PAGESIZE],,[:],[[#include ]]) + + AC_CHECK_HEADERS([mach/mach_init.h]) + AC_CHECK_HEADERS([mach_init.h]) + AC_CHECK_HEADERS([mach/mach_host.h], [ + AC_CHECK_FUNCS([host_info]) + ]) + + AC_CHECK_DECLS([strtoull], [], [AC_CHECK_FUNCS([strtoull])], [AC_INCLUDES_DEFAULT]) + + # Needed for Windows in private/misc.h + AC_CHECK_TYPES([ssize_t]) + AC_CHECK_DECLS([snprintf], [], [], [AC_INCLUDES_DEFAULT]) + # strdup and putenv are declared in windows headers but marked deprecated + AC_CHECK_DECLS([_strdup], [], [], [AC_INCLUDES_DEFAULT]) + AC_CHECK_DECLS([_putenv], [], [], [AC_INCLUDES_DEFAULT]) + # Could add mkdir and access for hwloc-gather-cpuid.c on Windows + + broken_snprintf=no + AC_MSG_CHECKING([whether snprintf is correct]) + AC_RUN_IFELSE([ + AC_LANG_PROGRAM([[ +#include +#include +#include + ]], [[ +char buf[7]; +assert(snprintf(buf, 7, "abcdef") == 6); +assert(snprintf(buf, 6, "abcdef") == 6); +assert(snprintf(buf, 5, "abcdef") == 6); +assert(snprintf(buf, 0, "abcdef") == 6); +assert(snprintf(NULL, 0, "abcdef") == 6); +return 0; + ]])], + AC_MSG_RESULT([yes]), + [ + AC_MSG_RESULT([no]) + broken_snprintf=yes + ], [ + AC_MSG_RESULT([don't know (cross-compiling)]) + broken_snprintf=maybe + ]) + + if test x$broken_snprintf = xno; then + AC_DEFINE([HWLOC_HAVE_CORRECT_SNPRINTF], 1, [Define to 1 if snprintf supports NULL output buffer and returns the correct length on truncation]) + fi + + AC_CHECK_DECLS([getprogname], [], [], [AC_INCLUDES_DEFAULT]) + AC_CHECK_DECLS([getexecname], [], [], [AC_INCLUDES_DEFAULT]) + # program_invocation_name and __progname may be available but not exported in headers + AC_MSG_CHECKING([for program_invocation_name]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + #ifndef _GNU_SOURCE + # define _GNU_SOURCE + #endif + #include + #include + extern char *program_invocation_name; + ], [ + return printf("%s\n", program_invocation_name); + ])], + [AC_DEFINE([HAVE_PROGRAM_INVOCATION_NAME], [1], [Define to '1' if program_invocation_name is present and usable]) + AC_MSG_RESULT([yes]) + ], [AC_MSG_RESULT([no])]) + AC_MSG_CHECKING([for __progname]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + #include + extern char *__progname; + ], [ + return printf("%s\n", __progname); + ])], + [AC_DEFINE([HAVE___PROGNAME], [1], [Define to '1' if __progname is present and usable]) + AC_MSG_RESULT([yes]) + ],[AC_MSG_RESULT([no])]) + + case ${target} in + *-*-mingw*|*-*-cygwin*) + hwloc_pid_t=HANDLE + hwloc_thread_t=HANDLE + ;; + *) + hwloc_pid_t=pid_t + AC_CHECK_TYPES([pthread_t], [hwloc_thread_t=pthread_t], [:], [[#include ]]) + ;; + esac + AC_DEFINE_UNQUOTED(hwloc_pid_t, $hwloc_pid_t, [Define this to the process ID type]) + if test "x$hwloc_thread_t" != "x" ; then + AC_DEFINE_UNQUOTED(hwloc_thread_t, $hwloc_thread_t, [Define this to the thread ID type]) + fi + + AC_PATH_PROG([BASH], [bash]) + + AC_CHECK_FUNCS([ffs], [ + _HWLOC_CHECK_DECL([ffs],[ + AC_DEFINE([HWLOC_HAVE_DECL_FFS], [1], [Define to 1 if function `ffs' is declared by system headers]) + ]) + AC_DEFINE([HWLOC_HAVE_FFS], [1], [Define to 1 if you have the `ffs' function.]) + if ( $CC --version | grep gccfss ) >/dev/null 2>&1 ; then + dnl May be broken due to + dnl https://forums.oracle.com/forums/thread.jspa?threadID=1997328 + dnl TODO: a more selective test, since bug may be version dependent. + dnl We can't use AC_TRY_LINK because the failure does not appear until + dnl run/load time and there is currently no precedent for AC_TRY_RUN + dnl use in hwloc. --PHH + dnl For now, we're going with "all gccfss compilers are broken". + dnl Better to be safe and correct; it's not like this is + dnl performance-critical code, after all. + AC_DEFINE([HWLOC_HAVE_BROKEN_FFS], [1], + [Define to 1 if your `ffs' function is known to be broken.]) + fi + ]) + AC_CHECK_FUNCS([ffsl], [ + _HWLOC_CHECK_DECL([ffsl],[ + AC_DEFINE([HWLOC_HAVE_DECL_FFSL], [1], [Define to 1 if function `ffsl' is declared by system headers]) + ]) + AC_DEFINE([HWLOC_HAVE_FFSL], [1], [Define to 1 if you have the `ffsl' function.]) + ]) + + AC_CHECK_FUNCS([fls], [ + _HWLOC_CHECK_DECL([fls],[ + AC_DEFINE([HWLOC_HAVE_DECL_FLS], [1], [Define to 1 if function `fls' is declared by system headers]) + ]) + AC_DEFINE([HWLOC_HAVE_FLS], [1], [Define to 1 if you have the `fls' function.]) + ]) + AC_CHECK_FUNCS([flsl], [ + _HWLOC_CHECK_DECL([flsl],[ + AC_DEFINE([HWLOC_HAVE_DECL_FLSL], [1], [Define to 1 if function `flsl' is declared by system headers]) + ]) + AC_DEFINE([HWLOC_HAVE_FLSL], [1], [Define to 1 if you have the `flsl' function.]) + ]) + + AC_CHECK_FUNCS([clz], [ + _HWLOC_CHECK_DECL([clz],[ + AC_DEFINE([HWLOC_HAVE_DECL_CLZ], [1], [Define to 1 if function `clz' is declared by system headers]) + ]) + AC_DEFINE([HWLOC_HAVE_CLZ], [1], [Define to 1 if you have the `clz' function.]) + ]) + AC_CHECK_FUNCS([clzl], [ + _HWLOC_CHECK_DECL([clzl],[ + AC_DEFINE([HWLOC_HAVE_DECL_CLZL], [1], [Define to 1 if function `clzl' is declared by system headers]) + ]) + AC_DEFINE([HWLOC_HAVE_CLZL], [1], [Define to 1 if you have the `clzl' function.]) + ]) + + AS_IF([test "$hwloc_c_vendor" != "android"], [AC_CHECK_FUNCS([openat], [hwloc_have_openat=yes])]) + + AC_CHECK_HEADERS([malloc.h]) + AC_CHECK_FUNCS([getpagesize memalign posix_memalign]) + + AC_CHECK_HEADERS([sys/utsname.h]) + AC_CHECK_FUNCS([uname]) + + # Components and pciaccess require pthread_mutex, see if it needs -lpthread + hwloc_pthread_mutex_happy=no + # Try without explicit -lpthread first + AC_CHECK_FUNC([pthread_mutex_lock], + [hwloc_pthread_mutex_happy=yes + HWLOC_LIBS_PRIVATE="$HWLOC_LIBS_PRIVATE -lpthread" + ], + [AC_MSG_NOTICE([trying again with -lpthread ...]) + # Try again with explicit -lpthread + $as_unset ac_cv_func_pthread_mutex_lock + tmp_save_LIBS=$LIBS + LIBS="$LIBS -lpthread" + AC_CHECK_FUNC([pthread_mutex_lock], + [hwloc_pthread_mutex_happy=yes + HWLOC_LIBS="$HWLOC_LIBS -lpthread" + ]) + LIBS="$tmp_save_LIBS" + ]) + AS_IF([test "x$hwloc_pthread_mutex_happy" = "xyes"], + [AC_DEFINE([HWLOC_HAVE_PTHREAD_MUTEX], 1, [Define to 1 if pthread mutexes are available])]) + + AS_IF([test "x$hwloc_pthread_mutex_happy" != xyes -a "x$hwloc_windows" != xyes], + [AC_MSG_WARN([pthread_mutex_lock not available, required for thread-safe initialization on non-Windows platforms.]) + AC_MSG_WARN([Please report this to the hwloc-devel mailing list.]) + AC_MSG_ERROR([Cannot continue])]) + + dnl Don't check for valgrind in embedded mode because this may conflict + dnl with the embedder projects also checking for it. + dnl We only use Valgrind to nicely disable the x86 backend with a warning, + dnl but we can live without it in embedded mode (it auto-disables itself + dnl because of invalid CPUID outputs). + dnl Non-embedded checks usually go to hwloc_internal.m4 but this one is + dnl is really for the core library. + AS_IF([test "$hwloc_mode" != "embedded"], + [AC_CHECK_HEADERS([valgrind/valgrind.h]) + AC_CHECK_DECLS([RUNNING_ON_VALGRIND],,[:],[[#include ]]) + ],[ + AC_DEFINE([HAVE_DECL_RUNNING_ON_VALGRIND], [0], [Embedded mode; just assume we do not have Valgrind support]) + ]) + + AS_IF([test "x$enable_32bits_pci_domain" = "xyes"], [ + AC_DEFINE([HWLOC_HAVE_32BITS_PCI_DOMAIN], 1, + [Define to 1 if --enable-32bits-pci-domain is called.]) + ]) + + # PCI support via libpciaccess. NOTE: we do not support + # libpci/pciutils because that library is GPL and is incompatible + # with our BSD license. + hwloc_pciaccess_happy=no + if test "x$enable_io" != xno && test "x$enable_pci" != xno; then + echo + echo "**** pciaccess configuration" + + hwloc_pciaccess_happy=yes + HWLOC_PKG_CHECK_MODULES([PCIACCESS], [pciaccess], [pci_slot_match_iterator_create], [pciaccess.h], [:], [hwloc_pciaccess_happy=no]) + + # Only add the REQUIRES if we got pciaccess through pkg-config. + # Otherwise we don't know if pciaccess.pc is installed + AS_IF([test "$hwloc_pciaccess_happy" = "yes"], [HWLOC_PCIACCESS_REQUIRES=pciaccess]) + + # Just for giggles, if we didn't find a pciaccess pkg-config, + # just try looking for its header file and library. + AS_IF([test "$hwloc_pciaccess_happy" != "yes"], + [AC_CHECK_HEADER([pciaccess.h], + [AC_CHECK_LIB([pciaccess], [pci_slot_match_iterator_create], + [hwloc_pciaccess_happy=yes + HWLOC_PCIACCESS_LIBS="-lpciaccess" + AC_SUBST(HWLOC_PCIACCESS_LIBS) + ]) + ]) + ]) + + AS_IF([test "$hwloc_pciaccess_happy" = "yes"], + [hwloc_components="$hwloc_components pci" + hwloc_pci_component_maybeplugin=1]) + + echo "**** end of pciaccess configuration" + fi + # If we asked for pci support but couldn't deliver, fail + AS_IF([test "$enable_pci" = "yes" -a "$hwloc_pciaccess_happy" = "no"], + [AC_MSG_WARN([Specified --enable-pci switch, but could not]) + AC_MSG_WARN([find appropriate support]) + AC_MSG_ERROR([Cannot continue])]) + # don't add LIBS/CFLAGS/REQUIRES yet, depends on plugins + + if test "x$enable_io" != xno && test "x$enable_opencl" != xno -o "x$enable_cuda" != xno -o "x$enable_nvml" != xno; then + echo + echo "**** NVIDIA-common configuration" + + # Try to find CUDA pkg-config using a specific CUDA version + # Use --with-cuda-version first, or $CUDA_VERSION + cuda_version=$CUDA_VERSION + if test "x$with_cuda_version" != xno -a "x$with_cuda_version" != x; then + cuda_version=$with_cuda_version + fi + if test x$cuda_version != x; then + AC_MSG_CHECKING([if cuda-$cuda_version.pc exists]) + HWLOC_PKG_CHECK_EXISTS([cuda-$cuda_version], [ + cudapc=cuda-$cuda_version + AC_MSG_RESULT(yes) + _HWLOC_PKG_CONFIG(cuda_includedir, [variable=includedir], $cudapc) + _HWLOC_PKG_CONFIG(cuda_libdir, [variable=libdir], $cudapc) + ], [AC_MSG_RESULT(no)]) + AC_MSG_CHECKING([if cudart-$cuda_version.pc exists]) + HWLOC_PKG_CHECK_EXISTS([cudart-$cuda_version], [ + cudartpc=cudart-$cuda_version + AC_MSG_RESULT(yes) + ], [AC_MSG_RESULT(no)]) + fi + + # OpenCL/NVML/CUDA may use CUDA directories, define common directories + # libnvidia-ml.so (and libcuda.so for tests) is under stubs + # when the driver isn't installed on the build machine. + # hwloc programs will fail to link if libnvidia-ml.so.1 is not available there too. + if test "x$with_cuda" != xno -a "x$with_cuda" != x; then + AC_MSG_NOTICE([using custom CUDA install path $with_cuda ...]) + if test "x${ac_cv_sizeof_void_p}" = x4; then + HWLOC_CUDA_COMMON_LDFLAGS="-L$with_cuda/lib/ -L$with_cuda/lib/stubs/" + else + HWLOC_CUDA_COMMON_LDFLAGS="-L$with_cuda/lib64/ -L$with_cuda/lib64/stubs/" + fi + HWLOC_CUDA_COMMON_CPPFLAGS="-I$with_cuda/include/" + + else if test x$HWLOC_pkg_cv_cuda_includedir != x -a x$HWLOC_pkg_cv_cuda_libdir != x; then + # or use cuda libdir/includedir from cuda.pc above + AC_MSG_NOTICE([using CUDA libdir and includedir from ${cudapc}.pc ...]) + HWLOC_CUDA_COMMON_LDFLAGS="-L$HWLOC_pkg_cv_cuda_libdir -L$HWLOC_pkg_cv_cuda_libdir/stubs/" + HWLOC_CUDA_COMMON_CPPFLAGS="-I$HWLOC_pkg_cv_cuda_includedir" + + else if test -f /usr/local/cuda/include/cuda.h; then + # or try the default /usr/local/cuda + AC_MSG_NOTICE([using default CUDA install path /usr/local/cuda ...]) + HWLOC_CUDA_COMMON_LDFLAGS="-L/usr/local/cuda/lib64/ -L/usr/local/cuda/lib64/stubs/" + HWLOC_CUDA_COMMON_CPPFLAGS="-I/usr/local/cuda/include/" + fi fi fi + + AC_MSG_NOTICE([common CUDA/OpenCL/NVML CPPFLAGS: $HWLOC_CUDA_COMMON_CPPFLAGS]) + AC_MSG_NOTICE([common CUDA/OpenCL/NVML LDFLAGS: $HWLOC_CUDA_COMMON_LDFLAGS]) + + echo "**** end of NVIDIA-common configuration" + fi + + # CUDA support + hwloc_have_cuda=no + hwloc_have_cudart=no + if test "x$enable_io" != xno && test "x$enable_cuda" != "xno"; then + echo + echo "**** CUDA configuration" + + # Look for CUDA first, for our test only + if test "x$cudapc" != x; then + HWLOC_PKG_CHECK_MODULES([CUDA], [$cudapc], [cuInit], [cuda.h], [hwloc_have_cuda=yes]) + else + HWLOC_CUDA_CPPFLAGS="$HWLOC_CUDA_COMMON_CPPFLAGS" + HWLOC_CUDA_LDFLAGS="$HWLOC_CUDA_COMMON_LDFLAGS" + tmp_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $HWLOC_CUDA_CPPFLAGS" + tmp_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $HWLOC_CUDA_LDFLAGS" + AC_CHECK_HEADERS([cuda.h], [ + AC_MSG_CHECKING(if CUDA_VERSION >= 3020) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#ifndef CUDA_VERSION +#error CUDA_VERSION undefined +#elif CUDA_VERSION < 3020 +#error CUDA_VERSION too old +#endif]], [[int i = 3;]])], + [AC_MSG_RESULT(yes) + AC_CHECK_LIB([cuda], [cuInit], [ + HWLOC_CUDA_LIBS="-lcuda" + hwloc_have_cuda=yes + ]) + ], + [AC_MSG_RESULT(no)])]) + CPPFLAGS="$tmp_save_CPPFLAGS" + LDFLAGS="$tmp_save_LDFLAGS" + fi + if test x$hwloc_have_cuda = xyes; then + AC_SUBST(HWLOC_CUDA_CPPFLAGS) + AC_SUBST(HWLOC_CUDA_CFLAGS) + AC_SUBST(HWLOC_CUDA_LIBS) + AC_SUBST(HWLOC_CUDA_LDFLAGS) + AC_DEFINE([HAVE_CUDA], 1, [Define to 1 if we have -lcuda]) + fi + + # Look for CUDART now, for library and tests + if test "x$cudartpc" != x; then + HWLOC_PKG_CHECK_MODULES([CUDART], [$cudartpc], [cudaGetDeviceProperties], [cuda_runtime_api.h], [ + hwloc_have_cudart=yes + HWLOC_CUDART_REQUIRES=$cudartpc + ]) + else + HWLOC_CUDART_CPPFLAGS="$HWLOC_CUDA_COMMON_CPPFLAGS" + HWLOC_CUDART_LDFLAGS="$HWLOC_CUDA_COMMON_LDFLAGS" + tmp_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $HWLOC_CUDART_CPPFLAGS" + tmp_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $HWLOC_CUDART_LDFLAGS" + AC_CHECK_HEADERS([cuda_runtime_api.h], [ + AC_MSG_CHECKING(if CUDART_VERSION >= 3020) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#ifndef CUDART_VERSION +#error CUDART_VERSION undefined +#elif CUDART_VERSION < 3020 +#error CUDART_VERSION too old +#endif]], [[int i = 3;]])], + [AC_MSG_RESULT(yes) + AC_CHECK_LIB([cudart], [cudaGetDeviceProperties], [ + HWLOC_CUDART_LIBS="-lcudart" + hwloc_have_cudart=yes + ]) + ]) + ]) + CPPFLAGS="$tmp_save_CPPFLAGS" + LDFLAGS="$tmp_save_LDFLAGS" + fi + if test x$hwloc_have_cudart = xyes; then + AC_MSG_CHECKING([whether a program linked with -lcudart can run]) + tmp_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $HWLOC_CUDART_LDFLAGS" + tmp_save_LIBS="$LIBS" + LIBS="$LIBS $HWLOC_CUDART_LIBS" + AC_RUN_IFELSE([ + AC_LANG_PROGRAM([[ +#include +int cudaGetDeviceCount(int *); +]], [[ +int n; +cudaGetDeviceCount(&n); /* may fail if using stubs, but we're looking for libcudart load error instead only */ +return 0; +]] + )], + [AC_MSG_RESULT([yes]) + hwloc_cuda_warning=no], + [AC_MSG_RESULT([no]) + hwloc_cuda_warning=yes], + [AC_MSG_RESULT([don't know (cross-compiling)])]) + LDFLAGS="$tmp_save_LDFLAGS" + LIBS="$tmp_save_LIBS" + AC_SUBST(HWLOC_CUDART_CPPFLAGS) + AC_SUBST(HWLOC_CUDART_CFLAGS) + AC_SUBST(HWLOC_CUDART_LIBS) + AC_SUBST(HWLOC_CUDART_LDFLAGS) + AC_DEFINE([HWLOC_HAVE_CUDART], [1], [Define to 1 if you have the `cudart' SDK.]) + fi + + AS_IF([test "$enable_cuda" = "yes" -a "$hwloc_have_cudart" = "no"], + [AC_MSG_WARN([Specified --enable-cuda switch, but could not]) + AC_MSG_WARN([find appropriate support]) + AC_MSG_ERROR([Cannot continue])]) + AS_IF([test "x$with_cuda_version" != x -a "$hwloc_have_cudart" = "no"], + [AC_MSG_WARN([Specified --with-cuda-version switch, but could not]) + AC_MSG_WARN([find appropriate support]) + AC_MSG_ERROR([Cannot continue])]) + + if test "x$hwloc_have_cudart" = "xyes"; then + hwloc_components="$hwloc_components cuda" + hwloc_cuda_component_maybeplugin=1 + fi + + echo "**** end of CUDA configuration" + fi + # don't add LIBS/CFLAGS yet, depends on plugins + + # NVML support + hwloc_nvml_happy=no + hwloc_nvml_warning=no + if test "x$enable_io" != xno && test "x$enable_nvml" != "xno"; then + echo + echo "**** NVML configuration" + + hwloc_nvml_happy=yes + HWLOC_NVML_CPPFLAGS="$HWLOC_CUDA_COMMON_CPPFLAGS" + HWLOC_NVML_LDFLAGS="$HWLOC_CUDA_COMMON_LDFLAGS" + tmp_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $HWLOC_NVML_CPPFLAGS" + tmp_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $HWLOC_NVML_LDFLAGS" + tmp_save_LIBS="$LIBS" + AC_CHECK_HEADERS([nvml.h], [ + AC_CHECK_LIB([nvidia-ml], + [nvmlInit], + [AC_MSG_CHECKING([whether a program linked with -lnvidia-ml can run]) + HWLOC_NVML_LIBS="-lnvidia-ml" + LIBS="$LIBS $HWLOC_NVML_LIBS" + AC_RUN_IFELSE([ + AC_LANG_PROGRAM([[ +#include +char nvmlInit (); +]], [[ + return nvmlInit (); +]] + )], + [AC_MSG_RESULT([yes]) + hwloc_nvml_warning=no], + [AC_MSG_RESULT([no]) + hwloc_nvml_warning=yes], + [AC_MSG_RESULT([don't know (cross-compiling)]) + hwloc_nvml_happy=maybe])], + [hwloc_nvml_happy=no]) + ], [hwloc_nvml_happy=no]) + LIBS="$tmp_save_LIBS" + CPPFLAGS="$tmp_save_CPPFLAGS" + LDFLAGS="$tmp_save_LDFLAGS" + + if test "x$hwloc_nvml_happy" = "xyes"; then + tmp_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $HWLOC_NVML_CPPFLAGS" + AC_CHECK_DECLS([nvmlDeviceGetMaxPcieLinkGeneration],,[:],[[#include ]]) + CPPFLAGS="$tmp_save_CPPFLAGS" + fi + + echo "**** end of NVML configuration" + fi + AC_SUBST(HWLOC_NVML_LIBS) + AC_SUBST(HWLOC_NVML_LDFLAGS) + AC_SUBST(HWLOC_NVML_CPPFLAGS) + # If we asked for nvml support but couldn't deliver, fail + AS_IF([test "$enable_nvml" = "yes" -a "$hwloc_nvml_happy" = "no"], + [AC_MSG_WARN([Specified --enable-nvml switch, but could not]) + AC_MSG_WARN([find appropriate support]) + AC_MSG_ERROR([Cannot continue])]) + if test "x$hwloc_nvml_happy" = "xyes"; then + AC_DEFINE([HWLOC_HAVE_NVML], [1], [Define to 1 if you have the `NVML' library.]) + AC_SUBST([HWLOC_HAVE_NVML], [1]) + hwloc_components="$hwloc_components nvml" + hwloc_nvml_component_maybeplugin=1 + else + AC_SUBST([HWLOC_HAVE_NVML], [0]) + fi + # don't add LIBS/CFLAGS/REQUIRES yet, depends on plugins + + # RSMI support, rocm_smi64 is just library name and not related to 32/64 bits + hwloc_rsmi_happy=no + if test "x$enable_io" != xno && test "x$enable_rsmi" != "xno"; then + echo + echo "**** RSMI configuration" + + # Try to find the ROCm default path a specific ROCm version + # Use --with-rocm-version first, or $CUDA_VERSION + rocm_version=$ROCM_VERSION + if test "x$with_rocm_version" != xno -a "x$with_rocm_version" != x; then + rocm_version=$with_rocm_version + fi + if test "x$with_rocm" != x -a "x$with_rocm" != xyes; then + rocm_dir=$with_rocm + AC_MSG_NOTICE([using custom ROCm install path $rocm_dir ...]) + else if test "x$rocm_version" != x; then + rocm_dir=/opt/rocm-${rocm_version} + AC_MSG_NOTICE([assuming ROCm $rocm_version is installed in $rocm_dir ...]) + else if test -d /opt/rocm; then + rocm_dir=/opt/rocm + AC_MSG_NOTICE([using standard ROCm install path $rocm_dir ...]) + else + AC_MSG_NOTICE([assuming ROCm is installed in standard directories ...]) + fi fi fi + if test "x$rocm_dir" != x; then + HWLOC_RSMI_CPPFLAGS="-I$rocm_dir/rocm_smi/include/" + HWLOC_RSMI_LDFLAGS="-L$rocm_dir/rocm_smi/lib/" + fi + + hwloc_rsmi_happy=yes + CPPFLAGS_save="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $HWLOC_RSMI_CPPFLAGS" + AC_CHECK_HEADERS([rocm_smi/rocm_smi.h], [ + LDFLAGS_save="$LDFLAGS" + LDFLAGS="$LDFLAGS $HWLOC_RSMI_LDFLAGS" + LIBS_save="$LIBS" + AC_CHECK_LIB([rocm_smi64], + [rsmi_init], + [AC_MSG_CHECKING([whether a program linked with -lrocm_smi64 can run]) + HWLOC_RSMI_LIBS="-lrocm_smi64" + LIBS="$LIBS $HWLOC_RSMI_LIBS" + AC_RUN_IFELSE([ + AC_LANG_PROGRAM([[ +#include +char rsmi_init(int); +]], [[ +return rsmi_init(0); +]] + )], + [AC_MSG_RESULT([yes]) + hwloc_rsmi_warning=no], + [AC_MSG_RESULT([no]) + hwloc_rsmi_warning=yes], + [AC_MSG_RESULT([don't know (cross-compiling)])])], + [hwloc_rsmi_happy=no]) + LDFLAGS="$LDFLAGS_save" + LIBS="$LIBS_save" + ], [hwloc_rsmi_happy=no]) + CPPFLAGS="$CPPFLAGS_save" + + echo "**** end of RSMI configuration" + fi + AC_SUBST(HWLOC_RSMI_CPPFLAGS) + AC_SUBST(HWLOC_RSMI_LDFLAGS) + AC_SUBST(HWLOC_RSMI_LIBS) + # If we asked for rsmi support but couldn't deliver, fail + AS_IF([test "$enable_rsmi" = "yes" -a "$hwloc_rsmi_happy" = "no"], + [AC_MSG_WARN([Specified --enable-rsmi switch, but could not]) + AC_MSG_WARN([find appropriate support]) + AC_MSG_ERROR([Cannot continue])]) + if test "x$hwloc_rsmi_happy" = "xyes"; then + AC_DEFINE([HWLOC_HAVE_RSMI], [1], [Define to 1 if you have the `RSMI' library.]) + AC_SUBST([HWLOC_HAVE_RSMI], [1]) + hwloc_components="$hwloc_components rsmi" + hwloc_rsmi_component_maybeplugin=1 + else + AC_SUBST([HWLOC_HAVE_RSMI], [0]) + fi + # don't add LIBS/CFLAGS/REQUIRES yet, depends on plugins + + # OpenCL support + hwloc_opencl_happy=no + if test "x$enable_io" != xno && test "x$enable_opencl" != "xno"; then + echo + echo "**** OpenCL configuration" + + hwloc_opencl_happy=yes + case ${target} in + *-*-darwin*) + # On Darwin, only use the OpenCL framework + AC_CHECK_HEADERS([OpenCL/cl_ext.h], [ + AC_MSG_CHECKING([for the OpenCL framework]) + tmp_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -framework OpenCL" + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([[ +#include + ]], [[ +return clGetDeviceIDs(0, 0, 0, NULL, NULL); + ]])], + [AC_MSG_RESULT(yes) + HWLOC_OPENCL_LDFLAGS="-framework OpenCL"], + [AC_MSG_RESULT(no) + hwloc_opencl_happy=no]) + LDFLAGS="$tmp_save_LDFLAGS" + ], [hwloc_opencl_happy=no]) + ;; + *) + # On Others, look for OpenCL at normal locations + HWLOC_OPENCL_CPPFLAGS="$HWLOC_CUDA_COMMON_CPPFLAGS" + HWLOC_OPENCL_LDFLAGS="$HWLOC_CUDA_COMMON_LDFLAGS" + if test "x$rocm_dir" != x; then + HWLOC_OPENCL_CPPFLAGS="$HWLOC_OPENCL_CPPFLAGS -I$rocm_dir/opencl/include/" + HWLOC_OPENCL_LDFLAGS="$HWLOC_OPENCL_LDFLAGS -L$rocm_dir/opencl/lib/" + fi + tmp_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $HWLOC_OPENCL_CPPFLAGS" + tmp_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $HWLOC_OPENCL_LDFLAGS" + AC_CHECK_HEADERS([CL/cl_ext.h], [ + AC_CHECK_LIB([OpenCL], [clGetDeviceIDs], [HWLOC_OPENCL_LIBS="-lOpenCL"], [hwloc_opencl_happy=no]) + ], [hwloc_opencl_happy=no]) + CPPFLAGS="$tmp_save_CPPFLAGS" + LDFLAGS="$tmp_save_LDFLAGS" + ;; + esac + + echo "**** end of OpenCL configuration" + fi + AC_SUBST(HWLOC_OPENCL_CPPFLAGS) + AC_SUBST(HWLOC_OPENCL_LIBS) + AC_SUBST(HWLOC_OPENCL_LDFLAGS) + # If we asked for opencl support but couldn't deliver, fail + AS_IF([test "$enable_opencl" = "yes" -a "$hwloc_opencl_happy" = "no"], + [AC_MSG_WARN([Specified --enable-opencl switch, but could not]) + AC_MSG_WARN([find appropriate support]) + AC_MSG_ERROR([Cannot continue])]) + if test "x$hwloc_opencl_happy" = "xyes"; then + AC_DEFINE([HWLOC_HAVE_OPENCL], [1], [Define to 1 if you have the `OpenCL' library.]) + AC_SUBST([HWLOC_HAVE_OPENCL], [1]) + hwloc_components="$hwloc_components opencl" + hwloc_opencl_component_maybeplugin=1 + else + AC_SUBST([HWLOC_HAVE_OPENCL], [0]) + fi + # don't add LIBS/CFLAGS/REQUIRES yet, depends on plugins + + # LevelZero support + hwloc_levelzero_happy=no + if test "x$enable_io" != xno && test "x$enable_levelzero" != "xno"; then + echo + echo "**** LevelZero configuration" + + HWLOC_PKG_CHECK_MODULES([LEVELZERO], [libze_loader], [zesDevicePciGetProperties], [level_zero/zes_api.h], + [hwloc_levelzero_happy=yes + HWLOC_LEVELZERO_REQUIRES=libze_loader + ], [hwloc_levelzero_happy=no]) + if test x$hwloc_levelzero_happy = xno; then + hwloc_levelzero_happy=yes + AC_CHECK_HEADERS([level_zero/ze_api.h], [ + AC_CHECK_LIB([ze_loader], [zeInit], [ + AC_CHECK_HEADERS([level_zero/zes_api.h], [ + AC_CHECK_LIB([ze_loader], [zesDevicePciGetProperties], [HWLOC_LEVELZERO_LIBS="-lze_loader"], [hwloc_levelzero_happy=no]) + ], [hwloc_levelzero_happy=no]) + ], [hwloc_levelzero_happy=no]) + ], [hwloc_levelzero_happy=no]) + fi + + echo "**** end of LevelZero configuration" + fi + AC_SUBST(HWLOC_LEVELZERO_LIBS) + # If we asked for LevelZero support but couldn't deliver, fail + AS_IF([test "$enable_levelzero" = "yes" -a "$hwloc_levelzero_happy" = "no"], + [AC_MSG_WARN([Specified --enable-levelzero switch, but could not]) + AC_MSG_WARN([find appropriate support]) + AC_MSG_ERROR([Cannot continue])]) + if test "x$hwloc_levelzero_happy" = "xyes"; then + AC_DEFINE([HWLOC_HAVE_LEVELZERO], [1], [Define to 1 if you have the `LevelZero' library.]) + AC_SUBST([HWLOC_HAVE_LEVELZERO], [1]) + hwloc_components="$hwloc_components levelzero" + hwloc_levelzero_component_maybeplugin=1 + else + AC_SUBST([HWLOC_HAVE_LEVELZERO], [0]) + fi + # don't add LIBS/CFLAGS/REQUIRES yet, depends on plugins + + # GL Support + hwloc_gl_happy=no + if test "x$enable_io" != xno && test "x$enable_gl" != "xno"; then + echo + echo "**** NVIDIA GL configuration" + + hwloc_gl_happy=yes + + # some X11 support (less then lstopo in hwloc_internal.m4) + AC_PATH_XTRA + + CPPFLAGS_save=$CPPFLAGS + LIBS_save=$LIBS + + CPPFLAGS="$CPPFLAGS $X_CFLAGS" + LIBS="$LIBS $X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS" + AC_CHECK_HEADERS([X11/Xlib.h], + [AC_CHECK_LIB([X11], [XOpenDisplay], + [hwloc_enable_X11=yes]) + ]) + CPPFLAGS=$CPPFLAGS_save + LIBS=$LIBS_save + + AS_IF([test "$hwloc_enable_X11" != "yes"], + [AC_MSG_WARN([X11 not found; GL disabled]) + hwloc_gl_happy=no]) + + AC_CHECK_HEADERS([NVCtrl/NVCtrl.h], [ + AC_CHECK_LIB([XNVCtrl], [XNVCTRLQueryTargetAttribute], [:], [hwloc_gl_happy=no], [-lXext]) + ], [hwloc_gl_happy=no]) + + if test "x$hwloc_gl_happy" = "xyes"; then + AC_DEFINE([HWLOC_HAVE_GL], [1], [Define to 1 if you have the GL module components.]) + HWLOC_GL_LIBS="-lXNVCtrl -lXext -lX11" + AC_SUBST(HWLOC_GL_LIBS) + # FIXME we actually don't know if xext.pc and x11.pc are installed + # since we didn't look for Xext and X11 using pkg-config + HWLOC_GL_REQUIRES="xext x11" + hwloc_have_gl=yes + hwloc_components="$hwloc_components gl" + hwloc_gl_component_maybeplugin=1 + else + AS_IF([test "$enable_gl" = "yes"], [ + AC_MSG_WARN([Specified --enable-gl switch, but could not]) + AC_MSG_WARN([find appropriate support]) + AC_MSG_ERROR([Cannot continue]) + ]) + fi + + echo "**** end of NVIDIA GL configuration" + fi + # don't add LIBS/CFLAGS yet, depends on plugins + + # libxml2 support + hwloc_libxml2_happy= + if test "x$enable_libxml2" != "xno"; then + echo + echo "**** libxml2 configuration" + + HWLOC_PKG_CHECK_MODULES([LIBXML2], [libxml-2.0], [xmlNewDoc], [libxml/parser.h], + [hwloc_libxml2_happy=yes], + [hwloc_libxml2_happy=no]) + + echo "**** end of libxml2 configuration" + fi + if test "x$hwloc_libxml2_happy" = "xyes"; then + HWLOC_LIBXML2_REQUIRES="libxml-2.0" + AC_DEFINE([HWLOC_HAVE_LIBXML2], [1], [Define to 1 if you have the `libxml2' library.]) + AC_SUBST([HWLOC_HAVE_LIBXML2], [1]) + + hwloc_components="$hwloc_components xml_libxml" + hwloc_xml_libxml_component_maybeplugin=1 + else + AC_SUBST([HWLOC_HAVE_LIBXML2], [0]) + AS_IF([test "$enable_libxml2" = "yes"], + [AC_MSG_WARN([--enable-libxml2 requested, but libxml2 was not found]) + AC_MSG_ERROR([Cannot continue])]) + fi + # don't add LIBS/CFLAGS/REQUIRES yet, depends on plugins + + # Try to compile the x86 cpuid inlines + if test "x$enable_cpuid" != "xno"; then + echo + echo "**** x86 CPUID configuration" + + AC_MSG_CHECKING([for x86 cpuid]) + old_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I$HWLOC_top_srcdir/include" + # We need hwloc_uint64_t but we can't use autogen/config.h before configure ends. + # So pass #include/#define manually here for now. + CPUID_CHECK_HEADERS= + CPUID_CHECK_DEFINE= + if test "x$hwloc_windows" = xyes; then + X86_CPUID_CHECK_HEADERS="#include " + X86_CPUID_CHECK_DEFINE="#define hwloc_uint64_t DWORDLONG" + else + X86_CPUID_CHECK_DEFINE="#define hwloc_uint64_t uint64_t" + if test "x$ac_cv_header_stdint_h" = xyes; then + X86_CPUID_CHECK_HEADERS="#include " + fi + fi + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #include + $X86_CPUID_CHECK_HEADERS + $X86_CPUID_CHECK_DEFINE + #define __hwloc_inline + #include + ]], [[ + if (hwloc_have_x86_cpuid()) { + unsigned eax = 0, ebx, ecx = 0, edx; + hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx); + printf("highest x86 cpuid %x\n", eax); + return 0; + } + ]])], + [AC_MSG_RESULT([yes]) + AC_DEFINE(HWLOC_HAVE_X86_CPUID, 1, [Define to 1 if you have x86 cpuid]) + hwloc_have_x86_cpuid=yes], + [AC_MSG_RESULT([no])]) + if test "x$hwloc_have_x86_cpuid" = xyes; then + hwloc_components="$hwloc_components x86" + fi + CPPFLAGS="$old_CPPFLAGS" + + echo "**** end of x86 CPUID configuration" + fi + + # + # Now enable registration of listed components + # + echo + echo "**** component and plugin-specific configuration" + + # Plugin support + AC_MSG_CHECKING([if plugin support is enabled]) + # Plugins (even core support) are totally disabled by default. + # Pass --enable-plugins=foo (with "foo" NOT an existing component) to enable plugins but build none of them. + if test "x$enable_plugins" = xyes; then + hwloc_have_plugins=yes + requested_plugins="$hwloc_components" + else if test "x$enable_plugins" != xno -a "x$enable_plugins" != x; then + hwloc_have_plugins=yes + requested_plugins=`echo $enable_plugins | sed -e 's/,/ /g'` + else + hwloc_have_plugins=no + fi fi + AC_MSG_RESULT($hwloc_have_plugins) + + if test "x$hwloc_have_plugins" = xyes; then + # dlopen and ltdl (at least 2.4.2) doesn't work on AIX + # posix linkers don't work well with plugins and windows dll constraints + if test "x$enable_plugin_dlopen" = x; then + if test "x$hwloc_aix" = "xyes"; then + AC_MSG_WARN([dlopen does not work on AIX, disabled by default.]) + enable_plugin_dlopen=no + else if test "x$hwloc_windows" = "xyes"; then + AC_MSG_WARN([dlopen not supported on non-native Windows build, disabled by default.]) + enable_plugin_dlopen=no + fi fi + fi + if test "x$enable_plugin_ltdl" = x; then + if test "x$hwloc_aix" = "xyes"; then + AC_MSG_WARN([ltdl does not work on AIX, disabled by default.]) + enable_plugin_dlopen=no + else if test "x$hwloc_windows" = "xyes"; then + AC_MSG_WARN([ltdl not supported on non-native Windows build, disabled by default.]) + enable_plugin_dlopen=no + fi fi + fi + + # Look for dlopen + if test "x$enable_plugin_dlopen" != xno; then + HWLOC_CHECK_DLOPEN([hwloc_dlopen_ready], [hwloc_dlopen_libs]) + fi + # Look for ltdl + if test "x$enable_plugin_ltdl" != xno; then + HWLOC_CHECK_LTDL([hwloc_ltdl_ready], [hwloc_ltdl_libs]) + fi + + # Now use dlopen by default, or ltdl, or just fail to enable plugins + AC_MSG_CHECKING([which library to use for loading plugins]) + if test "x$hwloc_dlopen_ready" = xyes; then + AC_MSG_RESULT([dlopen]) + hwloc_plugins_load=dlopen + # Now enable dlopen libs + HWLOC_DL_LIBS="$hwloc_dlopen_libs" + AC_SUBST(HWLOC_DL_LIBS) + else if test x$hwloc_ltdl_ready = xyes; then + AC_MSG_RESULT([ltdl]) + hwloc_plugins_load=ltdl + # Now enable ltdl libs + AC_DEFINE([HWLOC_HAVE_LTDL], 1, [Define to 1 if the hwloc library should use ltdl for loading plugins]) + HWLOC_LTDL_LIBS="$hwloc_ltdl_libs" + AC_SUBST(HWLOC_LTDL_LIBS) + # Add ltdl static-build dependencies to hwloc.pc + HWLOC_CHECK_LTDL_DEPS + else + AC_MSG_RESULT([none]) + AC_MSG_WARN([Plugin support requested, but could not enable dlopen or ltdl]) + AC_MSG_ERROR([Cannot continue]) + fi fi + + AC_DEFINE([HWLOC_HAVE_PLUGINS], 1, [Define to 1 if the hwloc library should support dynamically-loaded plugins]) + fi + + AC_ARG_WITH([hwloc-plugins-path], + AS_HELP_STRING([--with-hwloc-plugins-path=dir:...], + [Colon-separated list of plugin directories. Default: "$prefix/lib/hwloc". Plugins will be installed in the first directory. They will be loaded from all of them, in order.]), + [HWLOC_PLUGINS_PATH="$with_hwloc_plugins_path"], + [HWLOC_PLUGINS_PATH="\$(libdir)/hwloc"]) + AC_SUBST(HWLOC_PLUGINS_PATH) + HWLOC_PLUGINS_DIR=`echo "$HWLOC_PLUGINS_PATH" | cut -d: -f1` + AC_SUBST(HWLOC_PLUGINS_DIR) + + # Static components output file + hwloc_static_components_dir=${HWLOC_top_builddir}/hwloc + mkdir -p "${hwloc_static_components_dir}" + hwloc_static_components_file=${hwloc_static_components_dir}/static-components.h + rm -f "${hwloc_static_components_file}" + + HWLOC_PREPARE_FILTER_COMPONENTS([$requested_plugins]) + # Now we have some hwloc__component_wantplugin=1 + + # See which core components want plugin and support it + HWLOC_FILTER_COMPONENTS + # Now we have some hwloc__component=plugin/static + # and hwloc_static/plugin_components=list (space separated) + AC_MSG_CHECKING([components to build statically]) + AC_MSG_RESULT($hwloc_static_components) + HWLOC_LIST_STATIC_COMPONENTS(["$hwloc_static_components_file"], [$hwloc_static_components]) + AC_MSG_CHECKING([components to build as plugins]) + AC_MSG_RESULT([$hwloc_plugin_components]) + + AS_IF([test "$hwloc_pci_component" = "static"], + [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_PCIACCESS_LIBS" + HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_PCIACCESS_LDFLAGS" + HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_PCIACCESS_CPPFLAGS $HWLOC_PCIACCESS_CFLAGS" + HWLOC_REQUIRES="$HWLOC_PCIACCESS_REQUIRES $HWLOC_REQUIRES" + AC_DEFINE([HWLOC_PCI_COMPONENT_BUILTIN], 1, [Define if the PCI component is built statically inside libhwloc])]) + AS_IF([test "$hwloc_opencl_component" = "static"], + [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_OPENCL_LIBS" + HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_OPENCL_LDFLAGS" + HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_OPENCL_CPPFLAGS $HWLOC_OPENCL_CFLAGS" + HWLOC_REQUIRES="$HWLOC_OPENCL_REQUIRES $HWLOC_REQUIRES" + AC_DEFINE([HWLOC_OPENCL_COMPONENT_BUILTIN], 1, [Define if the OpenCL component is built statically inside libhwloc])]) + AS_IF([test "$hwloc_cuda_component" = "static"], + [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_CUDART_LIBS" + HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_CUDART_LDFLAGS" + HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_CUDART_CPPFLAGS $HWLOC_CUDART_CFLAGS" + HWLOC_REQUIRES="$HWLOC_CUDART_REQUIRES $HWLOC_REQUIRES" + AC_DEFINE([HWLOC_CUDA_COMPONENT_BUILTIN], 1, [Define if the CUDA component is built statically inside libhwloc])]) + AS_IF([test "$hwloc_nvml_component" = "static"], + [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_NVML_LIBS" + HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_NVML_LDFLAGS" + HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_NVML_CPPFLAGS $HWLOC_NVML_CFLAGS" + HWLOC_REQUIRES="$HWLOC_NVML_REQUIRES $HWLOC_REQUIRES" + AC_DEFINE([HWLOC_NVML_COMPONENT_BUILTIN], 1, [Define if the NVML component is built statically inside libhwloc])]) + AS_IF([test "$hwloc_rsmi_component" = "static"], + [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_RSMI_LIBS" + HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_RSMI_LDFLAGS" + HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_RSMI_CPPFLAGS $HWLOC_RSMI_CFLAGS" + HWLOC_REQUIRES="$HWLOC_RSMI_REQUIRES $HWLOC_REQUIRES" + AC_DEFINE([HWLOC_RSMI_COMPONENT_BUILTIN], 1, [Define if the RSMI component is built statically inside libhwloc])]) + AS_IF([test "$hwloc_levelzero_component" = "static"], + [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_LEVELZERO_LIBS" + HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_LEVELZERO_LDFLAGS" + HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_LEVELZERO_CPPFLAGS $HWLOC_LEVELZERO_CFLAGS" + HWLOC_REQUIRES="$HWLOC_LEVELZERO_REQUIRES $HWLOC_REQUIRES" + AC_DEFINE([HWLOC_LEVELZERO_COMPONENT_BUILTIN], 1, [Define if the LevelZero component is built statically inside libhwloc])]) + AS_IF([test "$hwloc_gl_component" = "static"], + [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_GL_LIBS" + HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_GL_LDFLAGS" + HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_GL_CPPFLAGS $HWLOC_GL_CFLAGS" + HWLOC_REQUIRES="$HWLOC_GL_REQUIRES $HWLOC_REQUIRES" + AC_DEFINE([HWLOC_GL_COMPONENT_BUILTIN], 1, [Define if the GL component is built statically inside libhwloc])]) + AS_IF([test "$hwloc_xml_libxml_component" = "static"], + [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_LIBXML2_LIBS" + HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_LIBXML2_LDFLAGS" + HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_LIBXML2_CPPFLAGS $HWLOC_LIBXML2_CFLAGS" + HWLOC_REQUIRES="$HWLOC_LIBXML2_REQUIRES $HWLOC_REQUIRES" + AC_DEFINE([HWLOC_XML_LIBXML_COMPONENT_BUILTIN], 1, [Define if the libxml XML component is built statically inside libhwloc])]) + + echo "**** end of component and plugin configuration" + + # + # Setup HWLOC's C, CPP, and LD flags, and LIBS + # + AC_SUBST(HWLOC_REQUIRES) + AC_SUBST(HWLOC_CFLAGS) + HWLOC_CPPFLAGS='-I"$(HWLOC_top_builddir)"/include -I"$(HWLOC_top_srcdir)"/include' + AC_SUBST(HWLOC_CPPFLAGS) + AC_SUBST(HWLOC_LDFLAGS) + AC_SUBST(HWLOC_LIBS) + AC_SUBST(HWLOC_LIBS_PRIVATE) + + # Set these values explicitly for embedded builds. Exporting + # these values through *_EMBEDDED_* values gives us the freedom to + # do something different someday if we ever need to. There's no + # need to fill these values in unless we're in embedded mode. + # Indeed, if we're building in embedded mode, we want HWLOC_LIBS + # to be empty so that nothing is linked into libhwloc_embedded.la + # itself -- only the upper-layer will link in anything required. + + AS_IF([test "$hwloc_mode" = "embedded"], + [HWLOC_EMBEDDED_CFLAGS=$HWLOC_CFLAGS + HWLOC_EMBEDDED_CPPFLAGS=$HWLOC_CPPFLAGS + HWLOC_EMBEDDED_LDFLAGS=$HWLOC_LDFLAGS + HWLOC_EMBEDDED_LDADD='$(HWLOC_top_builddir)/hwloc/libhwloc_embedded.la' + HWLOC_EMBEDDED_LIBS=$HWLOC_LIBS + HWLOC_LIBS=]) + AC_SUBST(HWLOC_EMBEDDED_CFLAGS) + AC_SUBST(HWLOC_EMBEDDED_CPPFLAGS) + AC_SUBST(HWLOC_EMBEDDED_LDFLAGS) + AC_SUBST(HWLOC_EMBEDDED_LDADD) + AC_SUBST(HWLOC_EMBEDDED_LIBS) + + # Always generate these files + AC_CONFIG_FILES( + hwloc_config_prefix[Makefile] + hwloc_config_prefix[include/Makefile] + hwloc_config_prefix[hwloc/Makefile] + ) + + # Cleanup + AC_LANG_POP + + # Success + $2 +])dnl + +#----------------------------------------------------------------------- + +# Specify the symbol prefix +AC_DEFUN([HWLOC_SET_SYMBOL_PREFIX],[ + hwloc_symbol_prefix_value=$1 +])dnl + +#----------------------------------------------------------------------- + +# This must be a standalone routine so that it can be called both by +# HWLOC_INIT and an external caller (if HWLOC_INIT is not invoked). +AC_DEFUN([HWLOC_DO_AM_CONDITIONALS],[ + AS_IF([test "$hwloc_did_am_conditionals" != "yes"],[ + AM_CONDITIONAL([HWLOC_BUILD_STANDALONE], [test "$hwloc_mode" = "standalone"]) + + AM_CONDITIONAL([HWLOC_HAVE_GCC], [test "x$GCC" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_MS_LIB], [test "x$HWLOC_MS_LIB" != "x"]) + AM_CONDITIONAL([HWLOC_HAVE_OPENAT], [test "x$hwloc_have_openat" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_SCHED_SETAFFINITY], + [test "x$hwloc_have_sched_setaffinity" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_PTHREAD], + [test "x$hwloc_have_pthread" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_LINUX_LIBNUMA], + [test "x$hwloc_have_linux_libnuma" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_LIBIBVERBS], + [test "x$hwloc_have_libibverbs" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_CUDA], + [test "x$hwloc_have_cuda" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_GL], + [test "x$hwloc_have_gl" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_CUDART], + [test "x$hwloc_have_cudart" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_LIBXML2], [test "$hwloc_libxml2_happy" = "yes"]) + AM_CONDITIONAL([HWLOC_HAVE_CAIRO], [test "$hwloc_cairo_happy" = "yes"]) + AM_CONDITIONAL([HWLOC_HAVE_PCIACCESS], [test "$hwloc_pciaccess_happy" = "yes"]) + AM_CONDITIONAL([HWLOC_HAVE_OPENCL], [test "$hwloc_opencl_happy" = "yes"]) + AM_CONDITIONAL([HWLOC_HAVE_NVML], [test "$hwloc_nvml_happy" = "yes"]) + AM_CONDITIONAL([HWLOC_HAVE_RSMI], [test "$hwloc_rsmi_happy" = "yes"]) + AM_CONDITIONAL([HWLOC_HAVE_LEVELZERO], [test "$hwloc_levelzero_happy" = "yes"]) + AM_CONDITIONAL([HWLOC_HAVE_BUNZIPP], [test "x$BUNZIPP" != "xfalse"]) + AM_CONDITIONAL([HWLOC_HAVE_USER32], [test "x$hwloc_have_user32" = "xyes"]) + + AM_CONDITIONAL([HWLOC_BUILD_DOXYGEN], + [test "x$hwloc_generate_doxs" = "xyes"]) + AM_CONDITIONAL([HWLOC_BUILD_README], + [test "x$hwloc_generate_readme" = "xyes" -a \( "x$hwloc_install_doxs" = "xyes" -o "x$hwloc_generate_doxs" = "xyes" \) ]) + AM_CONDITIONAL([HWLOC_INSTALL_DOXYGEN], + [test "x$hwloc_install_doxs" = "xyes"]) + + AM_CONDITIONAL([HWLOC_HAVE_LINUX], [test "x$hwloc_linux" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_BGQ], [test "x$hwloc_bgq" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_IRIX], [test "x$hwloc_irix" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_DARWIN], [test "x$hwloc_darwin" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_FREEBSD], [test "x$hwloc_freebsd" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_NETBSD], [test "x$hwloc_netbsd" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_SOLARIS], [test "x$hwloc_solaris" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_AIX], [test "x$hwloc_aix" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_HPUX], [test "x$hwloc_hpux" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_WINDOWS], [test "x$hwloc_windows" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_MINGW32], [test "x$target_os" = "xmingw32"]) + + AM_CONDITIONAL([HWLOC_HAVE_X86], [test "x$hwloc_x86_32" = "xyes" -o "x$hwloc_x86_64" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_X86_32], [test "x$hwloc_x86_32" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_X86_64], [test "x$hwloc_x86_64" = "xyes"]) + AM_CONDITIONAL([HWLOC_HAVE_X86_CPUID], [test "x$hwloc_have_x86_cpuid" = "xyes"]) + + AM_CONDITIONAL([HWLOC_HAVE_32BITS_PCI_DOMAIN], [test "x$enable_32bits_pci_domain" = "xyes"]) + + AM_CONDITIONAL([HWLOC_HAVE_PLUGINS], [test "x$hwloc_have_plugins" = "xyes"]) + AM_CONDITIONAL([HWLOC_PCI_BUILD_STATIC], [test "x$hwloc_pci_component" = "xstatic"]) + AM_CONDITIONAL([HWLOC_OPENCL_BUILD_STATIC], [test "x$hwloc_opencl_component" = "xstatic"]) + AM_CONDITIONAL([HWLOC_CUDA_BUILD_STATIC], [test "x$hwloc_cuda_component" = "xstatic"]) + AM_CONDITIONAL([HWLOC_NVML_BUILD_STATIC], [test "x$hwloc_nvml_component" = "xstatic"]) + AM_CONDITIONAL([HWLOC_RSMI_BUILD_STATIC], [test "x$hwloc_rsmi_component" = "xstatic"]) + AM_CONDITIONAL([HWLOC_LEVELZERO_BUILD_STATIC], [test "x$hwloc_levelzero_component" = "xstatic"]) + AM_CONDITIONAL([HWLOC_GL_BUILD_STATIC], [test "x$hwloc_gl_component" = "xstatic"]) + AM_CONDITIONAL([HWLOC_XML_LIBXML_BUILD_STATIC], [test "x$hwloc_xml_libxml_component" = "xstatic"]) + + AM_CONDITIONAL([HWLOC_HAVE_CXX], [test "x$hwloc_have_cxx" = "xyes"]) + ]) + hwloc_did_am_conditionals=yes + + # For backwards compatibility (i.e., packages that only call + # HWLOC_DO_AM_CONDITIONS, not NETLOC DO_AM_CONDITIONALS), we also have to + # do the netloc AM conditionals here + NETLOC_DO_AM_CONDITIONALS +])dnl + +#----------------------------------------------------------------------- + +dnl HWLOC_CHECK_DECL +dnl +dnl Check that the declaration of the given function has a complete prototype +dnl with argument list by trying to call it with an insane dnl number of +dnl arguments (10). Success means the compiler couldn't really check. +AC_DEFUN([_HWLOC_CHECK_DECL], [ + AC_CHECK_DECL([$1], [ + AC_MSG_CHECKING([whether function $1 has a complete prototype]) + AC_REQUIRE([AC_PROG_CC]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM( + [AC_INCLUDES_DEFAULT([$4])], + [$1(1,2,3,4,5,6,7,8,9,10);] + )], + [AC_MSG_RESULT([no]) + $3], + [AC_MSG_RESULT([yes]) + $2] + )], [$3], $4 + ) +]) + +#----------------------------------------------------------------------- + +dnl HWLOC_CHECK_DECLS +dnl +dnl Same as HWLOCK_CHECK_DECL, but defines HAVE_DECL_foo to 1 or 0 depending on +dnl the result. +AC_DEFUN([_HWLOC_CHECK_DECLS], [ + HWLOC_CHECK_DECL([$1], [ac_have_decl=1], [ac_have_decl=0], [$4]) + AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_DECL_$1]), [$ac_have_decl], + [Define to 1 if you have the declaration of `$1', and to 0 if you don't]) +]) + +#----------------------------------------------------------------------- + +dnl HWLOC_CHECK_DLOPEN +dnl +dnl set $1 to yes or not +dnl set $2 to -ldl or so +AC_DEFUN([HWLOC_CHECK_DLOPEN], [ + [$1]=no + AC_MSG_CHECKING([for dlopen]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([[ + #include + #include + void *handle; + ]], [[ + handle = dlopen(NULL, RTLD_NOW|RTLD_LOCAL); + ]])], + [AC_MSG_RESULT([yes]) + [$1]=yes], + [AC_MSG_RESULT([no]) + AC_CHECK_HEADER([dlfcn.h], + [AC_CHECK_LIB([dl], [dlopen], + [[$1]=yes + [$2]=-ldl]) + ]) + ]) +]) + +#----------------------------------------------------------------------- + +dnl HWLOC_CHECK_LTDL +dnl +dnl set $1 to yes or not +dnl set $2 to -lltdl or so +AC_DEFUN([HWLOC_CHECK_LTDL], [ + [$1]=no + AC_CHECK_HEADER([ltdl.h], + [AC_CHECK_LIB([ltdl], [lt_dlopenext], + [[$1]=yes + [$2]=-lltdl]) + ]) +]) + +#----------------------------------------------------------------------- + +dnl HWLOC_CHECK_LTDL_DEPS +dnl +dnl Add ltdl dependencies to HWLOC_LIBS_PRIVATE +AC_DEFUN([HWLOC_CHECK_LTDL_DEPS], [ + # save variables that we'll modify below + save_lt_cv_dlopen="$lt_cv_dlopen" + save_lt_cv_dlopen_libs="$lt_cv_dlopen_libs" + save_lt_cv_dlopen_self="$lt_cv_dlopen_self" + ########################################################### + # code stolen from LT_SYS_DLOPEN_SELF in libtool.m4 + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + # end of code stolen from LT_SYS_DLOPEN_SELF in libtool.m4 + ########################################################### + + HWLOC_LIBS_PRIVATE="$HWLOC_LIBS_PRIVATE $lt_cv_dlopen_libs" + + # restore modified variable in case the actual libtool code uses them + lt_cv_dlopen="$save_lt_cv_dlopen" + lt_cv_dlopen_libs="$save_lt_cv_dlopen_libs" + lt_cv_dlopen_self="$save_lt_cv_dlopen_self" +]) diff --git a/3rd-party/hwloc-2.7.1/config/hwloc_check_attributes.m4 b/3rd-party/hwloc-2.7.1/config/hwloc_check_attributes.m4 new file mode 100644 index 0000000000000000000000000000000000000000..5062beb4ddbed5013fd2d5a8357ad6ea266a2aff --- /dev/null +++ b/3rd-party/hwloc-2.7.1/config/hwloc_check_attributes.m4 @@ -0,0 +1,555 @@ +# This macro set originally copied from Open MPI: +# Copyright © 2004-2007 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright © 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright © 2004-2007 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright © 2004-2005 The Regents of the University of California. +# All rights reserved. +# and renamed for hwloc: +# Copyright © 2009-2021 Inria. All rights reserved. +# Copyright © 2009 Université Bordeaux +# Copyright © 2010 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. +# +# 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. +# + +# +# Search the generated warnings for +# keywords regarding skipping or ignoring certain attributes +# Intel: ignore +# Sun C++: skip +# +AC_DEFUN([_HWLOC_ATTRIBUTE_FAIL_SEARCH],[ + # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) + m4_ifdef([AC_PROG_GREP], + [AC_REQUIRE([AC_PROG_GREP])], + [GREP=grep]) + + if test -s conftest.err ; then + for i in ignore skip ; do + $GREP -iq $i conftest.err + if test "$?" = "0" ; then + hwloc_cv___attribute__[$1]=0 + break; + fi + done + fi +]) + +# +# HWLOC: Remove C++ compiler check. It can result in a circular +# dependency in embedded situations. +# +# Check for one specific attribute by compiling with C +# and possibly using a cross-check. +# +# If the cross-check is defined, a static function "usage" should be +# defined, which is to be called from main (to circumvent warnings +# regarding unused function in main file) +# static int usage (int * argument); +# +# The last argument is for specific CFLAGS, that need to be set +# for the compiler to generate a warning on the cross-check. +# This may need adaption for future compilers / CFLAG-settings. +# +AC_DEFUN([_HWLOC_CHECK_SPECIFIC_ATTRIBUTE], [ + AC_MSG_CHECKING([for __attribute__([$1])]) + AC_CACHE_VAL(hwloc_cv___attribute__[$1], [ + # + # Try to compile using the C compiler + # + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([$2], [])], + [ + # + # In case we did succeed: Fine, but was this due to the + # attribute being ignored/skipped? Grep for IgNoRe/skip in conftest.err + # and if found, reset the hwloc_cv__attribute__var=0 + # + hwloc_cv___attribute__[$1]=1 + _HWLOC_ATTRIBUTE_FAIL_SEARCH([$1]) + ], + [hwloc_cv___attribute__[$1]=0]) + + # + # If the attribute is supported by both compilers, + # try to recompile a *cross-check*, IFF defined. + # + if test '(' "$hwloc_cv___attribute__[$1]" = "1" -a "[$3]" != "" ')' ; then + ac_c_werror_flag_safe=$ac_c_werror_flag + ac_c_werror_flag="yes" + CFLAGS_safe=$CFLAGS + CFLAGS="$CFLAGS [$4]" + + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [$3], + [ + int i=4711; + i=usage(&i); + ]) + ], + [hwloc_cv___attribute__[$1]=0], + [ + # + # In case we did NOT succeed: Fine, but was this due to the + # attribute being ignored? Grep for IgNoRe in conftest.err + # and if found, reset the hwloc_cv__attribute__var=0 + # + hwloc_cv___attribute__[$1]=1 + _HWLOC_ATTRIBUTE_FAIL_SEARCH([$1]) + ]) + + ac_c_werror_flag=$ac_c_werror_flag_safe + CFLAGS=$CFLAGS_safe + fi + ]) + + if test "$hwloc_cv___attribute__[$1]" = "1" ; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi +]) + + +# +# Test the availability of __attribute__ and with the help +# of _HWLOC_CHECK_SPECIFIC_ATTRIBUTE for the support of +# particular attributes. Compilers, that do not support an +# attribute most often fail with a warning (when the warning +# level is set). +# The compilers output is parsed in _HWLOC_ATTRIBUTE_FAIL_SEARCH +# +# To add a new attributes __NAME__ add the +# hwloc_cv___attribute__NAME +# add a new check with _HWLOC_CHECK_SPECIFIC_ATTRIBUTE (possibly with a cross-check) +# _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([name], [int foo (int arg) __attribute__ ((__name__));], [], []) +# and define the corresponding +# AC_DEFINE_UNQUOTED(_HWLOC_HAVE_ATTRIBUTE_NAME, [$hwloc_cv___attribute__NAME], +# [Whether your compiler has __attribute__ NAME or not]) +# and decide on a correct macro (in opal/include/opal_config_bottom.h): +# # define __opal_attribute_NAME(x) __attribute__(__NAME__) +# +# Please use the "__"-notation of the attribute in order not to +# clash with predefined names or macros (e.g. const, which some compilers +# do not like..) +# + + +AC_DEFUN([_HWLOC_CHECK_ATTRIBUTES], [ + AC_MSG_CHECKING(for __attribute__) + + AC_CACHE_VAL(hwloc_cv___attribute__, [ + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [ + #include + ], [ + /* Check for the longest available __attribute__ (since gcc-2.3) */ + struct foo { + char a; + int x[2] __attribute__ ((__packed__)); + }; + ])], + [], + [hwloc_cv___attribute__=1], + [hwloc_cv___attribute__=0], + ) + + if test "$hwloc_cv___attribute__" = "1" ; then + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [ + #include + ], [ + /* Check for the longest available __attribute__ (since gcc-2.3) */ + struct foo { + char a; + int x[2] __attribute__ ((__packed__)); + }; + ])], + [], + [hwloc_cv___attribute__=1], + [hwloc_cv___attribute__=0], + ) + fi + ]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE, [$hwloc_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 "$hwloc_cv___attribute__" = "0" ; then + AC_MSG_RESULT([no]) + hwloc_cv___attribute__aligned=0 + hwloc_cv___attribute__always_inline=0 + hwloc_cv___attribute__cold=0 + hwloc_cv___attribute__const=0 + hwloc_cv___attribute__deprecated=0 + hwloc_cv___attribute__constructor=0 + hwloc_cv___attribute__format=0 + hwloc_cv___attribute__hot=0 + hwloc_cv___attribute__malloc=0 + hwloc_cv___attribute__may_alias=0 + hwloc_cv___attribute__no_instrument_function=0 + hwloc_cv___attribute__nonnull=0 + hwloc_cv___attribute__noreturn=0 + hwloc_cv___attribute__packed=0 + hwloc_cv___attribute__pure=0 + hwloc_cv___attribute__sentinel=0 + hwloc_cv___attribute__unused=0 + hwloc_cv___attribute__warn_unused_result=0 + hwloc_cv___attribute__weak_alias=0 + else + AC_MSG_RESULT([yes]) + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([aligned], + [struct foo { char text[4]; } __attribute__ ((__aligned__(8)));], + [], + []) + + # + # Ignored by PGI-6.2.5; -- recognized by output-parser + # + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([always_inline], + [int foo (int arg) __attribute__ ((__always_inline__));], + [], + []) + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([cold], + [ + int foo(int arg1, int arg2) __attribute__ ((__cold__)); + int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } + ], + [], + []) + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([const], + [ + int foo(int arg1, int arg2) __attribute__ ((__const__)); + int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } + ], + [], + []) + + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([deprecated], + [ + int foo(int arg1, int arg2) __attribute__ ((__deprecated__)); + int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } + ], + [], + []) + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([constructor], + [ + void foo(void) __attribute__ ((__constructor__)); + void foo(void) { return; } + ], + [], + []) + + + HWLOC_ATTRIBUTE_CFLAGS= + case "$hwloc_c_vendor" in + gnu) + HWLOC_ATTRIBUTE_CFLAGS="-Wall" + ;; + intel) + # we want specifically the warning on format string conversion + HWLOC_ATTRIBUTE_CFLAGS="-we181" + ;; + esac + _HWLOC_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); + ], + [$HWLOC_ATTRIBUTE_CFLAGS]) + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([hot], + [ + int foo(int arg1, int arg2) __attribute__ ((__hot__)); + int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } + ], + [], + []) + + _HWLOC_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 + # The test case is chosen to match our only use in topology-xml-*.c, and reproduces an xlc-13.1.0 bug. + # + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([may_alias], + [struct { int i; } __attribute__ ((__may_alias__)) * p_value;], + [], + []) + + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([no_instrument_function], + [int * foo(int arg1) __attribute__ ((__no_instrument_function__));], + [], + []) + + + # + # Attribute nonnull: + # Ignored by intel-compiler 9.1.045 -- recognized by cross-check + # Ignored by PGI-6.2.5 (pgCC) -- recognized by cross-check + # + HWLOC_ATTRIBUTE_CFLAGS= + case "$hwloc_c_vendor" in + gnu) + HWLOC_ATTRIBUTE_CFLAGS="-Wall" + ;; + intel) + # we do not want to get ignored attributes warnings, but rather real warnings + HWLOC_ATTRIBUTE_CFLAGS="-wd1292" + ;; + esac + _HWLOC_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); + ], + [$HWLOC_ATTRIBUTE_CFLAGS]) + + + _HWLOC_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); } + ], + [], + []) + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([packed], + [ + struct foo { + char a; + int x[2] __attribute__ ((__packed__)); + }; + ], + [], + []) + + _HWLOC_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) + # + HWLOC_ATTRIBUTE_CFLAGS= + case "$hwloc_c_vendor" in + gnu) + HWLOC_ATTRIBUTE_CFLAGS="-Wall" + ;; + intel) + # we do not want to get ignored attributes warnings + HWLOC_ATTRIBUTE_CFLAGS="-wd1292" + ;; + esac + _HWLOC_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); + ], + [$HWLOC_ATTRIBUTE_CFLAGS]) + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([unused], + [ + int square(int arg1 __attribute__ ((__unused__)), int arg2); + int square(int arg1, int arg2) { return arg2; } + ], + [], + []) + + + # + # 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) + # + HWLOC_ATTRIBUTE_CFLAGS= + case "$hwloc_c_vendor" in + gnu) + HWLOC_ATTRIBUTE_CFLAGS="-Wall" + ;; + intel) + # we do not want to get ignored attributes warnings + HWLOC_ATTRIBUTE_CFLAGS="-wd1292" + ;; + esac + _HWLOC_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); + ], + [$HWLOC_ATTRIBUTE_CFLAGS]) + + + _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([weak_alias], + [ + int foo(int arg); + int foo(int arg) { return arg + 3; } + int foo2(int arg) __attribute__ ((__weak__, __alias__("foo"))); + ], + [], + []) + + fi + + # Now that all the values are set, define them + + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_ALIGNED, [$hwloc_cv___attribute__aligned], + [Whether your compiler has __attribute__ aligned or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_ALWAYS_INLINE, [$hwloc_cv___attribute__always_inline], + [Whether your compiler has __attribute__ always_inline or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_COLD, [$hwloc_cv___attribute__cold], + [Whether your compiler has __attribute__ cold or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_CONST, [$hwloc_cv___attribute__const], + [Whether your compiler has __attribute__ const or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_DEPRECATED, [$hwloc_cv___attribute__deprecated], + [Whether your compiler has __attribute__ deprecated or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_CONSTRUCTOR, [$hwloc_cv___attribute__constructor], + [Whether your compiler has __attribute__ constructor or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_FORMAT, [$hwloc_cv___attribute__format], + [Whether your compiler has __attribute__ format or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_HOT, [$hwloc_cv___attribute__hot], + [Whether your compiler has __attribute__ hot or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_MALLOC, [$hwloc_cv___attribute__malloc], + [Whether your compiler has __attribute__ malloc or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_MAY_ALIAS, [$hwloc_cv___attribute__may_alias], + [Whether your compiler has __attribute__ may_alias or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_NO_INSTRUMENT_FUNCTION, [$hwloc_cv___attribute__no_instrument_function], + [Whether your compiler has __attribute__ no_instrument_function or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_NONNULL, [$hwloc_cv___attribute__nonnull], + [Whether your compiler has __attribute__ nonnull or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_NORETURN, [$hwloc_cv___attribute__noreturn], + [Whether your compiler has __attribute__ noreturn or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_PACKED, [$hwloc_cv___attribute__packed], + [Whether your compiler has __attribute__ packed or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_PURE, [$hwloc_cv___attribute__pure], + [Whether your compiler has __attribute__ pure or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_SENTINEL, [$hwloc_cv___attribute__sentinel], + [Whether your compiler has __attribute__ sentinel or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_UNUSED, [$hwloc_cv___attribute__unused], + [Whether your compiler has __attribute__ unused or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_WARN_UNUSED_RESULT, [$hwloc_cv___attribute__warn_unused_result], + [Whether your compiler has __attribute__ warn unused result or not]) + AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_WEAK_ALIAS, [$hwloc_cv___attribute__weak_alias], + [Whether your compiler has __attribute__ weak alias or not]) +]) + diff --git a/3rd-party/hwloc-2.7.1/config/hwloc_check_vendor.m4 b/3rd-party/hwloc-2.7.1/config/hwloc_check_vendor.m4 new file mode 100644 index 0000000000000000000000000000000000000000..24c3be8aa99121955661be2a41c0404eb4f6b818 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/config/hwloc_check_vendor.m4 @@ -0,0 +1,262 @@ +dnl -*- shell-script -*- +dnl +dnl Copyright © 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright © 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright © 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright © 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright © 2011 Cisco Systems, Inc. All rights reserved. +dnl Copyright © 2015-2021 Inria. All rights reserved. +dnl Copyright © 2020 IBM Corporation. All rights reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +dnl ------------------------------------------------------------------ +dnl This m4 file originally copied from Open MPI +dnl config/ompi_check_vendor.m4. +dnl ------------------------------------------------------------------ + + +# HWLOC_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 _HWLOC_CHECK_COMPILER_VENDOR for a complete +# list of currently detected compilers. +AC_DEFUN([_HWLOC_C_COMPILER_VENDOR], [ + AC_REQUIRE([AC_PROG_CC]) + + AC_CACHE_CHECK([for the C compiler vendor], + [hwloc_cv_c_compiler_vendor], + [AC_LANG_PUSH(C) + _HWLOC_CHECK_COMPILER_VENDOR([hwloc_cv_c_compiler_vendor]) + AC_LANG_POP(C)]) + + $1="$hwloc_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])]) + +# HWLOC_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([HWLOC_IFDEF_IFELSE], [ + AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED +#ifndef $1 +#error "symbol $1 not defined" +choke me +#endif], [$2], [$3])]) + + +# HWLOC_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([HWLOC_IF_IFELSE], [ + AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED +#if !( $1 ) +#error "condition $1 not met" +choke me +#endif], [$2], [$3])]) + + +# _HWLOC_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([_HWLOC_CHECK_COMPILER_VENDOR], [ + hwloc_check_compiler_vendor_result="unknown" + + # GNU is probably the most common, so check that one as soon as + # possible. Intel and Android pretend to be GNU, so need to + # check Intel and Android before checking for GNU. + + # Android + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__ANDROID__], + [hwloc_check_compiler_vendor_result="android"])]) + + # Intel + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IF_IFELSE([defined(__INTEL_COMPILER) || defined(__ICC)], + [hwloc_check_compiler_vendor_result="intel"])]) + + # Portland Group + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__PGI], + [hwloc_check_compiler_vendor_result="portland group"])]) + + # Borland Turbo C + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__TURBOC__], + [hwloc_check_compiler_vendor_result="borland"])]) + + # Borland C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__BORLANDC__], + [hwloc_check_compiler_vendor_result="borland"])]) + + # Comeau C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__COMO__], + [hwloc_check_compiler_vendor_result="comeau"])]) + + # Compaq C/C++ + # OSF part actually not needed anymore but doesn't hurt + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IF_IFELSE([defined(__DECC) || defined(VAXC) || defined(__VAXC)], + [hwloc_check_compiler_vendor_result="compaq"], + [HWLOC_IF_IFELSE([defined(__osf__) && defined(__LANGUAGE_C__)], + [hwloc_check_compiler_vendor_result="compaq"], + [HWLOC_IFDEF_IFELSE([__DECCXX], + [hwloc_check_compiler_vendor_result="compaq"])])])]) + + # Cray C/C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([_CRAYC], + [hwloc_check_compiler_vendor_result="cray"])]) + + # Diab C/C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__DCC__], + [hwloc_check_compiler_vendor_result="diab"])]) + + # Digital Mars + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IF_IFELSE([defined(__DMC__) || defined(__SC__) || defined(__ZTC__)], + [hwloc_check_compiler_vendor_result="digital mars"])]) + + # HP ANSI C / aC++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IF_IFELSE([defined(__HP_cc) || defined(__HP_aCC)], + [hwloc_check_compiler_vendor_result="hp"])]) + + # IBM XL C/C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IF_IFELSE([defined(__xlC__) || defined(__IBMC__) || defined(__IBMCPP__) || defined(__ibmxl__)], + [hwloc_check_compiler_vendor_result="ibm"], + [HWLOC_IF_IFELSE([defined(_AIX) && !defined(__GNUC__)], + [hwloc_check_compiler_vendor_result="ibm"])])]) + + # KAI C++ (rest in peace) + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__KCC], + [hwloc_check_compiler_vendor_result="kai"])]) + + # LCC + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__LCC__], + [hwloc_check_compiler_vendor_result="lcc"])]) + + # MetaWare High C/C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__HIGHC__], + [hwloc_check_compiler_vendor_result="metaware high"])]) + + # Metrowerks Codewarrior + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__MWERKS__], + [hwloc_check_compiler_vendor_result="metrowerks"])]) + + # MIPSpro (SGI) + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IF_IFELSE([defined(sgi) || defined(__sgi)], + [hwloc_check_compiler_vendor_result="sgi"])]) + + # MPW C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IF_IFELSE([defined(__MRC__) || defined(MPW_C) || defined(MPW_CPLUS)], + [hwloc_check_compiler_vendor_result="mpw"])]) + + # Microsoft + AS_IF([test "$hwloc_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) + HWLOC_IF_IFELSE([defined(_MSC_VER) || defined(__MSC_VER)], + [hwloc_check_compiler_vendor_result="microsoft"]) + AC_LANG_POP(C)]) + + # Norcroft C + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__CC_NORCROFT], + [hwloc_check_compiler_vendor_result="norcroft"])]) + + # Pelles C + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__POCC__], + [hwloc_check_compiler_vendor_result="pelles"])]) + + # SAS/C + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IF_IFELSE([defined(SASC) || defined(__SASC) || defined(__SASC__)], + [hwloc_check_compiler_vendor_result="sas"])]) + + # Sun Workshop C/C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IF_IFELSE([defined(__SUNPRO_C) || defined(__SUNPRO_CC)], + [hwloc_check_compiler_vendor_result="sun"])]) + + # TenDRA C/C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__TenDRA__], + [hwloc_check_compiler_vendor_result="tendra"])]) + + # Tiny C + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__TINYC__], + [hwloc_check_compiler_vendor_result="tiny"])]) + + # USL C + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__USLC__], + [hwloc_check_compiler_vendor_result="usl"])]) + + # Watcom C++ + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__WATCOMC__], + [hwloc_check_compiler_vendor_result="watcom"])]) + + # GNU + AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], + [HWLOC_IFDEF_IFELSE([__GNUC__], + [hwloc_check_compiler_vendor_result="gnu"])]) + + $1="$hwloc_check_compiler_vendor_result" + unset hwloc_check_compiler_vendor_result +]) + +# _HWLOC_CHECK_CC_OPTION([option], [variable to append the option to], [action if supported]) +# ---------------------------------------------- +# Run gcc to determine if option is supported. +AC_DEFUN([_HWLOC_CHECK_CC_OPTION], [ + tmp_save_CFLAGS="$CFLAGS" + CFLAGS="$1 -Werror" + AC_MSG_CHECKING([if gcc supports $1]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int i;]])], + [AC_MSG_RESULT(yes) + $2="$$2 $1" + $3], + [AC_MSG_RESULT(no)]) + CFLAGS="$tmp_save_CFLAGS" +]) diff --git a/3rd-party/hwloc-2.7.1/config/hwloc_check_visibility.m4 b/3rd-party/hwloc-2.7.1/config/hwloc_check_visibility.m4 new file mode 100644 index 0000000000000000000000000000000000000000..8ba2d391c9d49a52ba7ebd69150650a7ba74892e --- /dev/null +++ b/3rd-party/hwloc-2.7.1/config/hwloc_check_visibility.m4 @@ -0,0 +1,131 @@ +# This macro set originally copied from Open MPI: +# Copyright © 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright © 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright © 2004-2007 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright © 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright © 2006-2007 Cisco Systems, Inc. All rights reserved. +# and renamed/modified for hwloc: +# Copyright © 2009-2021 Inria. All rights reserved. +# Copyright © 2009-2010 Université Bordeaux +# Copyright © 2010-2012 Cisco Systems, Inc. All rights reserved. +# See COPYING in top-level directory. +# +# 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. +# + +# _HWLOC_CHECK_VISIBILITY +# -------------------------------------------------------- +AC_DEFUN([_HWLOC_CHECK_VISIBILITY],[ + # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) + m4_ifdef([AC_PROG_GREP], + [AC_REQUIRE([AC_PROG_GREP])], + [GREP=grep]) + + # Check if the compiler has support for visibility, like some + # versions of gcc, icc, Sun Studio cc. + AC_ARG_ENABLE(visibility, + AS_HELP_STRING([--enable-visibility], + [enable visibility feature of certain compilers/linkers (default: enabled on platforms that support it)])) + + case ${target} in + *-*-aix*|*-*-mingw*|*-*-cygwin*|*-*-hpux*) + enable_visibility=no + ;; + esac + + hwloc_visibility_define=0 + hwloc_msg="whether to enable symbol visibility" + if test "$enable_visibility" = "no"; then + AC_MSG_CHECKING([$hwloc_msg]) + AC_MSG_RESULT([no (disabled)]) + else + CFLAGS_orig=$CFLAGS + + hwloc_add= + case "$hwloc_c_vendor" in + sun) + # Check using Sun Studio -xldscope=hidden flag + hwloc_add=-xldscope=hidden + CFLAGS="$CFLAGS_orig $hwloc_add -errwarn=%all" + ;; + + *) + # Check using -fvisibility=hidden + hwloc_add=-fvisibility=hidden + CFLAGS="$CFLAGS_orig $hwloc_add -Werror" + ;; + esac + + AC_MSG_CHECKING([if $CC supports $hwloc_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"], [hwloc_add=])]) + ], [hwloc_add=]) + AS_IF([test "$hwloc_add" = ""], + [AC_MSG_RESULT([no])], + [AC_MSG_RESULT([yes])]) + + CFLAGS=$CFLAGS_orig + HWLOC_VISIBILITY_CFLAGS=$hwloc_add + + if test "$hwloc_add" != "" ; then + hwloc_visibility_define=1 + AC_MSG_CHECKING([$hwloc_msg]) + AC_MSG_RESULT([yes (via $hwloc_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([$hwloc_msg]) + AC_MSG_RESULT([no (unsupported)]) + fi + unset hwloc_add + fi + + AC_DEFINE_UNQUOTED([HWLOC_C_HAVE_VISIBILITY], [$hwloc_visibility_define], + [Whether C compiler supports symbol visibility or not]) +]) diff --git a/3rd-party/hwloc-2.7.1/config/hwloc_components.m4 b/3rd-party/hwloc-2.7.1/config/hwloc_components.m4 new file mode 100644 index 0000000000000000000000000000000000000000..e4a8c3a5d707ac45c799ab26385367f3c2dc6751 --- /dev/null +++ b/3rd-party/hwloc-2.7.1/config/hwloc_components.m4 @@ -0,0 +1,64 @@ +# Copyright © 2012-2020 Inria. All rights reserved. +# See COPYING in top-level directory. + + +# HWLOC_PREPARE_FILTER_COMPONENTS +# +# Given a list of names, define hwloc__component_maybeplugin=1. +# +# $1 = space-separated list of components to build as plugins +# +AC_DEFUN([HWLOC_PREPARE_FILTER_COMPONENTS], [ + for name in [$1] ; do + str="hwloc_${name}_component_wantplugin=1" + eval $str + done +]) + + +# HWLOC_FILTER_COMPONENTS +# +# For each component in hwloc_components, +# check if hwloc__component_wantplugin=1, +# and check if hwloc__component_maybeplugin=1. +# Add to hwloc_[static|plugin]_components accordingly. +# And set hwloc__component=[static|plugin] accordingly. +# +AC_DEFUN([HWLOC_FILTER_COMPONENTS], [ +for name in $hwloc_components ; do + str="maybeplugin=\$hwloc_${name}_component_maybeplugin" + eval $str + str="wantplugin=\$hwloc_${name}_component_wantplugin" + eval $str + if test x$hwloc_have_plugins = xyes -a x$maybeplugin = x1 -a x$wantplugin = x1; then + hwloc_plugin_components="$hwloc_plugin_components $name" + str="hwloc_${name}_component=plugin" + else + hwloc_static_components="$hwloc_static_components $name" + str="hwloc_${name}_component=static" + fi + eval $str +done +]) + + +# HWLOC_LIST_STATIC_COMPONENTS +# +# Append to file $1 an array of components by listing component names in $2. +# +# $1 = filename +# $2 = list of component names +# +AC_DEFUN([HWLOC_LIST_STATIC_COMPONENTS], [ +cat <>[$1] +#include +static const struct hwloc_component * hwloc_static_components[[]] = { +EOF +for comp in [$2]; do + echo " &hwloc_${comp}_component," >>[$1] +done +cat <>[$1] + NULL +}; +EOF +]) diff --git a/3rd-party/hwloc-2.7.1/config/hwloc_get_version.sh b/3rd-party/hwloc-2.7.1/config/hwloc_get_version.sh new file mode 100644 index 0000000000000000000000000000000000000000..4bc4f2933bd27ad9d07bed84e7d0494d127d298f --- /dev/null +++ b/3rd-party/hwloc-2.7.1/config/hwloc_get_version.sh @@ -0,0 +1,114 @@ +#!/bin/sh +# +# Copyright © 2004-2006 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright © 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright © 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright © 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright © 2008-2014 Cisco Systems, Inc. All rights reserved. +# Copyright © 2014-2018 Inria. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +srcfile="$1" +option="$2" + +if test -z "$srcfile"; then + option="--help" +else + : ${srcdir=.} + + if test -f "$srcfile"; then + ompi_vers=`sed -n " + t clear + : clear + s/^major/HWLOC_MAJOR_VERSION/ + s/^minor/HWLOC_MINOR_VERSION/ + s/^release/HWLOC_RELEASE_VERSION/ + s/^greek/HWLOC_GREEK_VERSION/ + s/\\\${major}/\\\${HWLOC_MAJOR_VERSION}/ + s/\\\${minor}/\\\${HWLOC_MINOR_VERSION}/ + s/\\\${release}/\\\${HWLOC_RELEASE_VERSION}/ + s/\\\${greek}/\\\${HWLOC_GREEK_VERSION}/ + s/^date/HWLOC_RELEASE_DATE/ + s/^snapshot_version/HWLOC_SNAPSHOT_VERSION/ + s/^snapshot/HWLOC_SNAPSHOT/ + t print + b + : print + p" < "$srcfile"` + eval "$ompi_vers" + + HWLOC_VERSION="$HWLOC_MAJOR_VERSION.$HWLOC_MINOR_VERSION.$HWLOC_RELEASE_VERSION${HWLOC_GREEK_VERSION}" + + # If HWLOC_SNAPSHOT=1, then use HWLOC_SNAPSHOT_VERSION + if test "$HWLOC_SNAPSHOT" = "1"; then + # First, verify that HWLOC_SNAPSHOT_VERSION isn't empty. + if test -z "$HWLOC_SNAPSHOT_VERSION"; then + echo "*** ERROR: $1 contains snapshot=1, but an empty value for snapshot_version" 1>&2 + exit 1 + fi + HWLOC_VERSION=$HWLOC_SNAPSHOT_VERSION + fi + fi + + if test "$option" = ""; then + option="--version" + fi +fi + +case "$option" in + --version) + echo $HWLOC_VERSION + ;; + --major) + echo $HWLOC_MAJOR_VERSION + ;; + --minor) + echo $HWLOC_MINOR_VERSION + ;; + --release) + echo $HWLOC_RELEASE_VERSION + ;; + --greek) + echo $HWLOC_GREEK_VERSION + ;; + --release-date) + echo $HWLOC_RELEASE_DATE + ;; + --snapshot) + echo $HWLOC_SNAPSHOT + ;; + -h|--help) + cat <