[TensorFlow] nvcc error : 'cudafe++' died with status 0xC0000005 (ACCESS_VIOLATION)
nvcc error : 'cudafe++' died with status 0xC0000005 (ACCESS_VIOLATION)
TensorFlow 1.14 를 Bazel 로 소스 빌드 시
Visual C++ Build Tools 2015 이 설치되지 않았거나 or CUDA 10.0 의 버그로 인하여 생길 수 있는 에러이다.
설치되지 않았다면 해결법 1을, 설치되었다면 해결법 2를 참조 바람
해결법 1 :
VS2015 뿐만 아니라 아래 두 가지가 모두 설치되어있는지 확인 해야한다.
- Microsoft Visual C++ 2015 재배포 가능 업데이트 3
- Microsoft Build Tools 2015 업데이트 3
Visaul C++ Build Tools 2015 다운로드 :
해결법 2 : CUDA 10.1 의 cudafe++.exe 파일로 기존 CUDA 10.0 의 파일 대체
1. 기존 cudafe++.exe 파일 이름 변경
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin\cudafe++.exe cudafe++.exe.v10.0
2. CUDA 10.1 을 다운로드
3. cudafe++.exe 대체
다운로드하고 알집이나 반디집으로 실행파일을 열어보면
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin\cudafe++.exe cudafe++.exe.v10.0
nvcc\bin\cudafe++.exe 의 파일을
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin\cudafe++.exe 으로 복사한다.
4. bazel 의 WORKSPACE 내용 변경
edit WORKSPACE
Under the line near the top that reads "load("@bazel_tools...." ADD:
http_archive(
name = "io_bazel_rules_docker",
sha256 = "aed1c249d4ec8f703edddf35cbe9dfaca0b5f5ea6e4cd9e83e99f3b0d1136c3d",
strip_prefix = "rules_docker-0.7.0",
urls = ["https://github.com/bazelbuild/rules_docker/archive/v0.7.0.tar.gz"],
)
5. 기타 설정
-
Avoid the cudart64_.dll not found error
Create a copy of:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin\cudart64_100.dll as cudart64_.dll in the same folder
i.e. I kept both the original file and the renamed file in the same folder. -
Avoid the cudnn64_.dll not found error
Create a copy of:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin\cudnn64_100.dll as cudnn64_.dll in the same folder
더 자세한 참고는 https://github.com/tensorflow/tensorflow/issues/27576
참고자료 1 :
https://www.tensorflow.org/install/source_windows#install_visual_c_build_tools_2015
참고자료 2 :
https://github.com/tensorflow/tensorflow/issues/27706