Hi Folks,

I've a question about where to fix a problem I'm having building Open MPI
master and its
embedded hwloc2a on a cluster we have that sports Nvidia GPUs.

Here's the problem, I want for Open MPI to be smart about cuda, so I try to
configure with:

./configure --prefix=/usr/projects/hpctools/hpp/ompi/install
--with-cuda=/opt/cudatoolkit/8.0


Well that doesn't work because of a hwloc thingy:


--- MCA component hwloc:hwloc2a (m4 configuration macro, priority 90)

checking for MCA component hwloc:hwloc2a compile mode... static

checking for hwloc --enable-cuda value... "yes"

checking hwloc building mode... embedded

configure: hwloc builddir:
/usr/projects/hpctools/hpp/ompi/opal/mca/hwloc/hwloc2a/hwloc

configure: hwloc srcdir:
/usr/projects/hpctools/hpp/ompi/opal/mca/hwloc/hwloc2a/hwloc

checking for hwloc version... shmem-20170815.1857.git2478ce8

checking if want hwloc maintainer support... disabled (embedded mode)

checking for hwloc directory prefix... opal/mca/hwloc/hwloc2a/hwloc/

checking for hwloc symbol prefix... opal_hwloc2a_

checking size of void *... (cached) 8

checking which OS support to include... Linux

checking which CPU support to include... x86_64

checking size of unsigned long... 8

checking size of unsigned int... 4

checking for the C compiler vendor... gnu

checking for __attribute__... yes

checking for __attribute__(aligned)... yes

checking for __attribute__(always_inline)... yes

checking for __attribute__(cold)... yes

checking for __attribute__(const)... yes

checking for __attribute__(deprecated)... yes

checking for __attribute__(format)... yes

checking for __attribute__(hot)... yes

checking for __attribute__(malloc)... yes

checking for __attribute__(may_alias)... yes

checking for __attribute__(no_instrument_function)... yes

checking for __attribute__(nonnull)... yes

checking for __attribute__(noreturn)... yes

checking for __attribute__(packed)... yes

checking for __attribute__(pure)... yes

checking for __attribute__(sentinel)... yes

checking for __attribute__(unused)... yes

checking for __attribute__(warn_unused_result)... yes

checking for __attribute__(weak_alias)... yes

checking if gcc -std=gnu99 supports -fvisibility=hidden... yes

checking whether to enable symbol visibility... yes (via
-fvisibility=hidden)

configure: WARNING: "-fvisibility=hidden" has been added to the hwloc CFLAGS

checking whether the C compiler rejects function calls with too many
arguments... yes

checking whether the C compiler rejects function calls with too few
arguments... yes

checking for unistd.h... (cached) yes

checking for dirent.h... (cached) yes

checking for strings.h... (cached) yes

checking ctype.h usability... yes

checking ctype.h presence... yes

checking for ctype.h... yes

checking for strncasecmp... yes

checking whether strncasecmp is declared... yes

checking whether function strncasecmp has a complete prototype... yes

checking for strftime... yes

checking for setlocale... yes

checking for stdint.h... (cached) yes

checking for sys/mman.h... (cached) yes

checking for KAFFINITY... no

checking for PROCESSOR_CACHE_TYPE... no

checking for CACHE_DESCRIPTOR... no

checking for LOGICAL_PROCESSOR_RELATIONSHIP... no

checking for RelationProcessorPackage... no

checking for SYSTEM_LOGICAL_PROCESSOR_INFORMATION... no

checking for GROUP_AFFINITY... no

checking for PROCESSOR_RELATIONSHIP... no

checking for NUMA_NODE_RELATIONSHIP... no

checking for CACHE_RELATIONSHIP... no

checking for PROCESSOR_GROUP_INFO... no

checking for GROUP_RELATIONSHIP... no

checking for SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX... no

checking for PSAPI_WORKING_SET_EX_BLOCK... no

checking for PSAPI_WORKING_SET_EX_INFORMATION... no

checking for PROCESSOR_NUMBER... no

checking for main in -lgdi32... no

checking for PostQuitMessage in -luser32... no

checking windows.h usability... no

checking windows.h presence... no

checking for windows.h... no

checking sys/lgrp_user.h usability... no

checking sys/lgrp_user.h presence... no

checking for sys/lgrp_user.h... no

checking kstat.h usability... no

checking kstat.h presence... no

checking for kstat.h... no

checking whether fabsf is declared... yes

checking for fabsf in -lm... yes

checking picl.h usability... no

checking picl.h presence... no

checking for picl.h... no

checking whether _SC_NPROCESSORS_ONLN is declared... yes

checking whether _SC_NPROCESSORS_CONF is declared... yes

checking whether _SC_NPROC_ONLN is declared... no

checking whether _SC_NPROC_CONF is declared... no

checking whether _SC_PAGESIZE is declared... yes

checking whether _SC_PAGE_SIZE is declared... yes

checking whether _SC_LARGE_PAGESIZE is declared... no

checking mach/mach_host.h usability... no

checking mach/mach_host.h presence... no

checking for mach/mach_host.h... no

checking mach/mach_init.h usability... no

checking mach/mach_init.h presence... no

checking for mach/mach_init.h... no

checking for sys/param.h... (cached) yes

checking for sys/sysctl.h... (cached) yes

checking whether CTL_HW is declared... no

checking whether HW_NCPU is declared... no

checking whether strtoull is declared... yes

checking for ssize_t... (cached) yes

checking whether snprintf is declared... yes

checking whether strcasecmp is declared... yes

checking whether _strdup is declared... no

checking whether _putenv is declared... no

checking whether getprogname is declared... no

checking whether getexecname is declared... no

checking whether GetModuleFileName is declared... no

checking for program_invocation_name... yes

checking for __progname... yes

checking for pthread_t... yes

checking whether sched_setaffinity is declared... yes

checking whether function sched_setaffinity has a complete prototype... yes

checking for old prototype of sched_setaffinity... no

checking for working CPU_SET... yes

checking for working CPU_SET_S... yes

checking for working syscall with 6 parameters... yes

checking for lib... no

checking for bash... /bin/sh

checking for ffs... yes

checking whether ffs is declared... yes

checking whether function ffs has a complete prototype... yes

checking for ffsl... yes

checking whether ffsl is declared... yes

checking whether function ffsl has a complete prototype... yes

checking for fls... no

checking for flsl... no

checking for clz... no

checking for clzl... no

checking for openat... yes

checking for malloc.h... (cached) yes

checking for getpagesize... yes

checking for memalign... yes

checking for posix_memalign... (cached) yes

checking for sys/utsname.h... (cached) yes

checking for uname... yes

checking pthread_np.h usability... no

checking pthread_np.h presence... no

checking for pthread_np.h... no

checking whether pthread_setaffinity_np is declared... yes

checking whether pthread_getaffinity_np is declared... yes

checking for sched_setaffinity... yes

checking for sys/cpuset.h... no

checking for cpuset_setaffinity... no

checking for library containing pthread_getthrds_np... no

checking for cpuset_setid... no

checking libudev.h usability... yes

checking libudev.h presence... yes

checking for libudev.h... yes

checking for udev_device_new_from_subsystem_sysname in -ludev... yes

checking for PCIACCESS... yes

checking pciaccess.h usability... yes

checking pciaccess.h presence... yes

checking for pciaccess.h... yes

checking for pci_slot_match_iterator_create... yes

checking for final PCIACCESS support... yes

checking cuda.h usability... yes

checking cuda.h presence... yes

checking for cuda.h... yes

checking if CUDA_VERSION >= 3020... yes

checking for cuInit in -lcuda... yes

checking cuda_runtime_api.h usability... yes

checking cuda_runtime_api.h presence... yes

checking for cuda_runtime_api.h... yes

checking if CUDART_VERSION >= 3020... yes

checking for cudaGetDeviceProperties in -lcudart... no

configure: WARNING: Specified --enable-cuda switch, but could not

configure: WARNING: find appropriate support

configure: error: Cannot continue


I can think of several ways to fix it.  Easiest would be to modify the

opal/mca/hwloc/hwloc2a/configure.m4

to not set --enable-cuda if --with-cuda is evaluated to something other
than yes.


Optionally, I could fix the hwloc configury to use a --with-cuda argument
rather than an --enable-cuda configury argument.  Would

such a configury argument change be traumatic for the hwloc community?

I think it would be weird to have both an --enable-cuda and a --with-cuda
configury argument for hwloc.


Third option, wait for the next major release of UCX with built-in cuda
support and not worry about this?


Thoughs?


Howard
_______________________________________________
devel mailing list
devel@lists.open-mpi.org
https://lists.open-mpi.org/mailman/listinfo/devel

Reply via email to