Skip to content

Instantly share code, notes, and snippets.

@meisa233
Last active June 12, 2023 02:56
Show Gist options
  • Save meisa233/a06d56cfa292d12768a4e42a0be0434d to your computer and use it in GitHub Desktop.
Save meisa233/a06d56cfa292d12768a4e42a0be0434d to your computer and use it in GitHub Desktop.
Compile Pytorch 1.4.0 with CUDA 11

SOME FEATURES NOT AVAILABLE.
Python version:3.8.10

  1. Install Requirements
sudo apt-get install python3-dev python3-pip python3-setuptools \
                     build-essential cmake libatlas-base-dev \
                     libavcodec-dev libavformat-dev libavutil-dev \
                     libswscale-dev libjpeg-dev libpng-dev libtiff-dev \
                     libv4l-dev libxvidcore-dev libx264-dev \
                     libopenblas-dev liblapack-dev libhdf5-dev \
                     libprotobuf-dev protobuf-compiler libgflags-dev \
                     libgoogle-glog-dev liblmdb-dev libsnappy-dev \
                     libiomp-dev
  1. Clone github repo
git clone --recursive https://github.com/pytorch/pytorch
git checkout v1.4.0
git submodule sync
git submodule update --init --recursive

Modify cuda.make(/the/path/to/Pytorch/cmake/public/cuda.make)


line 150
  file(READ ${CUDNN_INCLUDE_PATH}/cudnn.h CUDNN_HEADER_CONTENTS)

Replace it to

	if(EXISTS ${CUDNN_INCLUDE_PATH}/cudnn_version.h)
    file(READ ${CUDNN_INCLUDE_PATH}/cudnn_version.h CUDNN_HEADER_CONTENTS)
  else()
    file(READ ${CUDNN_INCLUDE_PATH}/cudnn.h CUDNN_HEADER_CONTENTS)
  endif()

Modify CMakeLists.txt(/the/path/to/Pytorch/third_party/QNNPACK/deps/clog/CMakeLists.txt)

line 66
	TARGET_INCLUDE_DIRECTORIES(clog BEFORE PUBLIC include)	

Replace it to
	TARGET_INCLUDE_DIRECTORIES(clog PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
  
After line 74
ENDIF()

add
	add_library(cpuinfo::clog ALIAS clog)

After line 75
INSTALL(TARGETS clog

add
  EXPORT cpuinfo-targets

Modify SparseCUDABlas.cu(/the/path/to/Pytorch/aten/src/ATen/native/sparse/cuda/SparseCUDABlas.cu)

line 118
TORCH_CUDASPARSE_CHECK(cusparseScsrmm2(handle, opa, opb, i_m, i_n, i_k, i_nnz, &alpha, desc, csrvala, csrrowptra, csrcolinda, b, i_ldb, &beta, c, i_ldc));

Comment it

line 141
TORCH_CUDASPARSE_CHECK(cusparseDcsrmm2(handle, opa, opb, i_m, i_n, i_k, i_nnz, &alpha, desc, csrvala, csrrowptra, csrcolinda, b, i_ldb, &beta, c, i_ldc));

Comment it
  1. build
cd pytorch(include setup.py)
export CMAKE_PREFIX_PATH=${PWD}/libtorch
env BUILD_CAFFE2_OPS=0 python setup.py build develop
python setup.py install

Note: Your path to pytorch can't include Chinese characters or spaces!
If something wrong, please input

python setup.py clean
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment