From patchwork Sat Aug 4 20:10:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 953484 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-483175-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="xvPHETTz"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 41jZmY35clz9s4V for ; Sun, 5 Aug 2018 06:11:07 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:cc:subject:message-id:mime-version:content-type; q=dns; s=default; b=t/k9GMKwLhrLGBVwAaH6V6IKz2zGphAOcaQEG5UDCxpMrL2YAY F+hXO7lrVuYZNIcaFc1+hZHl6ETcQ78sxdkZkoSs7twu8DhsZ9fjRnqO8iXr9E31 t+pt/DbLCG1MVtBet7FRwwTtxa1ZlCBqAwuI0EUBnj3IY/RrpkzQS2mQk= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:cc:subject:message-id:mime-version:content-type; s= default; bh=JTgSufZ367krA75MqIOlcYAgtC8=; b=xvPHETTzHShaTfZkUmXH LwKBJ9oaRsK8X8hUYDPrGQWtUlqlMIXmHvHte7mGXhDlTd0j6quTa6jrxJiYwFwX H7Y4iBnjA+kUY58Q0vmaKhSg01eNMmgyMga1L18Z5tfvoEtHqLRT8KwkdyIA59Au tR/fsvtpqBwcmzzL57iAxlE= Received: (qmail 22406 invoked by alias); 4 Aug 2018 20:11:00 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 22337 invoked by uid 89); 4 Aug 2018 20:10:53 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS, UPPERCASE_50_75 autolearn=ham version=3.3.2 spammy=UD:cuda.h, Regenerate, cuda.h, cudah X-HELO: mx1.suse.de Received: from mx2.suse.de (HELO mx1.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 04 Aug 2018 20:10:51 +0000 Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id A70C1ACB1; Sat, 4 Aug 2018 20:10:48 +0000 (UTC) Date: Sat, 4 Aug 2018 22:10:45 +0200 From: Tom de Vries To: gcc-patches@gcc.gnu.org Cc: Jakub Jelinek Subject: [committed, libgomp, nvptx, --without-cuda-driver] Don't use system cuda driver Message-ID: <20180804201045.qv2pjp72ezsrbcaa@delia> MIME-Version: 1.0 Content-Disposition: inline User-Agent: NeoMutt/20170912 (1.9.0) X-IsSubscribed: yes Hi, 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. Committed. Thanks, - Tom [libgomp, nvptx, --without-cuda-driver] Don't use system 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. --- libgomp/configure | 49 ++++++++++++++++++++++++--------------- libgomp/plugin/configfrag.ac | 55 ++++++++++++++++++++++++++------------------ 2 files changed, 63 insertions(+), 41 deletions(-) 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'