From 099400909ed214b5fbf04404bbbc823fdb355b96 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Sat, 4 Aug 2018 20:07:22 +0000 Subject: [PATCH] [libgomp, nvptx, --without-cuda-driver] Don't use system cuda driver Using libgomp configure option --with-cuda-driver= 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 * 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 | 7 +++++ libgomp/configure | 49 +++++++++++++++++++------------- libgomp/plugin/configfrag.ac | 55 +++++++++++++++++++++--------------- 3 files changed, 70 insertions(+), 41 deletions(-) diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index a44dc7c90d0..0742c78c9cc 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,10 @@ +2018-08-04 Tom de Vries + + * 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 PR target/86660 diff --git a/libgomp/configure b/libgomp/configure index ced7606b355..b4fc9d3cc72 100755 --- a/libgomp/configure +++ b/libgomp/configure @@ -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 ;; @@ -15313,10 +15317,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 @@ -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' diff --git a/libgomp/plugin/configfrag.ac b/libgomp/plugin/configfrag.ac index 864817d44d1..a979425a293 100644 --- a/libgomp/plugin/configfrag.ac +++ b/libgomp/plugin/configfrag.ac @@ -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' -- 2.30.2