엊그제 CUDA 9.2가 릴리즈되었다는 메일을 받고 새로 설치를 해봤습니다. CUDA Toolkit은 아래 링크에서 다운로드 받을 수 있구요..

https://developer.nvidia.com/cuda-downloads


새로 릴리즈된 CUDA 9.2는 최신 Visual Studio 2017을 잘 지원하는지가 궁금했는데요..

일단 c:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include\crt\host_config.h 파일을 열어서 _MSC_VER 값에 대한 설정을 봤더니 아래처럼 되어 있습니다.


즉, _MSC_VER 값이 1912까지만 지원을 한다는 건데요, 이전에 CUDA 9.1에서는 1910까지만 지원을 했었는데 버전 번호가 조금 늘기는 했지만, 음...


일단 _MSC_VER와 Visual Studio 제품명 또는 실제 버전 번호와의 관계를 보시죠. (출처: https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B)


MS에서 Visual Studio 2017에서는 유별나게 마이너 버전 업그레이드에서 _MSC_VER 값을 변경을 해놔서, 가장 최근의 Visual Studio 2017 15.7 버전의 경우 _MSC_VER 값이 1914입니다. 그렇다는 것은 CUDA 9.2는 최신 버전의 Visual Studio 2017에서는 제대로 동작하지 않을 가능성이 있다는 거구요... 그래서 강제로 host_config.h 파일을 편집해서 아래와 같이 바꾸고,


nVidia에서 제공하는 CUDA 예제 프로젝트를 실행해봤는데요, 어라? 잘 됩니다. :-)


자, 그래서 이번에는 OpenCV 소스 코드를 Visual Studio 2017에서 CUDA를 활성화하여 빌드하는 작업을 해봤습니다. 일단 기본적인 방법으로 CMake 프로그램을 사용하여 OpenCV 프로젝트를 생성하면 빌드가 잘 되지 않습니다. 아마도 CUDA 9.2의 문제가 아니라 Visual Studio 2017 최신 버전의 셋팅 문제라고 생각되는데요.. 결론을 말씀드리면 CMake-gui 화면에서 아래와 같이 CUDA_HOST_COMPILER 값을 수정하시면 됩니다.

CUDA_HOST_COMPILER: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx64/x64/cl.exe


이에 대한 좀 더 자세한 내용은 아래 내용을 펼쳐서 보세요.


이렇게 수정하여 CUDA를 설정한 상태에서 OpenCV를 빌드하면 역시나 몇시간의 시간이 소요됩니다. 그래도 실패 없이 잘 빌드가 되는 것을 확인했습니다. ^^


세 줄 요약:

1. host_config.h 파일에서 _MSC_VER 허용 범위를 수정.

2. CMake에서 CUDA_HOST_COMPILER 값을 수정.

3. 빌드.


Posted by kkokkal
: