Accéder au contenu.
Menu Sympa

starpu-devel - [starpu-devel] Compilation and autoconf issues with an NVHPC environment

Objet : Developers list for StarPU

Archives de la liste

[starpu-devel] Compilation and autoconf issues with an NVHPC environment


Chronologique Discussions 
  • From: Cedric Augonnet <caugonnet@nvidia.com>
  • To: "starpu-devel@inria.fr" <starpu-devel@inria.fr>
  • Subject: [starpu-devel] Compilation and autoconf issues with an NVHPC environment
  • Date: Thu, 18 Jul 2024 09:52:00 +0000
  • Accept-language: fr-FR, en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ztC7Wb9q2UBKhoFZxsKL0gEIWYW3wWC7Gk3ABlOJjLE=; b=P6TleJ1gbcXhVQNQC98P+qpVcNDQSp+L69zYe5FSq+hlZGKGbuaStan3mkk//TYJvvRRr1GqzzvViGh5OHQLUQeqoeztViiiJEUENWuQPBOkmU1sjRW0zfnK995XRdYhILs9EwCaGm0cNAIiO8ZGQWkKuqTQI+iIxFmYA3TkWJfog0G+Ef7wWp/mhrlsNGq9X+dPYY6uFAAVNsuCYkOmpsGH4FdKxAM4pLOaAZeBvA+VqdS4d0+X6n+EJBOgZlyK6c8b3mtrr48vEUG2aZYm0VZjaYd52IjooGlg3TClmv1SUQoIR4bqfGgudauUrP9vPr1ldGS2V0odiPjHPYewnQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gvpMIw20k95izmE9eL9dYSHZRuEpCxg4A5U5KdERcM7S+aFPJZmuKCnar/8wnVs/qoWREamSITTfahB16C1dHPdo7KobxXIsO6nW8cBiQM6t/J8GND590qIwqSJ+km8bxpWv3vrjPncMvB0j4/rGRKUH5rCeoGQb9UN8KD9A5QYqYh/kY+1QqE1MSdW7MSyktdwGS0yVDhVPPkrsup8pSBUIVex8izCQFNKx4nO9yanRe+BKuE79kv7uLJXgtdRyNya6b4BlWAYylKGqtw739KInJYRA4NriNm5eU2gBMMi29zmjCIc8t0piA0XIiOvZcLv6IBI56WMqmWibbIcAqw==
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=caugonnet@nvidia.com; spf=Pass smtp.mailfrom=caugonnet@nvidia.com; spf=Pass smtp.helo=postmaster@NAM04-BN8-obe.outbound.protection.outlook.com
  • Ironport-data: A9a23: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 I7tDTpX3Pr5zZwBqiSdv7rgzrnlxA==
  • Ironport-hdrordr: A9a23:9CyExKPGg0Ix98BcTvqjsMiBIKoaSvp037BL7TEIdfUxSKalfq +V7ZMmPHPP+VUssQ8b6LS90di7MBHhHPdOiOF7XYtKNDOGhILCFvAG0WKN+UyHJ8Q8zIJgPG VbHpSWxOeeMbEDt7eC3OBwKbgd/OU=
  • Ironport-phdr: A9a23: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 7rWr0khh//RBb8L
  • Ironport-sdr: 6698e5c7_uYd3lLFxIb8YNqF0+VDgjtGXLO+RWxlB4sQXSP785sU4wwj T6yPynim2EGGidYUb/lgwc5wgL2eIg08MmoP0Cg==
  • Msip_labels:

Dear StarPU folks,

I hope you are all doing well, and i apologize in advance for the cryptic mail ! I was trying to compile StarPU (master, commit ac2e893eb1) on my desktop, which relies on NVHPC 24.5 and had various issues ... I don't know if this is supported at the moment ?

At first, i tried to compile using CC=nvc which is set by NVHPC module, but i've run into various compilation errors. For the record, nvc is not nvcc, it's a different compiler. I started with C parsing issues with such a workaround (I did not dig for the root cause)

diff --git a/src/parallel_worker/starpu_parallel_worker_create.c b/src/parallel_worker/starpu_parallel_worker_create.c
index a3317cf630..793f7e042a 100644
--- a/src/parallel_worker/starpu_parallel_worker_create.c
+++ b/src/parallel_worker/starpu_parallel_worker_create.c
@@ -171,7 +171,8 @@ struct starpu_parallel_worker_config *_starpu_parallel_worker_init_varg(hwloc_ob
                }
                else if (arg_type == STARPU_PARALLEL_WORKER_CREATE_FUNC)
                {
-                       machine->params->create_func = va_arg(varg_list, void (*)(void*));
+                       typedef void (*fn)(void*);
+                       machine->params->create_func = va_arg(varg_list, fn);
                }
                else if (arg_type == STARPU_PARALLEL_WORKER_CREATE_FUNC_ARG)
                {

I disabled fortran because i did not want to fix the nvfortran errors as well today ... but there were some which forced me to comment these lines out

diff --git a/include/fstarpu_mod.f90 b/include/fstarpu_mod.f90
index cef51e3fbe..0015804506 100644
--- a/include/fstarpu_mod.f90
+++ b/include/fstarpu_mod.f90
@@ -2571,7 +2571,7 @@ module fstarpu_mod
                         FSTARPU_OPENCL_WORKER   = fstarpu_get_constant(C_CHAR_"FSTARPU_OPENCL_WORKER"//C_NULL_CHAR)
                         FSTARPU_ANY_WORKER   = fstarpu_get_constant(C_CHAR_"FSTARPU_ANY_WORKER"//C_NULL_CHAR)
 
-                        FSTARPU_NMAXBUFS   = int(p_to_ip(fstarpu_get_constant(C_CHAR_"FSTARPU_NMAXBUFS"//C_NULL_CHAR)),c_int)
+                        !!FSTARPU_NMAXBUFS   = int(p_to_ip(fstarpu_get_constant(C_CHAR_"FSTARPU_NMAXBUFS"//C_NULL_CHAR)),c_int)
 
                         FSTARPU_SCHED_CTX_POLICY_NAME    = &
                             fstarpu_get_constant(C_CHAR_"FSTARPU_SCHED_CTX_POLICY_NAME"//C_NULL_CHAR)
@@ -2658,8 +2658,8 @@ module fstarpu_mod
                         FSTARPU_SZ_COMPLEX8        = sz_to_p(c_sizeof(FSTARPU_SZ_COMPLEX8_dummy))
                         FSTARPU_SZ_COMPLEX8        = sz_to_p(c_sizeof(FSTARPU_SZ_COMPLEX8_dummy))
 
-                        FSTARPU_DEFAULT_PRIO =  int(p_to_ip(&
-                                fstarpu_get_constant(C_CHAR_"FSTARPU_DEFAULT_PRIO"//C_NULL_CHAR)),c_int)
+                        ! FSTARPU_DEFAULT_PRIO =  int(p_to_ip(&
+                        !         fstarpu_get_constant(C_CHAR_"FSTARPU_DEFAULT_PRIO"//C_NULL_CHAR)),c_int)
 
                         ! Initialize StarPU
                         if (c_associated(conf)) then 

After compiling, I'm was getting false positives on some warnings at runtime, probably because NVC does not define the same not-so-portable macros as GCC. For example in spite of this, i had a false positive warning that i had compiled in debug mode.

checking whether debug mode should be enabled... no

#ifdef __GNUC__
#ifndef __OPTIMIZE__
»________STARPU_DISP("Warning: StarPU was configured with --enable-debug (-O0), and is thus not optimized\n");
#endif
#endif

Then I started again, using GNU compilers instead, to avoid these pitfalls, and I found another issue in StarPU with NVHPC. 

When using this :
CXX=g++ FC=gfortran CC=gcc ./configure --disable-fortran --disable-mpi --disable-opencl --prefix=$PWD/build/

I saw this (and i was getting weird compilation warnings from an old version of CUFFT headers.)
checking whether CUDA library is available in -L/usr/local/cuda/lib64... 
checking for main in -lcudart... yes
checking for nvcc... /opt/nvidia/hpc_sdk/Linux_x86_64/24.5/compilers/bin/nvcc

While the nvcc was properly taken from my PATH variable, libraries and headers where taken from /usr/local/cuda .... Instead of $NVHPC_ROOT. So i've added that to the candidates when looking for a path in autoconf.

One other issue was that libcuda.so, libcudart.so and math libs are not at the same location anymore. So we cannot simply look for libcudart.so, and assume CUDA is properly configured : we also need to look for libcuda.so. I've implemented that in the autoconf file, and ensured we would update LDFLAGS for all libs one by one. The current meaning of the STARPU_CUDA_LDFLAGS in the autoconf file is quite unclear, we erase it when checking for CUBLAS for example, but this might only be needed to find CUBLAS, CUFFT, CURAND, and not the CUDA runtime ?

Now at runtime, the code does run properly (it would deadlock before),
$ ./build/lib/starpu/examples/axpy
[starpu][_starpu_init_cuda_config] Warning: could not find location of CUDA0, do you have the hwloc CUDA plugin installed?
[starpu][initialize_lws_policy] Warning: you are running the default lws scheduler, which is not a very smart scheduler, while the system has GPUs or several memory nodes. Make sure to read the StarPU documentation about adding performance models in order to be able to use the dmda or dmdas scheduler instead.
BEFORE x[0] = 1.00
BEFORE y[0] = 4.00
timing -> 4914.31 us 40967.42 MB/s
AFTER y[0] = 7.41 (ALPHA = 3.41)

But i'm still having this which suggests we should use some rpath ? (and the version of cusolver is let to the interested reader)

$ ldd ./build/lib/starpu/examples/axpy|grep cuda
      libcublas.so.12 => /usr/local/cuda/lib64/libcublas.so.12 (0x00007ff198800000)
      libcudart.so.12 => /usr/local/cuda/lib64/libcudart.so.12 (0x00007ff195e00000)
      libcusolver.so.11 => /usr/local/cuda/lib64/libcusolver.so.11 (0x00007ff18ec00000)
      libcublasLt.so.12 => /usr/local/cuda/lib64/libcublasLt.so.12 (0x00007ff16ba00000)
      libnvJitLink.so.12 => /usr/local/cuda/lib64/libnvJitLink.so.12 (0x00007ff168200000)
      libcusparse.so.12 => /usr/local/cuda/lib64/libcusparse.so.12 (0x00007ff158400000)

Given the huge amont of fun we always get with autoconf, I wish I could help more, but I'm a bit out of fashion 🙂

$ git clone git@gitlab.inria.fr:starpu/starpu.git
Cloning into 'starpu'...
remote:
remote: ========================================================================
remote:
remote: Your account has been blocked.
remote:
remote: ========================================================================

Best,
Cédric
diff --git a/configure.ac b/configure.ac
index 3fbed3b9be..968edfc740 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1446,7 +1446,7 @@ AC_DEFUN([STARPU_CHECK_CUDA_L],
 [
     __cuda_L=$1
     SAVED_LDFLAGS="${LDFLAGS}"
-    STARPU_CUDA_LDFLAGS="${__cuda_L}"
+    STARPU_CUDA_LDFLAGS="${STARPU_CUDA_LDFLAGS} ${__cuda_L}"
     if test "$__cuda_L" = "" ; then
         AC_MSG_CHECKING(whether CUDA library is available in default location)
     else
@@ -1456,10 +1456,29 @@ AC_DEFUN([STARPU_CHECK_CUDA_L],
     LDFLAGS="${SAVED_LDFLAGS} ${__cuda_L}"
     AC_HAVE_LIBRARY([cudart],[have_valid_cuda=yes],[have_valid_cuda=no])
     unset ac_cv_lib_cudart_main
+    LDFLAGS="${SAVED_LDFLAGS}"
     if test "$have_valid_cuda" = yes ; then
-	LDFLAGS="${SAVED_LDFLAGS} ${STARPU_CUDA_LDFLAGS}"
+	LDFLAGS="${LDFLAGS} ${STARPU_CUDA_LDFLAGS}"
     fi
+])
+AC_DEFUN([STARPU_CHECK_CUDA_DRIVER_L],
+[
+    __cuda_L=$1
+    SAVED_LDFLAGS="${LDFLAGS}"
+    STARPU_CUDA_LDFLAGS="${STARPU_CUDA_LDFLAGS} ${__cuda_L}"
+    if test "$__cuda_L" = "" ; then
+        AC_MSG_CHECKING(whether CUDA driver is available in default location)
+    else
+        AC_MSG_CHECKING(whether CUDA driver is available in $__cuda_L)
+    fi
+    AC_MSG_RESULT()
+    LDFLAGS="${SAVED_LDFLAGS} ${__cuda_L}"
+    AC_HAVE_LIBRARY([cuda],[have_valid_cuda_driver=yes],[have_valid_cuda_driver=no])
+    unset ac_cv_lib_cuda_main
     LDFLAGS="${SAVED_LDFLAGS}"
+    if test "$have_valid_cuda_driver" = yes ; then
+	LDFLAGS="${LDFLAGS} ${STARPU_CUDA_LDFLAGS}"
+    fi
 ])
 AC_DEFUN([STARPU_CHECK_CUDA],
 [
@@ -1509,6 +1528,16 @@ AC_DEFUN([STARPU_CHECK_CUDA],
 			break
 		    fi
 		done
+		for __cuda_libdir in lib64 lib64/stubs/ lib lib/x64 lib/Win32 ; do
+		    STARPU_CHECK_CUDA_DRIVER_L("-L${__cuda_dir}/${__cuda_libdir}")
+		    if test "$have_valid_cuda_driver" = yes ; then
+			break
+		    fi
+		done
+		if test "$have_valid_cuda_driver" = no ; then
+			have_valid_cuda=no
+		fi
+
 	    else
 		STARPU_CHECK_CUDA_L("")
 	    fi
@@ -1572,7 +1601,7 @@ AC_DEFUN([STARPU_CHECK_CUBLAS_L],
 [
     __cublas_L=$1
     SAVED_LDFLAGS="${LDFLAGS}"
-    STARPU_CUDA_LDFLAGS="${__cublas_L}"
+    STARPU_CUDA_LDFLAGS="${STARPU_CUDA_LDFLAGS} ${__cublas_L}"
     if test "$__cublas_L" = "" ; then
         AC_MSG_CHECKING(whether CUBLAS library is available in default location)
     else
@@ -1582,10 +1611,10 @@ AC_DEFUN([STARPU_CHECK_CUBLAS_L],
     LDFLAGS="${SAVED_LDFLAGS} ${__cublas_L}"
     AC_HAVE_LIBRARY([cublas],[have_valid_cublas=yes],[have_valid_cublas=no])
     unset ac_cv_lib_cublas_main
+    LDFLAGS="${SAVED_LDFLAGS}"
     if test "$have_valid_cublas" = yes ; then
-	LDFLAGS="${SAVED_LDFLAGS} ${STARPU_CUDA_LDFLAGS}"
+	LDFLAGS="${LDFLAGS} ${STARPU_CUDA_LDFLAGS}"
     fi
-    LDFLAGS="${SAVED_LDFLAGS}"
 ])
 AC_DEFUN([STARPU_CHECK_CUBLAS],
 [
@@ -1653,7 +1682,7 @@ if test x$enable_cuda = xyes -o x$enable_cuda = xmaybe; then
 	STARPU_CHECK_CUDA("$CUDA_ROOT", "$CUDA_PATH", "$CUDA_INC_PATH", "$CUDA_LIB_PATH")
     fi
     if test "$have_valid_cuda" = "no" ; then
-	for f in "/usr/local/cuda" "/c/cuda" "/cygdrive/c/cuda" "/opt/cuda" "$CUDA_ROOT" "$CUDA_PATH" "$CUDA_INC_PATH/.." "$CUDA_INC/.." "$CUDA_BIN/.." "$CUDA_SDK/.." "$CUDA_INSTALL_PATH" "$CUDA_TOOLKIT"; do
+	for f in "$NVHPC_ROOT/cuda/" "/usr/local/cuda" "/c/cuda" "/cygdrive/c/cuda" "/opt/cuda" "$CUDA_ROOT" "$CUDA_PATH" "$CUDA_INC_PATH/.." "$CUDA_INC/.." "$CUDA_BIN/.." "$CUDA_SDK/.." "$CUDA_INSTALL_PATH" "$CUDA_TOOLKIT"; do
 	    if test -n "$f" ; then
 		STARPU_CHECK_CUDA("$f", "no", "no")
 		if test "$have_valid_cuda" = "yes" ; then
@@ -1667,7 +1696,7 @@ if test x$enable_cuda = xyes -o x$enable_cuda = xmaybe; then
     if test "$have_valid_cuda" = "yes" ; then
         STARPU_CHECK_CUBLAS("$cublas_dir", "$cublas_include_dir", "$cublas_lib_dir")
 	if test "$have_valid_cublas" = "no" ; then
-	    for f in "" "/usr/local/cuda" "/c/cuda" "/cygdrive/c/cuda" "/opt/cuda" "$CUDA_ROOT" "$CUDA_PATH" "$CUDA_INC_PATH/.." "$CUDA_INC/.." "$CUDA_BIN/.." "$CUDA_SDK/.." "$CUDA_INSTALL_PATH" "$CUDA_TOOLKIT"; do
+	    for f in "" "$NVHPC_ROOT/math_libs/" "/usr/local/cuda" "/c/cuda" "/cygdrive/c/cuda" "/opt/cuda" "$CUDA_ROOT" "$CUDA_PATH" "$CUDA_INC_PATH/.." "$CUDA_INC/.." "$CUDA_BIN/.." "$CUDA_SDK/.." "$CUDA_INSTALL_PATH" "$CUDA_TOOLKIT"; do
 	        if test -n "$f" ; then
 		    STARPU_CHECK_CUBLAS("$f", "no", "no")
 		    if test "$have_valid_cublas" = "yes" ; then


  • [starpu-devel] Compilation and autoconf issues with an NVHPC environment, Cedric Augonnet, 18/07/2024

Archives gérées par MHonArc 2.6.19+.

Haut de le page