[카테고리:] 이전 블로그

태터툴즈, 블로거닷컴, VCL WordPress 등지에서 내보낸 블로그 글들.

  • CUDA를 위한 Visual Studio Template 변경

    Visual Studio 2010 Templates Window
    "Add.." 메뉴를 선택하면 다음과 같이 미리 정해진 파일을 프로젝트에 삽입할 수 있다.

    위 그림처럼 CUDA의 ‘.cu’, ‘.cuh’ 확장자를 가진 파일도 비주얼 스튜디오의 “Add New Item” 다이얼로그 박스를 통해 추가시키는 방법을 기록한다.

    “Add New Item” 메뉴를 클릭하면 나오는 메뉴 설정은 (C++의 경우) 다음과 같이 세팅한다.

    1. “C:Program Files (x86)Microsoft Visual Studio 10.0VCvcprojectitems” 디렉토리로 가서
    2. newc++file.cpp‘ 파일과 ‘hfile.h‘ 두 파일을 찾아 복사한 후 각각 ‘NewCUDAFile.cu‘, ‘CUDAHFile.cuh‘로 변경한다.변경한 확장자를 가진 파일을 열 때마다 사용할 수 있도록 각 파일에 임의의 코드를 적어 넣을 수도 있다. 관리자 권한이 필요하다.
    3. VCProjectItems.vsdir‘ 디렉토리를 열어 다음 두 줄을 추가한다.
      NewCUDAFile.cu|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|CUDA Source File (.cu)|11|Creates a file contaning CUDA C source code|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|9031|4096|CUDA_C
      CUDAHFile.cuh|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|CUDA Header File (.cuh)|16|Create a CUDA C header file|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|9030|4096|CUDA_HEADER
    4. 현재 디렉토리 아래의 ‘Code‘ 디렉토리의 ‘code.vsdir‘를 열어 다음 두 줄을 추가한다.
      ..NewCUDAFile.cu|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|CUDA Source File (.cu)|17|Creates a file contaning CUDA C source code|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|9031|4096|CUDA_C
      ..CUDAHFile.cuh|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|CUDA Header File (.cuh)|18|Create a CUDA C header file|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|9030|4096|CUDA_HEADER
    5. Visual Stuio 2010을 다시 실행한 후, “Add New Item”을 클릭해서 나오는 다이얼로그(Visual C++ 항목 및 Code 항목)에 “CUDA Source File’과 “CUDA Header File” 메뉴가 추가된 것을 확인할 수 있다.

    참고 자료: Template Directory Description (.Vsdir) Files

     

    덧)

    • clsid 항목에 대한 이해가 부족해 cu, cuh 파일에 대한 아이콘까지는 변경하기 어려웠다.
    • 또한 #ResId는 MFC의 리소스아이디와 같은 개념으로 생각하지만, 이 실제 문자열은 어디에 존재하는지 현재로서는 알 길이 없다.
    • cu, cuh의 위치를 조정하기 위해서는 SortPriority 항목을 변경하면 된다.
    • 약간 불충분하지만 이 정도로도 CUDA 파일 추가할 때 일일이 확장자를 쳐 주지 않아도 되어 편리하다.

     

  • CUDA 초기 세팅 (Ver 4.1 기준)

    [패키지 설치]

    보통 CUDA를 설치하면 아래 세 가지 패키지를 설치하게 된다.

    • CUDA Developer Driver: CUDA 개발을 위한 드라이버.
    • CUDA Toolkit: nvcc, 디버거, 프로파일러 등이 있는 CUDA 개발을 위한 패키지.
    • GPU Computing SDK: 샘플 코드들

    패키지를 설치하면 다음과 같은 전역 환경 변수가 정의된다.

    • CUDA_BIN_PATH
    • CUDA_INC_PATH
    • CUDA_LIB_PATH
    • CUDA_PATH
    • CUDA_PATH_V4_1

    그리고 다음 환경 변수가 업데이트된다.

    • Path

     

    [Visual Studio 2010 세팅]

    설치 OS 는 Windows 7 64bit를 대상으로 하고, CUDA 프로그래밍 세팅은 32bit 환경으로 한다.

    CUDA Extension 세팅

    1. 프로젝트에 cu, cuh 파일 인식: Tools – Options – VC++ Project Settings – Extensions To Include에 “;.cu;.cuh” 추가
    2. Tools – Options – Text Editor – File Extension에 cu, cuh extension 추가. 이 때 “Editor”는 “Microsoft Visual C++”를 선택한다.

     

    Syntax Highlighting

    1. CUDA SDK를 설치한 디렉토리의 .Cdocsyntax_highlightingvisual_studio_8usertype.dat 를 연다.
    2. C:Program FilesMicrosoft Visual Studio 10.0Common7IDEusertype.dat(관리자 권한 필요)를 연다.
    3. “…visual_studio_8usertype.dat”의 설정값을 “…IDEusertype.dat” 항목에서 복사해 넣고 저장한다.

     

    [추가: Visual Assist X 설정]

    1. 비주얼 스튜디오를 끄고 레지스트리 편집기를 켠다.
    2. 64비트는 HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftVisualStudio10.0LanguagesFile Extensions.cpp
      32비트는 HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio10.0LanguagesFile Extensions.cpp
      을 복사하여 .cu 항목을 만든다.
    3. 위 항목과 마찬가지로 .h 항목을 복사하여 .cuh 항목을 만든다.
    4. HKEY_CURRENT_USERSoftwareWhole TomatoVisual Assist XVANet10ExtHeader에 헤더인 “.cuh;” 를 넣어 준다.
      HKEY_CURRENT_USERSoftwareWhole TomatoVisual Assist XVANet10ExtSource에 “.cu;”를 넣어 준다.
    5. Visual Assist X 옵션의 “Performance” 에서 “Rebuild”를 눌러 주고 IDE를 다시 시작한다.

     

    출처:

     

  • Visual Studio의 CUDA Project 설정하기

    초기 세팅에 관한 포스트는 CUDA 초기 세팅 (Ver 4.1 기준)에서 다루었다. 이번에는 Visual Studio 10의 설정에서 CUDA를 설정, 컴파일하는 과정을 기록한다.

    [Visual Studio Project 생성 예제]

    CUDA 4.1이 정상적으로 설치되었다고 가정하고, 프로젝트를 생성한다.

    1. 프로젝트는 Win32 Console Application (Visual C++)로 하고 ‘Empty project’에서 시작한다.
    2. 파일을 하나 작성한다.
      #include <iostream>
      #include "cuda.h"
      #include "cuda_runtime.h"
      #include "device_launch_parameters.h"
      
      __global__ void kernel(void)
      {
      }
      
      __global__ void help(void)
      {   
      }
      
      int main(void)
      {
          kernel<<<1, 1>>>();
          printf("Hello, World!n");
          return 0;
      }
    3. Solution Explorer에서 project를 선택하고 ‘Build Customizations’를 클릭한다. 정상적으로 CUDA가 설치되어 있다면 CUDA 4.1 타겟이 윈도우에 보일 것이다. 이것에 체크한다.
      만일 설치되지 않았거나 지워졌다면, CUDA Toolkit가 설치된 디렉토리의 ‘extrasvisual_studio_integrationMSBuildExtensions’ 에 있는모든 파일을 ‘C:Program Files (x86)MSBuildMicrosoft.Cppv4.0BuildCustomizations’ 에 복사한다.
    4. 세팅이 올바르게 되어 있으면 다음처럼 .cu 파일 안에서도 .cpp 파일과 같은 화면으로 보일 것이다.

      참고) CUDA 관련 함수들이 올바로 인텔리센스에 나오게 하려면 CUDA의 헤더 파일들을 명시적으로 기입해주어야 한다.

    5. 컴파일을 수행한다. 컴파일은 문제 없이 수행되지만, 링크 에러가 발생할 것이다. 나는 property sheet 수정을 이용해 해결할 것이다.

     

    [Visual Studio project default property sheet 수정]

    CUDA 4.1을 설치한 후에는 기본적인 perperty sheet인 “Microsoft.Cpp.Win32.user” 파일이 살짝 변경된다. 하지만 빌드하기 편하게 몇가지 것들을 더 수정한다.
    이 작업은 한 번만 수행하면 된다.

    cudart.lib 설정

    1. View – Property Manager (메뉴 마지막에서 두 번째) 를 선택한다. Property Manager 도킹 창이 나타난다.
    2. Microsoft.Cpp.Win32.user property page를 연다.
    3. Linker – Input – Addtional Dependencies에 cudart.lib 파일을 추가한다. 기존 항목은 *절대* 지워서는 안 된다.
    4. 변경 전: kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;
      advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;
      odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
    5. 변경 후: kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;
      advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;
      odbc32.lib;odbccp32.lib;cudart.lib;%(AdditionalDependencies)
      (사실 아예 새로운 property를 추가하는 것을 더 권장하지만, 주의를 충분히 기울일 경우 본 방법이 훨씬 편리하긴 하다.)

     

    [Troubleshooting]

    • .cu 파일을 작성하였으나 nvcc 컴파일러가 동작하지 않는다.
      •  ‘Build Customizations’를 선택해 CUDA 4.1 을 선택한다. Projec properti pages를 열어 ‘CUDA C/C++’ 항목이 추가되었는지 확인한다. 추가되지 않았다면 cu 파일에 대한 custom build rule이 제대로 적용되지 않았기 때문이다. cu 파일의 property를 열어 General – Item Type이 ‘CUDA C/C++’ 로 설정되어 있는지를 확인하자.
    • #include … 로 추가한 CUDA 관련 header 파일의 경로를 찾을 수 없다고 에러가 나온다. (#include 를 선언한 줄에 커서를 가져가 마우스 오른쪽 클릭 후 나오는 context menu에서 “Open Document < … > ..” 를 선택했을 때 에러 메시지가 나오는 경우.
      • 이는 정상적인 현상이다. ‘.cu’ 파일은 일반적인 C/C++ 파일 확장자가 아니다. 그러므로 ‘Additional Include Directories’에서 설정한 값이 적용되지 않는다. 정 context menu에서 header를 열고 싶다면 “Microsoft.Cpp.Win32.user” property sheet의 ‘Include Directories’에 ‘$(CudaToolkitIncludeDir)’를 추가하라.

     

  • CUDA by Example 소스 코드

    NVIDIA 공식 홈페이지에 링크가 잘려 있어서 올려둔다. 본 도서의 공식 홈페이지 링크는 여기이다.

    다운로드: CUDA by Example Source Code

  • Simple Subtitle Renamer GUI

    Simple Subtitle Renamer GUI

    예전에 만들었던 smiRenamer는 지금까지 쏠쏠하게 잘 쓰고 있다.
    이번에 약간의 기능을 더 추가하여 새롭게 다시 만들어 보았다.
    이번에 이름은 SubRenamer라고 이름지었다.

    이전과 마찬가지로 어떤 영상 파일과 자막 파일이 있는 경우,
    두 파일의 이름을 동일하게 맞추어 주는 프로그램이다.

    단순히 파일 이름의 변경만을 원하는 경우, 파일 이름만을 전문적으로 바꾸어주는 툴을 사용할 수도 있지만, 이것은 동영상-자막 파일의 이름을 맞추는데 특화되어 있다는 것이 특징이랄가.

    이전에 비해 동영상/자막 타입을 사용자가 결정할 수 있고, 하위검색에 대한 기능이 보강되었다. 그리고 지정한 확장자를 가진 파일에 대해 정규식 검색을 할 수 있어 더욱 원하는 파일만을 볼 수 있도록 하였다.

    SubRenamerGUI ]

  • DOXYGEN_DOT_EXECUTABLE

    doxygen의 시각화 도구 Graphviz를 말하는 것임.

    http://www.graphviz.org/Download_windows.php 에서 패키지 다운로드