환경구축
홈 > CUDA > 환경구축 > Windows

Windows

Windows

윈도우즈 환경 설정법

1. CUDA Driver, Toolkit, SDK 설치
- 먼저, CUDA 지원가능한 G80계열 이상의 그래픽카드가 필요합니다.
CUDA가능 하드웨어 정보는 시스템 정보를 확인하시기 바랍니다.
G80이상 그래픽카드가 없는 경우 Emulation 모드에서 테스트 가능합니다.

[인텔 그래픽 칩셋 노트북 등에서 사용할 경우 driver만 깔지 않고 toolkit, SDK만 설치하면 됩니다.]

2. Visual Studio 환경 설정
- 윈도우즈 환경에서의 CUDA개발은 기본적으로 Visual Studio 환경에서 이루어집니다.
CUDA는 .cu 확장자를 가지고 있고, C/C++ 표준이외의 추가적인 명령이 있기 때문에 NVCC 컴파일러를 사용해야 합니다. 이를 Visual Studio에 설정해주기 위해서
다음의 설정이 필요합니다.
Visual Studio 주소 : http://www.microsoft.com/express/vc/Default.aspx


3. VisualStudio에 .cu, .cuh 확장자 등록
CUDA는 표준 C/C++ 명령에 몇몇 명령이 추가되었으므로, cu파일의 색상은 C/C++을 따르도록 하는 것이 좋습니다.
화면캡쳐한 첨부파일을 참고합니다.

4 . Visual Studio에 CUDA Extension Syntax 등록
3에서 설정한 하이라이트 기능으로는 CUDA 확장명령에 대한 생상지원을 하지 못합니다.
이를 위해 CUDA SDK의 doc 디렉토리에서 제공하는 usertype.dat 파일을 VS 2005/2008의 루트 root에 복사해주면 blockIdx 등의 새로운 변수와 _global__ 등의 CUDA 확장 명령에 대해서도 하이라이트를 잡아줄 수 있습니다.


5. 빈 프로젝트 형성

빈 프로젝트의 형성은 C/C++ 프로젝트 형성과 동일합니다.
최초 연습시는 Wind console empty 프로젝트로 테스트해보실 것을 권장합니다.
특히, 소스파일에 .cu의 확장자를 갖는 소스를 넣어줘야 합니다.

6. Cuda Rule 적용
2에서 말씀드렸듯이, CUDA 소스코드는 cu확장자로 되어있고, 이를 NVCC 컴파일러로 컴파일해줘야 합니다.
그런데, 이러한 정보는 표준 Visual Studio에 내장되어 있지 않기 때문에 추가적인 설정을 해주어야 합니다. 이때, CUDA SDK에서 제공하는 cuda rules 파일을 활용하면 매우 편리합니다.

6-1 솔루션 정보에서 [사용자 정의 빌드 / Custome Build Rules]를 선택
6-2 [Finding Exist]선택
6-3 CUDA SDK 디렉토리의 common 디렉토리 찾아감
6-4 cuda.rules 파일을 선택함
6-2 부터 6-4까지는 1번만 등록하면 됩니다.
6.5. cuda rule을 체크 후 [확인]을 누름

7. Compile 체크
프로젝트에서 마우스 오른쪽 키를 누르면 컴파일 메뉴 활성화되어 있는 것을 확인할 수 있습니다.

8. Linker 체크
NVCC 컴파일러를 사용하는 경우 굳이 header filer로 "cuda.h"나 "cudart.h" 등은 등록할 필요가 없습니다. 이미 내장되어 있기 때문입니다.
하지만, 라이브러리의 링크는 표준 C/C++을 사용하기 때문에 꼭 추가 종속성 디렉토리 설정 및 라이브러리 등록 해줘야 합니다.

아래 그림에서 c:\CUDA가 아닌 c:\CUDA\lib 디렉토리를 등록해 줘야 합니다. (오타)

CUDA toolkit이 설치된 디렉토리의 lib 디렉토리에서 runtime library를 등록하고 필요에 따라 SDK가 설치된 디렉토리에서 utility library를 등록해줘야 합니다.
cudart.lib cutil32.lib 등록해주면 됩니다.

9. 빌드
이제 모든 세팅은 끝났습니다. 이제 CUDA 개발을 하시면 됩니다.

예제코드는 CUDA SDK 혹은 미루웨어 홈페이지의 CUDA 기초 프로그래밍 예제를 참고하시면 됩니다.

다음은 NVIDIA에서 교육을 맡고 있는 유현곤님께서 KCUG에 올리신 실습 동영상입니다.

설명글을 모두 읽으신 후 어떻게 진행되는지 동영상으로 확인 하실 수 있습니다.

[전체화면 보기를 통해 살펴보시기 바랍니다.]

부록1. RDP

윈도우즈 환경에서 RDP(remote desktop)을 사용할 경우 CUDA device를 인식하지 못하게 됩니다.
이를 해결하는 방법은 크게 4가지가 있습니다.

1)KVM을 이용한 원격접속 : 각 노트당 KVM을 연결해야 하므로 비용이 듭니다.
2)VNC를 이용한 접속 : 유료버전도 있지만, 무료버전이 존재합니다. : tightVNC 추천 : 사용법이 편함
-> http://www.tightvnc.com 에서 다운로드
3) Windows HPC2008에서 session0를 session1로 조정한 scheduler사용 remotely CUDA application launch 가능 [자세한 내용은 Tesla Cluster 구축 메뉴의 Win HPC 2008을 참고하시기 바랍니다.]
4) .NET, 등에서 socket통신으로 작성하면 됩니다.

부록2. Tesla 시스템과 Windows

Tesla 시스템의 경우 그래픽출력포트가 없는 계산전용 그래픽카드입니다.

그런데, 이런 이유때문에 그래픽 출력포트가 있는 CUDA 지원 그래픽카드가 하나더 있어야 합니다.

FAQ를 확인하시면 Windows7에서 바뀐 점을 확인하실 수 있습니다. WDDM 1.1 드라이버의 변경에 따라 Windows 7에서는 CUDA 지원 그래픽카드가 아닌 출력용 그래픽카드를 설치할 경우에도 리눅스 환경과 같이 CUDA application을 실행시킬 수 있습니다.

부록3. Windows 64bit 환경에서의 컴파일

종종 윈도우즈 환경에서 64비트 OS에서 CUDA 컴파일이 잘 안된다는 문의가 들어오고 있습니다. 관련내용을 정리해 드립니다.

먼저, 64bit OS에 Visual Studio를 설치할 때 x64 컴파일 옵션을 추가하셔야 합니다. 기본 설치로 Visual Studio를 설치하는 경우 x64관련 컴파일러를 설치하지 않는 경우가 있습니다.

두번째로, CUDA에서의 dll이슈인데, 64bit SDK에서 cutil32.dll cutil32D.dll이 포함되지 않아 컴파일 오류가 발생하는 것을 확인하실 수 있습니다. 이에대한 해결책으로는 32bit SDK를 설치하신 후 SDK의 bin 디렉토리 하위의 debug, release 디렉토리 등에서 관련 dll 을 복사하셨다가 64bit SDK를 설치하신 디렉토리에 복사하셔야 합니다.

위의 두가지 사항을 체크하시면 크로스 컴파일 환경에서도 CUDA를 사용하실 수 있습니다. 또한, 크로스 컴파일은 CUDA SDK 2.3 이상에서부터 사용하시길 권장해 드립니다.