update CMake to use official CUDA toolkit
This commit is contained in:
parent
f712c30b09
commit
c2222f2e39
|
@ -22,12 +22,6 @@ jobs:
|
||||||
uses: KyleMayes/install-llvm-action@v1
|
uses: KyleMayes/install-llvm-action@v1
|
||||||
with:
|
with:
|
||||||
version: "14.0"
|
version: "14.0"
|
||||||
- name: Download CUDA header files
|
|
||||||
run: |
|
|
||||||
cd ${{ github.workspace }}
|
|
||||||
wget https://www.dropbox.com/s/r18io0zu3idke5p/cuda-header.tar.gz?dl=1
|
|
||||||
tar -xzf 'cuda-header.tar.gz?dl=1'
|
|
||||||
cp -r include/* runtime/threadPool/include/
|
|
||||||
- name: Download CUDA files used for compiling NVVM IR
|
- name: Download CUDA files used for compiling NVVM IR
|
||||||
run: |
|
run: |
|
||||||
cd ${{ github.workspace }}
|
cd ${{ github.workspace }}
|
||||||
|
@ -41,7 +35,7 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake .. -DLLVM_CONFIG_PATH=`which llvm-config`
|
cmake .. -DLLVM_CONFIG_PATH=`which llvm-config` -DCUDA_PATH=$CuPBoP_PATH/cuda-10.1
|
||||||
make -j8
|
make -j8
|
||||||
- name: clone SC evaluation code
|
- name: clone SC evaluation code
|
||||||
run: |
|
run: |
|
||||||
|
|
|
@ -32,13 +32,20 @@ if(DEFINED LLVM_CONFIG_PATH)
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "llvm-config is required")
|
message(FATAL_ERROR "llvm-config is required")
|
||||||
endif()
|
endif()
|
||||||
|
# get CUDA PATH
|
||||||
|
if(DEFINED CUDA_PATH)
|
||||||
|
message(STATUS "Using CUDA: ${CUDA_PATH}")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "CUDA_PATH is required")
|
||||||
|
endif()
|
||||||
|
|
||||||
option(DEBUG "Print debug information." OFF)
|
option(DEBUG "Print debug information." OFF)
|
||||||
if(DEBUG)
|
if(DEBUG)
|
||||||
add_definitions(-DDEBUG)
|
add_definitions(-DDEBUG)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${LLVM_CXX_FLAG} ${CMAKE_CXX_FLAGS}")
|
set(CMAKE_CXX_FLAGS
|
||||||
|
"-I${CUDA_PATH}/include ${LLVM_CXX_FLAG} ${CMAKE_CXX_FLAGS}")
|
||||||
|
|
||||||
set(GCC_COVERAGE_LINK_FLAGS
|
set(GCC_COVERAGE_LINK_FLAGS
|
||||||
"-L${LLVM_LIB_PATH} ${LLVM_LINK_FLAG} -lz -lrt -ldl -ltinfo -lpthread -lm")
|
"-L${LLVM_LIB_PATH} ${LLVM_LINK_FLAG} -lz -lrt -ldl -ltinfo -lpthread -lm")
|
||||||
|
|
37
README.md
37
README.md
|
@ -5,7 +5,7 @@
|
||||||
CuPBoP is a framework which support executing unmodified CUDA source code
|
CuPBoP is a framework which support executing unmodified CUDA source code
|
||||||
on non-NVIDIA devices.
|
on non-NVIDIA devices.
|
||||||
Currently, CuPBoP support serveral CPU backends, including x86, AArch64, and RISC-V.
|
Currently, CuPBoP support serveral CPU backends, including x86, AArch64, and RISC-V.
|
||||||
Supporting the RISC-V GPU [Vortex](https://vortex.cc.gatech.edu/) is working in progress.
|
Supporting [Vortex](https://vortex.cc.gatech.edu/) (a RISC-V GPU) is working in progress.
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
|
@ -13,6 +13,12 @@ Supporting the RISC-V GPU [Vortex](https://vortex.cc.gatech.edu/) is working in
|
||||||
|
|
||||||
- Linux system
|
- Linux system
|
||||||
- [LLVM 14.0.1](https://github.com/llvm/llvm-project/releases/tag/llvmorg-14.0.1)
|
- [LLVM 14.0.1](https://github.com/llvm/llvm-project/releases/tag/llvmorg-14.0.1)
|
||||||
|
- CUDA Toolkit
|
||||||
|
|
||||||
|
Although CuPBoP does not require NVIDIA GPUs,
|
||||||
|
it needs CUDA to compile the source programs to NVVM/LLVM IRs.
|
||||||
|
CUDA toolkit can be built on machines without NVIDIA GPUs.
|
||||||
|
For building CUDA toolkit, please refer to <https://developer.nvidia.com/cuda-downloads>.
|
||||||
|
|
||||||
### Installation
|
### Installation
|
||||||
|
|
||||||
|
@ -23,28 +29,17 @@ Supporting the RISC-V GPU [Vortex](https://vortex.cc.gatech.edu/) is working in
|
||||||
cd CuPBoP
|
cd CuPBoP
|
||||||
export CuPBoP_PATH=`pwd`
|
export CuPBoP_PATH=`pwd`
|
||||||
export LD_LIBRARY_PATH=$CuPBoP_PATH/build/runtime:$CuPBoP_PATH/build/runtime/threadPool:$LD_LIBRARY_PATH
|
export LD_LIBRARY_PATH=$CuPBoP_PATH/build/runtime:$CuPBoP_PATH/build/runtime/threadPool:$LD_LIBRARY_PATH
|
||||||
|
export CUDA_PATH=/usr/local/cuda-11.7 # set to your own location
|
||||||
```
|
```
|
||||||
|
|
||||||
2. As CuPBoP relies on CUDA structures, we need to download the CUDA header file
|
2. Build CuPBoP
|
||||||
|
|
||||||
```bash
|
|
||||||
wget https://www.dropbox.com/s/r18io0zu3idke5p/cuda-header.tar.gz?dl=1
|
|
||||||
tar -xzf 'cuda-header.tar.gz?dl=1'
|
|
||||||
cp -r include/* runtime/threadPool/include/
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Other CUDA files are also required for compiling CUDA source code to LLVM IR
|
|
||||||
|
|
||||||
```bash
|
|
||||||
wget https://www.dropbox.com/s/4pckqsjnl920gpn/cuda-10.1.tar.gz?dl=1
|
|
||||||
tar -xzf 'cuda-10.1.tar.gz?dl=1'
|
|
||||||
```
|
|
||||||
|
|
||||||
4. Build CuPBoP
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mkdir build && cd build
|
mkdir build && cd build
|
||||||
cmake .. -DLLVM_CONFIG_PATH=`which llvm-config` # need path to llvm-config
|
#set -DDEBUG=ON for debugging
|
||||||
|
cmake .. \
|
||||||
|
-DLLVM_CONFIG_PATH=`which llvm-config` \
|
||||||
|
-DCUDA_PATH=$CUDA_PATH
|
||||||
make
|
make
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -54,8 +49,8 @@ Supporting the RISC-V GPU [Vortex](https://vortex.cc.gatech.edu/) is working in
|
||||||
cd examples/vecadd
|
cd examples/vecadd
|
||||||
# Compile CUDA source code (both host and kernel) to bitcode files
|
# Compile CUDA source code (both host and kernel) to bitcode files
|
||||||
clang++ -std=c++11 vecadd.cu \
|
clang++ -std=c++11 vecadd.cu \
|
||||||
-I../.. --cuda-path=$CuPBoP_PATH/cuda-10.1 \
|
-I../.. --cuda-path=$CUDA_PATH \
|
||||||
--cuda-gpu-arch=sm_50 -L$CuPBoP_PATH/cuda-10.1/lib64 \
|
--cuda-gpu-arch=sm_50 -L$CUDA_PATH/lib64 \
|
||||||
-lcudart_static -ldl -lrt -pthread -save-temps -v || true
|
-lcudart_static -ldl -lrt -pthread -save-temps -v || true
|
||||||
# Apply compilation transformations on the kernel bitcode file
|
# Apply compilation transformations on the kernel bitcode file
|
||||||
$CuPBoP_PATH/build/compilation/kernelTranslator \
|
$CuPBoP_PATH/build/compilation/kernelTranslator \
|
||||||
|
@ -72,7 +67,7 @@ g++ -o vecadd -fPIC -no-pie \
|
||||||
-L$CuPBoP_PATH/build/runtime \
|
-L$CuPBoP_PATH/build/runtime \
|
||||||
-L$CuPBoP_PATH/build/runtime/threadPool \
|
-L$CuPBoP_PATH/build/runtime/threadPool \
|
||||||
host.o kernel.o \
|
host.o kernel.o \
|
||||||
-I../.. -lpthread -lc -lx86Runtime -lthreadPool
|
-I../.. -lc -lx86Runtime -lthreadPool -lpthread
|
||||||
# Execute
|
# Execute
|
||||||
./vecadd
|
./vecadd
|
||||||
```
|
```
|
||||||
|
|
Loading…
Reference in New Issue