Forráskód Böngészése

Configuration and Compilation system:
- CUDA compilation and linking flags are all defined in STARPU_CUDA_LDFLAGS and STARPU_CUDA_CPPFLAGS which must be specifically added in Makefile.am
- Specifically list all libraries needed to compile CUDA applications

Nathalie Furmento 14 éve
szülő
commit
aa683e2b27
6 módosított fájl, 21 hozzáadás és 5 törlés
  1. 16 5
      configure.ac
  2. 1 0
      examples/Makefile.am
  3. 1 0
      examples/stencil/Makefile.am
  4. 1 0
      mpi/Makefile.am
  5. 1 0
      tests/Makefile.am
  6. 1 0
      tools/Makefile.am

+ 16 - 5
configure.ac

@@ -303,9 +303,13 @@ AC_DEFUN([STARPU_CHECK_CUDA_RUNTIME],
     fi
 
     if test "$have_valid_cuda" = "yes" ; then
+        STARPU_CUDA_LDFLAGS="$STARPU_CUDA_LDFLAGS -lcudart"
 	# we also check that CUBLAS is available
-	AC_HAVE_LIBRARY([cublas],,[have_valid_cuda=no])
+	AC_HAVE_LIBRARY([cublas],[have_valid_cuda=yes],[have_valid_cuda=no])
         unset ac_cv_lib_cublas_main
+        if test "$have_valid_cuda" = "yes" ; then
+            STARPU_CUDA_LDFLAGS="$STARPU_CUDA_LDFLAGS -lcublas"
+        fi
     fi
 
     if test "$have_valid_cuda" = "no" ; then
@@ -364,8 +368,9 @@ if test x$enable_cuda = xyes; then
 #	esac
 	STARPU_CUDA_LDFLAGS="$STARPU_CUDA_LDFLAGS -lcuda"
 
-        AC_SUBST(STARPU_CUDA_LDFLAGS)
-        AC_SUBST(STARPU_CUDA_CPPFLAGS)
+        if test "$F77" = "gfortran" ; then
+            STARPU_CUDA_LDFLAGS="$STARPU_CUDA_LDFLAGS -lgfortran"
+        fi
 
 	#in case this is a 64bit setup, we tell nvcc to use a -m64 flag
 	AC_CHECK_SIZEOF([void *])
@@ -456,14 +461,20 @@ fi
 # The CURAND library is only available since CUDA 3.2
 have_curand=$enable_cuda
 if test x$enable_cuda = xyes; then
-	AC_HAVE_LIBRARY([curand],[],[have_curand=no])
+	AC_HAVE_LIBRARY([curand],[have_curand=yes],[have_curand=no])
 fi
 AC_MSG_CHECKING(whether CURAND is available)
 AC_MSG_RESULT($have_curand)
 if test x$have_curand = xyes; then
-AC_DEFINE(STARPU_HAVE_CURAND,[1], [CURAND is available])
+    AC_DEFINE(STARPU_HAVE_CURAND,[1], [CURAND is available])
+    STARPU_CUDA_LDFLAGS="$STARPU_CUDA_LDFLAGS -lcurand"
 fi
 
+if test x$enable_cuda = xyes; then
+    STARPU_CUDA_LDFLAGS="$STARPU_CUDA_LDFLAGS -lstdc++"
+    AC_SUBST(STARPU_CUDA_LDFLAGS)
+    AC_SUBST(STARPU_CUDA_CPPFLAGS)
+fi
 
 ###############################################################################
 #                                                                             #

+ 1 - 0
examples/Makefile.am

@@ -17,6 +17,7 @@
 AM_CFLAGS = $(HWLOC_CFLAGS) -Wall
 LIBS = $(top_builddir)/src/libstarpu.la $(HWLOC_LIBS) @LIBS@
 AM_CPPFLAGS = -I$(top_srcdir)/include/ -I$(top_srcdir)/examples/ -I$(top_builddir)/include
+AM_LDFLAGS = $(STARPU_CUDA_LDFLAGS)
 
 TESTS	=	$(check_PROGRAMS)
 

+ 1 - 0
examples/stencil/Makefile.am

@@ -16,6 +16,7 @@
 AM_CFLAGS = $(HWLOC_CFLAGS)
 LIBS = $(top_builddir)/src/libstarpu.la $(HWLOC_LIBS) @LIBS@
 AM_CPPFLAGS = -I$(top_srcdir)/include/ -I$(top_srcdir)/examples/ -I$(top_builddir)/include
+AM_LDFLAGS = $(STARPU_CUDA_LDFLAGS)
 
 if USE_MPI
 LIBS += $(top_builddir)/mpi/libstarpumpi.la

+ 1 - 0
mpi/Makefile.am

@@ -61,6 +61,7 @@ endif
 AM_CFLAGS = $(HWLOC_CFLAGS) -Wall
 LIBS = $(top_builddir)/src/libstarpu.la $(HWLOC_LIBS) @LIBS@
 AM_CPPFLAGS = -I$(top_srcdir)/include/ -I$(top_srcdir)/mpi/ -I$(top_srcdir)/src/  -I$(top_srcdir)/examples/ -I$(top_builddir)/src -I$(top_builddir)/include
+AM_LDFLAGS = $(STARPU_CUDA_LDFLAGS)
 
 lib_LTLIBRARIES = libstarpumpi.la
 

+ 1 - 0
tests/Makefile.am

@@ -18,6 +18,7 @@
 AM_CFLAGS = $(HWLOC_CFLAGS) -Wall
 LIBS = $(top_builddir)/src/libstarpu.la $(HWLOC_LIBS) @LIBS@
 AM_CPPFLAGS = -I$(top_srcdir)/include/ -I$(top_srcdir)/src/
+AM_LDFLAGS = $(STARPU_CUDA_LDFLAGS)
 
 EXTRA_DIST =					\
 	microbenchs/null_kernel_gordon.c	\

+ 1 - 0
tools/Makefile.am

@@ -19,6 +19,7 @@ SUBDIRS =
 AM_CFLAGS = $(HWLOC_CFLAGS)
 LIBS = $(top_builddir)/src/libstarpu.la $(HWLOC_LIBS) @LIBS@
 AM_CPPFLAGS = -I$(top_srcdir)/include/ -I$(top_srcdir)/tools/ -I$(top_srcdir)/mpi/ -I$(top_builddir)/src -I$(top_srcdir)/src
+AM_LDFLAGS = $(STARPU_CUDA_LDFLAGS)
 
 bin_PROGRAMS =
 dist_bin_SCRIPTS =