[mvapich-discuss] failed to compile mvapich2 with upstream hwloc-2.2.0

Subramoni, Hari subramoni.1 at osu.edu
Mon Jun 8 09:32:35 EDT 2020


Hi, Honggang.

Based on feedback from the HWLoc team, we had updated the version of HWLoc MVAPICH2 uses from 1.11.13 to 2.2.0 (git tag hwloc-2.2.0). The 2.* series and the 1.* series are not compatible with each other. Thus, the current release of MVAPICH2 only supports the 2.2 series.

The version of hwloc in [1] is from the MPICH team and probably has dependencies with the launcher. The version of hwloc in [2] is what we use and keep updating periodically. I checked that we do not use HWLOC_MEMBIND_REPLICATE in our version of HWLoc code. The version in [1] has it, but we have not hit any errors because of it.

I am surprised that you are hitting this error since we were able to use the included version of HWLoc without issues. Can you let me know how you are trying to build it? What is the use case you are trying where you want to build MVAPICH2 against a different hwloc version?

Best,
Hari.

-----Original Message-----
From: Honggang LI <honli at redhat.com> 
Sent: Monday, June 8, 2020 3:43 AM
To: Subramoni, Hari <subramoni.1 at osu.edu>; mvapich-discuss at cse.ohio-state.edu <mvapich-discuss at mailman.cse.ohio-state.edu>
Subject: failed to compile mvapich2 with upstream hwloc-2.2.0

Hi,

http://mvapich.cse.ohio-state.edu/static/media/mvapich/MV2_CHANGELOG-2.3.4.txt
<....>
	- Update to hwloc v2.2.0
<....>

But I failed to build mvapich2 with upstream hwloc-2.2.0, because HWLOC_MEMBIND_REPLICATE had been removed from upstream v2.0.0. hwloc commit 8ca4de965e15 removed it.

Compilation also failed with hwloc-1.11.9. Which upstream hwloc release I need to compile mvapich2-2.3.4?

In the mvapich source tarball, there are two copies of hwloc:
[1] ./src/pm/hydra/tools/topo/hwloc/hwloc/
[2] ./contrib/hwloc

Is it possible to remove those embedded hwloc? We have a patch to remove [2]. But it seems difficult to remove [1].

Thanks

============== error log =========

depbase=`echo tools/bootstrap/src/bsci_query_node_list.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
/bin/sh ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I./include -I./tools/topo/hwloc/hwloc/include/private/autogen -I./tools/topo/hwloc/hwloc/include/hwloc/autogen  -I./include -I./mpl/include -I./mpl/include -I./tools/topo  -I./tools/bootstrap/include -I./tools/bootstrap/utils -I./tools/ckpoint -I./tools/demux -I./tools/debugger -I./pm/include -I./pm/utils -I./ui/include -I./ui/utils -DHYDRA_CONF_FILE=\"/etc/mvapich2-psm2-x86_64/mpiexec.hydra.conf\" -I/root/rpmbuild/BUILD/mvapich2-2.3.4/psm2/src/mpid/ch3/channels/psm/include -I/root/rpmbuild/BUILD/mvapich2-2.3.4/psm2/src/mpid/ch3/channels/psm/include -I/root/rpmbuild/BUILD/mvapich2-2.3.4/psm2/src/util/wrappers -I/root/rpmbuild/BUILD/mvapich2-2.3.4/psm2/src/util/wrappers -I/root/rpmbuild/BUILD/mvapich2-2.3.4/psm2/src/mpl/include -I/root/rpmbuild/BUILD/mvapich2-2.3.4/psm2/src/mpl/include -I/root/rpmbuild/BUILD/mvapich2-2.3.4/psm2/src/openpa/src -I/root/rpmbuild/BUILD/mvapich2-2.3.4/psm2/src/openpa/src -D_REENTRANT -I/root/rpmbuild/BUILD/mvapich2-2.3.4/psm2/src/mpi/romio/include  -m64 -O3 -fno-strict-aliasing -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection    -DNDEBUG -DNVALGRIND -g -O2  -MT tools/bootstrap/src/bsci_query_node_list.lo -MD -MP -MF $depbase.Tpo -c -o tools/bootstrap/src/bsci_query_node_list.lo tools/bootstrap/src/bsci_query_node_list.c &&\
mv -f $depbase.Tpo $depbase.Plo
In file included from tools/topo/hwloc/topo_hwloc.c:8:
tools/topo/hwloc/topo_hwloc.c: In function 'handle_user_binding':
tools/topo/hwloc/topo_hwloc.c:33:57: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
     HYDU_MALLOC(bind_entries, char **, num_bind_entries * sizeof(char *), status);
./include/hydra.h:460:15: note: in definition of macro 'HYDU_ASSERT'
         if (!(x)) {                                                     \
               ^
tools/topo/hwloc/topo_hwloc.c:33:5: note: in expansion of macro 'HYDU_MALLOC'
     HYDU_MALLOC(bind_entries, char **, num_bind_entries * sizeof(char *), status);
     ^~~~~~~~~~~
tools/topo/hwloc/topo_hwloc.c:34:61: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
     HYDU_MALLOC(bind_entry_lengths, int *, num_bind_entries * sizeof(int), status);
./include/hydra.h:460:15: note: in definition of macro 'HYDU_ASSERT'
         if (!(x)) {                                                     \
               ^
tools/topo/hwloc/topo_hwloc.c:34:5: note: in expansion of macro 'HYDU_MALLOC'
     HYDU_MALLOC(bind_entry_lengths, int *, num_bind_entries * sizeof(int), status);
     ^~~~~~~~~~~
tools/topo/hwloc/topo_hwloc.c:48:68: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
         HYDU_MALLOC(bind_entries[i], char *, bind_entry_lengths[i] * sizeof(char), status);
./include/hydra.h:460:15: note: in definition of macro 'HYDU_ASSERT'
         if (!(x)) {                                                     \
               ^
tools/topo/hwloc/topo_hwloc.c:48:9: note: in expansion of macro 'HYDU_MALLOC'
         HYDU_MALLOC(bind_entries[i], char *, bind_entry_lengths[i] * sizeof(char), status);
         ^~~~~~~~~~~
tools/topo/hwloc/topo_hwloc.c:66:34: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
                 num_bind_entries * sizeof(hwloc_bitmap_t), status);
./include/hydra.h:460:15: note: in definition of macro 'HYDU_ASSERT'
         if (!(x)) {                                                     \
               ^
tools/topo/hwloc/topo_hwloc.c:65:5: note: in expansion of macro 'HYDU_MALLOC'
     HYDU_MALLOC(HYDT_topo_hwloc_info.bitmap, hwloc_bitmap_t *,
     ^~~~~~~~~~~
tools/topo/hwloc/topo_hwloc.c: In function 'handle_rr_binding':
tools/topo/hwloc/topo_hwloc.c:109:50: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
                 HYDT_topo_hwloc_info.num_bitmaps * sizeof(hwloc_bitmap_t), status);
./include/hydra.h:460:15: note: in definition of macro 'HYDU_ASSERT'
         if (!(x)) {                                                     \
               ^
tools/topo/hwloc/topo_hwloc.c:108:5: note: in expansion of macro 'HYDU_MALLOC'
     HYDU_MALLOC(HYDT_topo_hwloc_info.bitmap, hwloc_bitmap_t *,
     ^~~~~~~~~~~
tools/topo/hwloc/topo_hwloc.c: In function 'split_count_field':
tools/topo/hwloc/topo_hwloc.c:142:3: warning: label 'fn_fail' defined but not used [-Wunused-label]
   fn_fail:
   ^~~~~~~
In file included from tools/topo/hwloc/topo_hwloc.c:8:
tools/topo/hwloc/topo_hwloc.c: In function 'handle_bitmap_binding':
tools/topo/hwloc/topo_hwloc.c:274:66: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
     HYDU_MALLOC(map_domains, hwloc_bitmap_t *, total_map_domains * sizeof(hwloc_bitmap_t), status);
./include/hydra.h:460:15: note: in definition of macro 'HYDU_ASSERT'
         if (!(x)) {                                                     \
               ^
tools/topo/hwloc/topo_hwloc.c:274:5: note: in expansion of macro 'HYDU_MALLOC'
     HYDU_MALLOC(map_domains, hwloc_bitmap_t *, total_map_domains * sizeof(hwloc_bitmap_t), status);
     ^~~~~~~~~~~
tools/topo/hwloc/topo_hwloc.c:275:60: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
     HYDU_MALLOC(start_pu, hwloc_obj_t *, total_map_domains * sizeof(hwloc_obj_t), status);
./include/hydra.h:460:15: note: in definition of macro 'HYDU_ASSERT'
         if (!(x)) {                                                     \
               ^
tools/topo/hwloc/topo_hwloc.c:275:5: note: in expansion of macro 'HYDU_MALLOC'
     HYDU_MALLOC(start_pu, hwloc_obj_t *, total_map_domains * sizeof(hwloc_obj_t), status);
     ^~~~~~~~~~~
tools/topo/hwloc/topo_hwloc.c:323:50: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
                 HYDT_topo_hwloc_info.num_bitmaps * sizeof(hwloc_bitmap_t), status);
./include/hydra.h:460:15: note: in definition of macro 'HYDU_ASSERT'
         if (!(x)) {                                                     \
               ^
tools/topo/hwloc/topo_hwloc.c:322:5: note: in expansion of macro 'HYDU_MALLOC'
     HYDU_MALLOC(HYDT_topo_hwloc_info.bitmap, hwloc_bitmap_t *,
     ^~~~~~~~~~~
tools/topo/hwloc/topo_hwloc.c: In function 'HYDT_topo_hwloc_init':
tools/topo/hwloc/topo_hwloc.c:431:40: error: 'HWLOC_MEMBIND_REPLICATE' undeclared (first use in this function); did you mean 'HWLOC_MEMBIND_MIGRATE'?
         HYDT_topo_hwloc_info.membind = HWLOC_MEMBIND_REPLICATE;
                                        ^~~~~~~~~~~~~~~~~~~~~~~
                                        HWLOC_MEMBIND_MIGRATE





More information about the mvapich-discuss mailing list