'VC'에 해당되는 글 2건

  1. 2011.07.26 Visual C++에서 name mangling
  2. 2009.10.26 VC에서 cu 파일 컴파일 하기(CUDA)
http://hopeis.tistory.com/123
http://blog.naver.com/muggae/50010211722

VC로 DLL 만드는 경우에 def를 사용하지 않고 extern을 사용하는 경우에 VB에서 호출이 안된다.
이런 문제가 발생하는 이유는 볼랜드의 경우에 stdcall 호출 타입인 경우에는 extern "C"를 하면 함수 이름 그대로 export가 되지만, VC의 경우에 extern "C"를 하여도 prefix와 postfix가 붙게 되어 함수 이름이 변경되어 export 된다.
볼랜드 계열만 사용하다 VC에서는 왜 제대로 안되나 싶었는데 아래 자료를 읽어보니 명확해졌다.

# function_name_with_extern_c.png from Calling conventions for different C++ compilers and operating systems

Posted by Gu Youn
,
CUDA Toolkit에 포함된 Monte Carlo 예제의 속도를 보고 프라이싱 모듈 만드는데 사용하면 좋겠다는 생각이 들어서, 시간 날때마다 조금씩이라도 자료를 정리해서 올릴 생각이다.

# 이 글에서는 VC를 개발환경으로 사용한다.
VC에서 빈 프로젝트를 만들고, cu파일에 대해서는 Custom Build로 nvcc를 사용하도록 설정하는 방법에 대해서 설명한다.

# CUDA SDK 설치되었다고 가정한다.

1. VC에서 empty project를 생성한다. 


2. NVIDIA 사이트에서 연습 파일을 다운 받아 압축을 푼다.
본 문서에서는 비주얼 스투디오 연습 (윈도우)를 사용한다.



3. \myFirstKernel\solution의 myFirstKernel.cu 파일을 위에서 생성한 프로젝트 폴더에 복사한다.


4. 프로젝트에 myFirstKernel.cu 파일을 추가한다.


( 5. Matching Custom Build Rule Not Found 다이얼로그에서 No를 클릭한다. )

6. custom build 설정을 위해 solution explorer에 등록된 myFirstKernel.cu를 선택하고 properties를 클릭한다.


7. Custom Build 설정을 위하여 general 항목의 Command Line에 다음 내용을 입력한다. 
- Debug
"$(CUDA_BIN_PATH)\nvcc.exe" -ccbin "$(VCInstallDir)bin" -c -D_DEBUG -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler /EHsc,/W3,/nologo,/Wp64,/Od,/Zi,/RTC1,/MTd -I"$(CUDA_INC_PATH)" -I./ -I../../common/inc -o $(ConfigurationName)\$(InputName).obj $(InputFileName)

- EmuDebug
"$(CUDA_BIN_PATH)\nvcc.exe" -ccbin "$(VCInstallDir)bin" -deviceemu -c -D_DEBUG -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler /EHsc,/W3,/nologo,/Wp64,/Od,/Zi,/RTC1,/MTd -I"$(CUDA_INC_PATH)" -I./ -I../../common/inc -o $(ConfigurationName)\$(InputName).obj $(InputFileName)

- EmuRelease
"$(CUDA_BIN_PATH)\nvcc.exe" -ccbin "$(VCInstallDir)bin" -deviceemu -c -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler /EHsc,/W3,/nologo,/Wp64,/O2,/Zi,/MT -I"$(CUDA_INC_PATH)" -I./ -I../../common/inc -o $(ConfigurationName)\$(InputName).obj $(InputFileName)

- Release
"$(CUDA_BIN_PATH)\nvcc.exe" -ccbin "$(VCInstallDir)bin" -c -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler /EHsc,/W3,/nologo,/Wp64,/O2,/Zi,/MT -I"$(CUDA_INC_PATH)" -I./ -I../../common/inc -o $(ConfigurationName)\$(InputName).obj $(InputFileName)



8. 프로젝트의 속성을 다음처럼 수정한다.
- Additional Library Directories에 $(CUDA_LIB_PATH)를 입력한다.
- Additional Dependencies에 cudart.lib를 입력한다.
EmuDebug, EmuRelease의 경우에 프로젝트 속성을 더 수정하여야 하는데 그에 관한 것은 그것은 추후 작성 예정

PS: 위에 나온 대로 했는데 컴파일이 안된다면, Exercise에 포함된 프로젝트를 열어서 프로젝트 속성을 비교하면서 수정하면 될것이다.





9. F7를 눌러 Builde를 하고, ctrl + F5를 눌러 실행하여, 다음 화면처럼 나오면 성공이다.


'Computer > CUDA' 카테고리의 다른 글

CUDA Basic #1  (0) 2009.11.18
Posted by Gu Youn
,