Sunday, April 19, 2009

MBP OSX에서 CUDA 프로그래밍하기

macbook pro의 OS X leopard에서 cuda를 이용해 간단히 개발을 해 볼 수도 있을 것 같아서 이것 저것 만지작거려보고 있는데, 아무래도 널럴한 환경에서 하는 것에 비해서는 어려운 점이 많다.

계속 windows/VS2005위에서 8800GTX라는 꽤나 powerful한 환경에서 개발하다가, osx 상에서 mbp에 달린 GT mobile위에서 하려니 조금 답답하긴 하다. 일단 IDE가 익숙하지 않기 때문이기도 하지만, 어짜피 VS2005에서도 cuda알고리즘에 대해서는 디버거를 쓰지 않고 작업했기 때문에 그 문제는 그리 크지는 않다. eclipse CDT도 약간 편한 면도 있고.

가장 큰 문제가 되는 것은 역시 메모리 문제와 profiler 문제. 구형 mbp이다보니 비디오 메모리가 128mb라서 그런지 조금만 하다보면 "out of memory"가 뜨면서 작업이 안된다. 사실 쓰고 있는 메모리를 계산해보면 그리 크지않고 몇 번이고 계속 실행도 되지만 이것저것하다보면 안된다는 게 참 이상했다. 리부팅을 해 주고 하면 또 잘 되다가 좀 지나면 안되는 것을 보면서 osx의 문제가 아닌가 싶기도 했고.

이런 저런 테스트 결과 문제는 osx의 expose와 space기능에 있는 것 같다. expose가 비디오 메모리를 cache용으로 사용하는 것 같은데 이 때문에 대부분의 메모리를 사용하고, 메모리를 잡으려하면 문제가 되는 것 같다. 그래서 리부팅후에 바로 하면 잘 되면서 expose를 몇 번 사용하고 나면 "out of memory"에러가 나는 듯.

매번 리부팅을 하는 것이 너무 귀찮기 때문에 expose를 끌수는 없나 어떻게 할까 고민하다가 생각난 방법. cache가 문제라면 cache를 비워주면 되지 않을까 싶어서 방법을 따져보니, 디스플레이 설정을 다시 하면 될 것 같았다.


"System Preference"에서 Display설정을 선택하면 위의 윈도우가 뜨는데, 간단히 Color를 Thousand로 한 번 바꿔주고, 다시 Millions로 바꿔주어도 cache가 비는지 cuda out of memory문제가 리부팅 없이 해결된다. 물론 다시 expose를 쓰게 되면 같은 문제가 생기므로 다시 하든지 아니면 command+tab으로 작업전환을 하자.

Profiler는 cuda download page에서 다운 받아서 실행시켜보니 "unable to load libraries"문제가 생겼다. 이 문제는 나만 겪는 것은 아닌지, cuda forum에 다음과 같이 해결방법이 나와있다.
http://forums.nvidia.com/index.php?showtopic=84628&pid=479992&mode=threaded&start=#entry479992
Xcode가 깔려있으면 Property Editor를 쓸 수 있다. /.MacOSX 디렉토리가 보이지 않으면 만들어서 해야 한다. 다음 링크를 참고
http://developer.apple.com/qa/qa2001/qa1067.html
http://mactip.blogspot.com/2004/04/setting-environment-variables.html
spotlight으로 검색해서 실행하면 안돌아가는 문제가 있다고 하는데, quicksilver에서는 전혀 문제없이 돌아가므로 큰 문제는 아닌 듯.