|
| 1 | +#!/bin/sh |
| 2 | +export DPCPP_HOME=~/sycl_workspace |
| 3 | +export CUDA_ROOT=/usr/local/cuda-10.2 |
| 4 | +export LD_LIBRARY_PATH=$DPCPP_HOME/deploy/lib/:$DPCPP_HOME/deploy/lib64/:$DPCPP_HOME/lapack/install/lib64/:$DPCPP_HOME/OpenCL-ICD-Loader/install/lib64:$CUDA_ROOT/lib:$CUDA_ROOT/lib64:$LD_LIBRARY_PATH |
| 5 | +export PATH=$DPCPP_HOME/deploy/bin/:$CUDA_ROOT/bin:$PATH |
| 6 | + |
| 7 | +mkdir -p $DPCPP_HOME |
| 8 | +cd $DPCPP_HOME |
| 9 | +mkdir -p deploy |
| 10 | + |
| 11 | +#export LD_PRELOAD=/opt/intel/opencl/libOpenCL.so.1 |
| 12 | + |
| 13 | +run_test=false |
| 14 | +cmake_test="OFF" |
| 15 | + |
| 16 | +if [[ -z "$DPCPP_TESTS" ]]; then |
| 17 | + echo "Not testing" |
| 18 | +else |
| 19 | + echo "testing" |
| 20 | + run_test=true |
| 21 | + cmake_test="ON" |
| 22 | +fi |
| 23 | + |
| 24 | +export CXXFLAGS="${CXXFLAGS} -D_GLIBCXX_USE_CXX11_ABI=1" |
| 25 | + |
| 26 | +# OpenCL headers+ICD |
| 27 | +cd $DPCPP_HOME |
| 28 | +(if cd OpenCL-Headers; then git pull; else git clone https://github.com/KhronosGroup/OpenCL-Headers.git; fi) |
| 29 | +(if cd OpenCL-ICD-Loader; then git pull; else git clone https://github.com/KhronosGroup/OpenCL-ICD-Loader.git; fi) |
| 30 | +cd OpenCL-ICD-Loader |
| 31 | +mkdir -p build |
| 32 | +cd build |
| 33 | +cmake \ |
| 34 | + -DOPENCL_ICD_LOADER_HEADERS_DIR=$DPCPP_HOME/OpenCL-Headers \ |
| 35 | + -DCMAKE_INSTALL_PREFIX=$DPCPP_HOME/OpenCL-ICD-Loader/install \ |
| 36 | + .. |
| 37 | +make install -j $(nproc) |
| 38 | + |
| 39 | +#sycl compiler with cuda |
| 40 | +source /opt/intel/opencl/env/compiler_rt_vars.sh |
| 41 | +cd $DPCPP_HOME |
| 42 | +(if cd llvm; then git pull; else git clone https://github.com/intel/llvm.git -b sycl; fi) |
| 43 | +cd llvm |
| 44 | +python3 ./buildbot/configure.py \ |
| 45 | + --cuda \ |
| 46 | + -t release \ |
| 47 | + --cmake-opt="-DCMAKE_INSTALL_PREFIX=$DPCPP_HOME/deploy" \ |
| 48 | + --cmake-opt="-DCUDA_SDK_ROOT_DIR=$CUDA_ROOT" \ |
| 49 | + --cmake-opt="-DLLVM_BINUTILS_INCDIR=/usr/local/include" \ |
| 50 | + --cmake-opt="-DLLVM_ENABLE_PROJECTS=clang;sycl;llvm-spirv;libunwind;opencl;libdevice;xpti;xptifw;libclc;lld;lldb;libc;libcxx;libcxxabi;openmp;clang-tools-extra;compiler-rt" \ |
| 51 | + --cmake-opt="-DLLVM_BUILD_TESTS=$cmake_test" \ |
| 52 | + --cmake-opt="-DCMAKE_CXX_STANDARD=17" \ |
| 53 | + --cmake-opt="-DLLVM_ENABLE_LTO=off" \ |
| 54 | + --cmake-opt="-DLLVM_ENABLE_LLD=ON" \ |
| 55 | + --cmake-opt="-DSYCL_ENABLE_WERROR=OFF" \ |
| 56 | + --cmake-opt="-Wno-dev" |
| 57 | +cd build |
| 58 | +ninja install -j $(nproc) |
| 59 | +if $run_test; then |
| 60 | + echo "testing llvm" |
| 61 | + ninja check -j $(nproc) |
| 62 | +fi |
| 63 | + |
| 64 | +#Lapack Reference |
| 65 | +cd $DPCPP_HOME |
| 66 | +(if cd lapack; then git pull; else git clone https://github.com/Reference-LAPACK/lapack.git; fi) |
| 67 | +cd lapack/ |
| 68 | +mkdir -p build |
| 69 | +cd build/ |
| 70 | +cmake \ |
| 71 | + -DBUILD_SHARED_LIBS=ON \ |
| 72 | + -DCBLAS=ON \ |
| 73 | + -DLAPACKE=ON \ |
| 74 | + -DBUILD_TESTING=$cmake_test \ |
| 75 | + -DCMAKE_INSTALL_PREFIX=$DPCPP_HOME/lapack/install \ |
| 76 | + .. |
| 77 | +cmake --build . -j $(nproc) --target install |
| 78 | +if $run_test; then |
| 79 | + cmake --build . -j $(nproc) --target test |
| 80 | +fi |
| 81 | + |
| 82 | +#oneTBB |
| 83 | +cd $DPCPP_HOME |
| 84 | +(if cd oneTBB; then git pull; else git clone https://github.com/oneapi-src/oneTBB.git; fi) |
| 85 | +cd oneTBB |
| 86 | +mkdir -p build |
| 87 | +cd build |
| 88 | +cmake -GNinja \ |
| 89 | + -DCMAKE_CXX_COMPILER=$DPCPP_HOME/deploy/bin/clang++ \ |
| 90 | + -DCMAKE_BUILD_TYPE=Release \ |
| 91 | + -DTBB_STRICT=OFF \ |
| 92 | + -DCMAKE_INSTALL_PREFIX=$DPCPP_HOME/deploy/ \ |
| 93 | + -DTBB_TEST=$cmake_test \ |
| 94 | + .. |
| 95 | +ninja install -j $(nproc) |
| 96 | +if $run_test; then |
| 97 | + ninja test -j $(nproc) |
| 98 | +fi |
| 99 | + |
| 100 | +#oneMKL |
| 101 | +cd $DPCPP_HOME |
| 102 | +(if cd oneMKL; then git pull; else git clone https://github.com/oneapi-src/oneMKL.git; fi) |
| 103 | +cd oneMKL |
| 104 | +mkdir -p build |
| 105 | +cd build |
| 106 | +cmake -GNinja \ |
| 107 | + -DCMAKE_CXX_COMPILER=$DPCPP_HOME/deploy/bin/clang++ \ |
| 108 | + -DCMAKE_BUILD_TYPE=Release \ |
| 109 | + -DCMAKE_CXX_STANDARD=17 \ |
| 110 | + -DTARGET_DOMAINS=blas \ |
| 111 | + -DENABLE_MKLGPU_BACKEND=OFF \ |
| 112 | + -DENABLE_CURAND_BACKEND=OFF \ |
| 113 | + -DENABLE_MKLCPU_BACKEND=OFF \ |
| 114 | + -DENABLE_CUBLAS_BACKEND=ON \ |
| 115 | + -DENABLE_NETLIB_BACKEND=ON \ |
| 116 | + -DREF_BLAS_ROOT=$DPCPP_HOME/lapack/install \ |
| 117 | + -DNETLIB_ROOT=$DPCPP_HOME/lapack/install \ |
| 118 | + -DOPENCL_INCLUDE_DIR=$DPCPP_HOME/OpenCL-Headers \ |
| 119 | + -DCUDA_TOOLKIT_ROOT_DIR=$CUDA_ROOT \ |
| 120 | + -DSYCL_LIBRARY=$DPCPP_HOME/deploy/lib/libsycl.so \ |
| 121 | + -DCMAKE_INSTALL_PREFIX=$DPCPP_HOME/deploy/ \ |
| 122 | + -DBUILD_FUNCTIONAL_TESTS=$cmake_test \ |
| 123 | + .. |
| 124 | +ninja install -j $(nproc) |
| 125 | +if $run_test; then |
| 126 | + ninja test -j $(nproc) |
| 127 | +fi |
| 128 | + |
| 129 | +#oneDNN |
| 130 | +cd $DPCPP_HOME |
| 131 | +(if cd oneDNN; then git pull; else git clone https://github.com/oneapi-src/oneDNN.git; fi) |
| 132 | +cd oneDNN |
| 133 | +mkdir -p build |
| 134 | +cd build |
| 135 | +cmake -GNinja \ |
| 136 | + -DCMAKE_C_COMPILER=$DPCPP_HOME/deploy/bin/clang \ |
| 137 | + -DCMAKE_CXX_COMPILER=$DPCPP_HOME/deploy/bin/clang++ \ |
| 138 | + -DCMAKE_BUILD_TYPE=Release \ |
| 139 | + -DCMAKE_CXX_STANDARD=17 \ |
| 140 | + -DDNNL_INSTALL_MODE=BUNDLE \ |
| 141 | + -DDNNL_CPU_RUNTIME=DPCPP \ |
| 142 | + -DDNNL_GPU_RUNTIME=DPCPP \ |
| 143 | + -DDNNL_GPU_VENDOR=NVIDIA \ |
| 144 | + -DNNL_BUILD_EXAMPLES=OFF \ |
| 145 | + -DTBBROOT=$DPCPP_HOME/deploy \ |
| 146 | + -DCUDA_SDK_ROOT_DIR=$CUDA_ROOT \ |
| 147 | + -DOPENCLROOT=$DPCPP_HOME/OpenCL-ICD-Loader/install \ |
| 148 | + -DOpenCL_INCLUDE_DIR=$DPCPP_HOME/OpenCL-Headers \ |
| 149 | + -DCUBLAS_LIBRARY=$CUDA_ROOT/lib64/libcublas.so \ |
| 150 | + -DCUBLAS_INCLUDE_DIR=$CUDA_ROOT/include \ |
| 151 | + -DCMAKE_INSTALL_PREFIX=$DPCPP_HOME/deploy \ |
| 152 | + -DDNNL_BUILD_TESTS=$cmake_test \ |
| 153 | + .. |
| 154 | +ninja install -j $(nproc) |
| 155 | +if $run_test; then |
| 156 | + LD_LIBRARY_PATH=$DPCPP_HOME/deploy/lib ninja test -j $(nproc) |
| 157 | +fi |
0 commit comments