[libgomp, nvptx, --without-cuda-driver] Don't use system cuda driver
authorTom de Vries <tdevries@suse.de>
Sat, 4 Aug 2018 20:07:22 +0000 (20:07 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Sat, 4 Aug 2018 20:07:22 +0000 (20:07 +0000)
Using libgomp configure option --with-cuda-driver=<dir> we can indicate what
cuda driver to use to build the libgomp nvptx plugin.  Without such an option,
the system cuda driver is used, if available.  If not availabe, a dlopen
interface is used instead.

However, when we use --without-cuda-driver (or the equivalent
--with-cuda-driver=no) the system cuda driver is still used if available.

This patch fixes that, making sure that --without-cuda-driver selects the dlopen
interface.

Build on x86_64 with nvptx accelerator and tested libgomp testsuite, with and
without option --without-cuda-driver.

2018-08-04  Tom de Vries  <tdevries@suse.de>

* plugin/configfrag.ac: For --without-cuda-driver, set
CUDA_DRIVER_INCLUDE and CUDA_DRIVER_LIB to no.  Handle
CUDA_DRIVER_INCLUDE == no and CUDA_DRIVER_LIB == no.
* configure: Regenerate.

From-SVN: r263310

libgomp/ChangeLog
libgomp/configure
libgomp/plugin/configfrag.ac

index a44dc7c90d06cc2bfdb46530103ec25a83bf5f41..0742c78c9cce2813b2ca4962e522a7278c44db29 100644 (file)
@@ -1,3 +1,10 @@
+2018-08-04  Tom de Vries  <tdevries@suse.de>
+
+       * plugin/configfrag.ac: For --without-cuda-driver, set
+       CUDA_DRIVER_INCLUDE and CUDA_DRIVER_LIB to no.  Handle
+       CUDA_DRIVER_INCLUDE == no and CUDA_DRIVER_LIB == no.
+       * configure: Regenerate.
+
 2018-08-02  Tom de Vries  <tdevries@suse.de>
 
        PR target/86660
index ced7606b35575d7ec0be8c48fe6baf661a1b8d8a..b4fc9d3cc72f762afc8f2f2ad40312e8ec4f187f 100755 (executable)
@@ -15302,7 +15302,11 @@ if test "${with_cuda_driver_lib+set}" = set; then :
 fi
 
 case "x$with_cuda_driver" in
-  x | xno) ;;
+  x) ;;
+  xno)
+    CUDA_DRIVER_INCLUDE=no
+    CUDA_DRIVER_LIB=no
+    ;;
   *) CUDA_DRIVER_INCLUDE=$with_cuda_driver/include
      CUDA_DRIVER_LIB=$with_cuda_driver/lib
      ;;
 if test "x$with_cuda_driver_lib" != x; then
   CUDA_DRIVER_LIB=$with_cuda_driver_lib
 fi
-if test "x$CUDA_DRIVER_INCLUDE" != x; then
+if test "x$CUDA_DRIVER_INCLUDE" != x \
+   && test "x$CUDA_DRIVER_INCLUDE" != xno; then
   CUDA_DRIVER_CPPFLAGS=-I$CUDA_DRIVER_INCLUDE
 fi
-if test "x$CUDA_DRIVER_LIB" != x; then
+if test "x$CUDA_DRIVER_LIB" != x \
+   && test "x$CUDA_DRIVER_LIB" != xno; then
   CUDA_DRIVER_LDFLAGS=-L$CUDA_DRIVER_LIB
 fi
 
@@ -15400,17 +15406,19 @@ if test x"$enable_offload_targets" != x; then
       nvptx*)
         tgt_name=nvptx
        PLUGIN_NVPTX=$tgt
-       PLUGIN_NVPTX_CPPFLAGS=$CUDA_DRIVER_CPPFLAGS
-       PLUGIN_NVPTX_LDFLAGS=$CUDA_DRIVER_LDFLAGS
-       PLUGIN_NVPTX_LIBS='-lcuda'
-
-       PLUGIN_NVPTX_save_CPPFLAGS=$CPPFLAGS
-       CPPFLAGS="$PLUGIN_NVPTX_CPPFLAGS $CPPFLAGS"
-       PLUGIN_NVPTX_save_LDFLAGS=$LDFLAGS
-       LDFLAGS="$PLUGIN_NVPTX_LDFLAGS $LDFLAGS"
-       PLUGIN_NVPTX_save_LIBS=$LIBS
-       LIBS="$PLUGIN_NVPTX_LIBS $LIBS"
-       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+       if test "x$CUDA_DRIVER_LIB" != xno \
+          && test "x$CUDA_DRIVER_LIB" != xno; then
+         PLUGIN_NVPTX_CPPFLAGS=$CUDA_DRIVER_CPPFLAGS
+         PLUGIN_NVPTX_LDFLAGS=$CUDA_DRIVER_LDFLAGS
+         PLUGIN_NVPTX_LIBS='-lcuda'
+
+         PLUGIN_NVPTX_save_CPPFLAGS=$CPPFLAGS
+         CPPFLAGS="$PLUGIN_NVPTX_CPPFLAGS $CPPFLAGS"
+         PLUGIN_NVPTX_save_LDFLAGS=$LDFLAGS
+         LDFLAGS="$PLUGIN_NVPTX_LDFLAGS $LDFLAGS"
+         PLUGIN_NVPTX_save_LIBS=$LIBS
+         LIBS="$PLUGIN_NVPTX_LIBS $LIBS"
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "cuda.h"
 int
@@ -15426,13 +15434,16 @@ if ac_fn_c_try_link "$LINENO"; then :
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-       CPPFLAGS=$PLUGIN_NVPTX_save_CPPFLAGS
-       LDFLAGS=$PLUGIN_NVPTX_save_LDFLAGS
-       LIBS=$PLUGIN_NVPTX_save_LIBS
+         CPPFLAGS=$PLUGIN_NVPTX_save_CPPFLAGS
+         LDFLAGS=$PLUGIN_NVPTX_save_LDFLAGS
+         LIBS=$PLUGIN_NVPTX_save_LIBS
+       fi
        case $PLUGIN_NVPTX in
          nvptx*)
-           if test "x$CUDA_DRIVER_INCLUDE" = x \
-              && test "x$CUDA_DRIVER_LIB" = x; then
+           if (test "x$CUDA_DRIVER_INCLUDE" = x \
+               || test "x$CUDA_DRIVER_INCLUDE" = xno) \
+              && (test "x$CUDA_DRIVER_LIB" = x \
+                  || test "x$CUDA_DRIVER_LIB" = xno); then
              PLUGIN_NVPTX=1
              PLUGIN_NVPTX_CPPFLAGS='-I$(srcdir)/plugin/cuda'
              PLUGIN_NVPTX_LIBS='-ldl'
index 864817d44d1a27b51a570e4254937555937f99f4..a979425a293b62af68ee4946d2702fa6277e1d0d 100644 (file)
@@ -59,7 +59,11 @@ AC_ARG_WITH(cuda-driver-lib,
        [AS_HELP_STRING([--with-cuda-driver-lib=PATH],
                [specify directory for the installed CUDA driver library])])
 case "x$with_cuda_driver" in
-  x | xno) ;;
+  x) ;;
+  xno)
+    CUDA_DRIVER_INCLUDE=no
+    CUDA_DRIVER_LIB=no
+    ;;
   *) CUDA_DRIVER_INCLUDE=$with_cuda_driver/include
      CUDA_DRIVER_LIB=$with_cuda_driver/lib
      ;;
@@ -70,10 +74,12 @@ fi
 if test "x$with_cuda_driver_lib" != x; then
   CUDA_DRIVER_LIB=$with_cuda_driver_lib
 fi
-if test "x$CUDA_DRIVER_INCLUDE" != x; then
+if test "x$CUDA_DRIVER_INCLUDE" != x \
+   && test "x$CUDA_DRIVER_INCLUDE" != xno; then
   CUDA_DRIVER_CPPFLAGS=-I$CUDA_DRIVER_INCLUDE
 fi
-if test "x$CUDA_DRIVER_LIB" != x; then
+if test "x$CUDA_DRIVER_LIB" != x \
+   && test "x$CUDA_DRIVER_LIB" != xno; then
   CUDA_DRIVER_LDFLAGS=-L$CUDA_DRIVER_LIB
 fi
 
@@ -150,28 +156,33 @@ if test x"$enable_offload_targets" != x; then
       nvptx*)
         tgt_name=nvptx
        PLUGIN_NVPTX=$tgt
-       PLUGIN_NVPTX_CPPFLAGS=$CUDA_DRIVER_CPPFLAGS
-       PLUGIN_NVPTX_LDFLAGS=$CUDA_DRIVER_LDFLAGS
-       PLUGIN_NVPTX_LIBS='-lcuda'
+       if test "x$CUDA_DRIVER_LIB" != xno \
+          && test "x$CUDA_DRIVER_LIB" != xno; then
+         PLUGIN_NVPTX_CPPFLAGS=$CUDA_DRIVER_CPPFLAGS
+         PLUGIN_NVPTX_LDFLAGS=$CUDA_DRIVER_LDFLAGS
+         PLUGIN_NVPTX_LIBS='-lcuda'
 
-       PLUGIN_NVPTX_save_CPPFLAGS=$CPPFLAGS
-       CPPFLAGS="$PLUGIN_NVPTX_CPPFLAGS $CPPFLAGS"
-       PLUGIN_NVPTX_save_LDFLAGS=$LDFLAGS
-       LDFLAGS="$PLUGIN_NVPTX_LDFLAGS $LDFLAGS"
-       PLUGIN_NVPTX_save_LIBS=$LIBS
-       LIBS="$PLUGIN_NVPTX_LIBS $LIBS"
-       AC_LINK_IFELSE(
-         [AC_LANG_PROGRAM(
-           [#include "cuda.h"],
-             [CUresult r = cuCtxPushCurrent (NULL);])],
-         [PLUGIN_NVPTX=1])
-       CPPFLAGS=$PLUGIN_NVPTX_save_CPPFLAGS
-       LDFLAGS=$PLUGIN_NVPTX_save_LDFLAGS
-       LIBS=$PLUGIN_NVPTX_save_LIBS
+         PLUGIN_NVPTX_save_CPPFLAGS=$CPPFLAGS
+         CPPFLAGS="$PLUGIN_NVPTX_CPPFLAGS $CPPFLAGS"
+         PLUGIN_NVPTX_save_LDFLAGS=$LDFLAGS
+         LDFLAGS="$PLUGIN_NVPTX_LDFLAGS $LDFLAGS"
+         PLUGIN_NVPTX_save_LIBS=$LIBS
+         LIBS="$PLUGIN_NVPTX_LIBS $LIBS"
+         AC_LINK_IFELSE(
+           [AC_LANG_PROGRAM(
+             [#include "cuda.h"],
+               [CUresult r = cuCtxPushCurrent (NULL);])],
+           [PLUGIN_NVPTX=1])
+         CPPFLAGS=$PLUGIN_NVPTX_save_CPPFLAGS
+         LDFLAGS=$PLUGIN_NVPTX_save_LDFLAGS
+         LIBS=$PLUGIN_NVPTX_save_LIBS
+       fi
        case $PLUGIN_NVPTX in
          nvptx*)
-           if test "x$CUDA_DRIVER_INCLUDE" = x \
-              && test "x$CUDA_DRIVER_LIB" = x; then
+           if (test "x$CUDA_DRIVER_INCLUDE" = x \
+               || test "x$CUDA_DRIVER_INCLUDE" = xno) \
+              && (test "x$CUDA_DRIVER_LIB" = x \
+                  || test "x$CUDA_DRIVER_LIB" = xno); then
              PLUGIN_NVPTX=1
              PLUGIN_NVPTX_CPPFLAGS='-I$(srcdir)/plugin/cuda'
              PLUGIN_NVPTX_LIBS='-ldl'