Skip to content

Files

Latest commit

 

History

History

CUDA

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CUDA Tests
==========

Cuda tests are enabled if cmake is invoked with
-DTEST_SUITE_EXTERNALS_DIR=<externals path> and specified externals
directory contains at least one CUDA installation.

Expected externals directory structure:
Externals/
  cuda/
    cuda-X.Y/  -- One or more CUDA installation.
    gcc-X.Y.Z/ -- One or more GCC installation for libstdc++.

export EXTERNALS=/your/externals/path
export CUDA_EXTERNALS=$EXTERNALS/cuda  # Note: not $EXTERNALS!
export CLANG_DIR=/your/clang/build/dir
export TEST_SUITE_DIR=/path/to/test-suite-sources

* Externals installation
  For each cuda version:
    $ bash cuda-linux64-rel-XXXXXX.run --toolkit --toolkitpath=$CUDA_EXTERNALS/cuda-Y.Z --silent

  To install libstdc++:
    # Clone GCC, doesn't need to live inside of $CUDA_EXTERNALS.
    $ git clone git://gcc.gnu.org/git/gcc.git
    $ cd gcc

    # Repeat starting from here for each version of libstdc++ you want.
    $ git checkout gcc-6_2_0  # or whatever version
    $ mkdir objdir
    $ cd objdir
    $ ../configure --enable-languages=c,c++ --disable-libsanitizer
    $ make bootstrap
    $ make DESTDIR=$CUDA_EXTERNALS/gcc-X.Y.Z install
    $ cd ..
    # Nuke the objdir before building a different gcc version.
    $ rm -rf objdir

  Fetch thrust:
    $ git clone https://github.com/thrust/thrust.git $CUDA_EXTERNALS/thrust

* Configure, build and run tests
  Note that if externals are checked out into <test-suite>/test-suite-externals
  there's no need to specify location explicitly with -DTEST_SUITE_EXTERNALS_DIR=

  $ mkdir test-suite-build-dir
  $ cd test-suite-build-dir
  $ PATH=$CLANG_DIR/bin:$PATH CXX=clang++ CC=clang \
    cmake -G Ninja -DTEST_SUITE_EXTERNALS_DIR=$EXTERNALS $TEST_SUITE_DIR
  $ ninja cuda-tests-all
  $ lit -j1 External/CUDA

  When you run cmake, it should say "Found CUDA prerequisites $CUDA_EXTERNALS",
  followed by "Found cuda X.Y" and "Found GCC X.Y.Z" for each version you've
  installed.

  There's a cuda-tests-simple target that excludes tests that take a long time
  to build (Thrust), and cuda-tests-thrust builds only Thrust.

  There are also top-level targets that build only one particular variant of the
  tests:

    cuda-tests-<variant_suffix>

  where <variant_suffix> is <cuda-version>-<c++ std>-<libc++|libstdc++-version>

  Similarly individual test variants can be built using the same convention:

    <test_name>-<variant suffix>

  E.g: thrust-cuda-7.5-c++98-libstdc++-4.9.3 OR axpy-cuda-7.0-c++11-libc++

  `ninja help | grep cuda` will show all the targets, for your copy/pasting
  pleasure.