Files
CUDA
Folders and files
Name | Name | 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.