Tuesday, May 13, 2008

MacBook Pro bootcamp에서 cuda 구동 설정

CUDA + openCV 응용프로그램 구동 with Macbook Pro Bootcamp


프로그램 개발은 Windows XP에서 하면서 노트북은 Macbook을 갖고 있는데, CUDA를 이용한 application을 만들려다보니 아주 이상한 상황에 놓였다.

문제는 연구실에서 사용하는 Windows Machine에 CUDA-enabled GPU가 없다는 것으로부터 출발.

개발이야 Emulation mode로 하면 된다 치지만, 실제로 속도를 테스트 하기 위해서는 GPU가 필요하다.

(최소한 GeForce 8시리즈 이상이 필요)

마침 가지고 있는 노트북에 CUDA-enabled GPU인 Geforce 8600M이 달려있으므로

(사실 이것 때문에 생돈들여가며 Pro를 구입하기도 했지만...)

부족하나마 구동을 시켜볼수 있으리라 생각했다.

하지만 다른 문제가 있었으니, 노트북에는 Visual Studio 2005가 깔려있지 않다는 것.

CUDA는 Visual C++ 6.0을 지원하지 않는다 T.T;;

일단 실행파일만 이라도 돌려보기로 함.


다음과 같은 시행착오를 거침.

1. 일단 개발한 Windows Machine에서 Release Mode로 컴파일하여 실행 파일을 확보

2. Bootcamp를 이용해 Window native로 Macbook Pro를 부팅

3. 응용프로그램을 돌려봄; 그러나 잘못된 설정이라는 메시지만 뜨면서 중지됨.

이 문제는 Visual Studio 2005로 만들어진 응용프로그램이 필요로하는 dll등이 없기 때문이었다.

4. 이를 해결하기 위해 다음 링크에서 Redistributable Package를 설치.

Microsoft Visual C++ 2005 Redistributable Package (x86)

5. 다시 응용프로그램 구동 시도; 그러나 이번에는 OpenCV가 문제를 일으킴

이 문제는 OpenCV가 제대로 깔려있지 않았기 때문에 발생.

6. OpenCV를 재설치; 다음 링크에서 다운로드

http://sourceforge.net/projects/opencvlibrary/


7. 다시 응용프로그램을 구동시도; 그러나 이번에는 CUDA가 문제를 일으킴

CUDA 지원 GPU가 없다는 메시지를 날리며 사망함.

8. CUDA 1.1 Toolkit을 설치

9. 다시 시도; 역시 같은 문제 발생.

nVidia CUDA 포럼 에선 이미 이런 문제를 보고하는 사용자가 상당히 많으며 해결책도 중구난방으로 많다.

요약해보면, 그래픽카드 드라이버를 재설치하되 안에 들어있는 설치정보 파일인 inf파일을 수정해야 한다는 것.

10. http://www.laptopvideo2go.com 에서 드라이버와 modified inf를 다운로드 받아 설치후 재시동.

그러나 역시 같은 문제가 발생.

11. 짜증이 났지만 다시 nVidia 포럼을 뒤적이다 다음 포스트를 발견...

http://forums.nvidia.com/index.php?showtopic=51622&pid=281975&mode=threaded&show=&st=&#entry281975


Did you add

nvcuda.dll = 1 at the end of SourceDisksFiles section

and

nvcuda.dll at the end of nv.display section of the inf file?


즉 설치정보 inf 파일을 다음과 같이 수정해야 한다.
1) "nvcuda.dll = 1" 을 SourceDiskFile 항목에 추가
2) "nvcuda.dll" 을 nv.display 항목에 추가
3) 바뀐 설치정보로 드라이버 재설치, 리부팅

12. 응용프로그램이 드디어 구동되었다.

근데... 성능이 역시 GeForce 8800 Ultra에서 한 것 과는 차이가 크네.

CPU도 거의 같은 속도로 느려져서 성능향상비는 x10정도로 비슷하기는 한데...

그리고 그때그때 다른 결과를 내준다. 아마 그래픽카드에서 하고 있는 일에 따라 다른 결과가 나오는듯.

좀더 분석해볼 필요가 있을듯.

No comments: