2080 RTX 장비를 가지고 CUDA + TORCH를 설치하다보면 GPU 아키텍쳐가 바뀌어서 CUDA 9 이상을 설치 하라는 에러 메세지가 나타난다. 이런 경우 물론 CUDA 9이나 10 을 설치하고 TORCH를 설치 하면 되는데, 지난번에 CUDA 9 + TORCH 설치 방법을 정리 했으니, 이번에는 CUDA 10 + TORCH 설치 방법을 정리하려고 합니다.
CUDA 10+ TORCH 설치 방법
(참고: https://github.com/torch/cutorch/issues/834)
CUDA 10 + TORCH 는 CUDA 9 + TORCH 보다는 조금 복잡합니다.
CUDA10 의 TORCH 설치는 아래와 같은 2가지 이슈가 존재한다고 합니다.
- cmake/3.6/Modules/FindCUDA.cmake is outdated.
- atomicAdd(__half *address, __half val) is defined in /usr/local/cuda/include/cuda_fp16.h(duplicated).
이 문제를 해결 하기 위해서 아래의 6단계의 작업을 진행하게 됩니다.
1) cmake 를 새로 설치
2) torch 에 포함된 FindCUDA 삭제
3) cutorch 패치
4) install.sh 패치
5) cudnn v7 지원 되는 cuDNN 설치
6) torch 설치
1) cmake 설치
sudo apt purge cmake
git clone https://github.com/Kitware/CMake.git
cd CMake
./bootstrap; make; sudo make install
2) torch 에 포함된 FindCUDA 삭제
cd ~/torch
rm -fr cmake/3.6/Modules/FindCUDA*
3) cutorch패치
보통 3) 의 atomic 패치만 진행 하여도 CUDA 10 + TORCH 설치가 잘 되는 경우도 있지만, 이것많으로 안되는 경우도 있으므로 3) 까지 진행하고 6) 의 설치 단계를 진행해보는 것도 좋습니다.
3–1) torch 의 atomic 패치 파일을 아래와 같이 생성합니다.
cd ~/torch/extra/cutorch/
vi atomic.patch
3–2) atomic.patch 파일에 입력할 atomic.patch 코드는 아래와 같습니다.
diff --git a/lib/THC/THCAtomics.cuh b/lib/THC/THCAtomics.cuh
index 400875c..ccb7a1c 100644
--- a/lib/THC/THCAtomics.cuh
+++ b/lib/THC/THCAtomics.cuh
@@ -94,6 +94,7 @@ static inline __device__ void atomicAdd(long *address, long val) {
}
#ifdef CUDA_HALF_TENSOR
+#if !(__CUDA_ARCH__ >= 700 || !defined(__CUDA_ARCH__) )
static inline __device__ void atomicAdd(half *address, half val) {
unsigned int * address_as_ui =
(unsigned int *) ((char *)address - ((size_t)address & 2));
@@ -117,6 +118,7 @@ static inline __device__ void atomicAdd(half *address, half val) {
} while (assumed != old);
}
#endif
+#endif
3–3) atomic.patch 패치 실행
patch -p1 < atomic.patch
4) install.sh 패치
4) 의 install 패치를 하지 않아도 설치가 되는 경우도 있습니다. 안되는 경우도 있으므로 4) 까지 진행하고 5) 의 설치 단계를 진행하는게 좋습니다.
4–1) torch 의 install 패치 파일을 아래와 같이 생성합니다.
cd ~/torch/
vi install.patch
4–2) install.patch 파일에 입력할 install.patch 파일 내용을 아래와 같습니다.
diff --git a/install.sh b/install.sh
index ad65434..65a0163 100755
--- a/install.sh
+++ b/install.sh
@@ -99,9 +99,6 @@ fi
if [ -x "$path_to_nvcc" ] || [ -x "$path_to_nvidiasmi" ]
then
echo "Found CUDA on your machine. Installing CMake 3.6 modules to get up-to-date FindCUDA"
- cd ${THIS_DIR}/cmake/3.6 && \
-(cmake -E make_directory build && cd build && cmake .. -DCMAKE_INSTALL_PREFIX="${PREFIX}" \
- && make install) && echo "FindCuda bits of CMake 3.6 installed" || exit 1
fi
4–3) install.patch 패치 실행
patch -p1 < install.patch
5) torch 설치
cd ~/torch ./clean.sh
export TORCH_NVCC_FLAGS="-D__CUDA_NO_HALF_OPERATORS__"
./install.sh
6) cudnn v7 지원 되는 cuDNN 설치
cuDNN.torch의 마스터 브랜치는 cuDNN v7을 지원하지 않으니, R7 브랜치를 설치하면 됩니다.
git clone https://github.com/soumith/cudnn.torch.git -b R7
cd cudnn.torch
luarocks make cudnn-scm-1.rockspec
여기까지 진행하면 아래와 같이 CUDA 10 + TORCH 가 깔끔하게 설치가 됩니다.
'개발' 카테고리의 다른 글
nltk PunktSentenceTokenizer Sentence Tokeninzer - Custom Sentence Tokenizer (0) | 2020.06.04 |
---|---|
OFFICE WORD, EXCEL… ADDIN + InstallShield, Setup File Make (0) | 2020.06.04 |
UBUNTU 에서 Unable to find the requested Boost libraries, Could NOT find GTest 에러 해결 방법 (0) | 2020.06.04 |
CUDNN 설치 방법 (0) | 2020.06.03 |
Ubuntu Locale변경 (0) | 2020.06.03 |