5. CUDA Cross-Platform Environment

크로스-플랫폼 개발은 우분투 시스템에서만 지원되고, 패키지 매니저 인스톨 프로세스에 의해 제공된다.

우리는 크로스-플랫폼 개발 환경으로서 Ubuntu 14.04를 선택할 것을 권고한다. 이 선택은 GCCGLIBC 버전 불일치와 같은 host/target 호환성 불가를 방지하도록 도와준다.

5.1. CUDA Cross-Platform Installation

다음 단계 중 어떤 것은 native Ubuntu installation의 일부로서 이미 수행되어졌을 수도 있다. 그러한 단계는 스킵해도 안전할 것이다.

이 단계들은 타겟 시스템이 아닌 x86_64 호스트 시스템에서 실행되어져야 한다. 타게 시스템에 고유 CUDA Toolkit을 설치하기 위해 native Ubuntu installation 섹션을 참조하라.

  1. Perform the pre-installation actions.

  2. Enable the foreign architecture
    크로스-플랫폼 툴킷을 인스톨하려면 외부 아키텍쳐(foreign architecture)를 활성화시켜야 한다. armhf, arm64(aarch64), ppc64el를 외부 아키텍쳐로서 활성화시키려면, 다음 명령들을 실행시켜야 한다(<arch>를 원하는 아키텍쳐로 대체해야 한다):

     $ sudo dpkg --add-architecture <arch>
     $ sudo apt-get update
    
  3. Install repository meta-data
    Note: When using a proxy server with aptitude, ensure that wget is set up to use the same proxy settings before installing the cuda-repo package.
     $ sudo dpkg -i cuda-repo-<distro>_<version>_amd64.deb
    
  4. Update the Apt repository cache
     $ sudo apt-get update
    
  5. Install the cross-platform CUDA Toolkit
    armhf, aarch64, ppc64el를 위한 크로스-플랫폼 툴킷을 인스톨하기 위해, 다음 명령을 실행시켜라(<arch>를 원하는 아키텍쳐로 대체해야 한다):
     $ sudo apt-get install cuda-cross-<arch>
    
  6. Perform the post-installation actions.

5.2. CUDA Cross-Platform Samples

이 섹션은 크로스-플랫폼 샘플들을 빌드하기 위해 사용되는 옵션들을 설명한다. 아래에 나타낸 지원되는 타겟을 기반으로 하여 TARGET_ARCH=<arch>TARGET_OS=<os>를 선택해야 한다. TARGET_FS=<path>를 이용하여 nvcc가 샘플이 사용하는 라이브러리와 헤더를 가리키도록 할 수 있다.

Table 6

TARGET_ARCH

어플리케이션을 크로스-컴파일할 때, 타겟 아키텍쳐를 지정하여야 한다. 만약 그러지 않으면, 디폴트로 호스트 아키텍쳐로 지정된다. 허용되는 아키텍쳐는:
  • x86_64 - 64-bit x86 CPU architecture
  • armv7l - 32-bit ARM CPU architecture, like that found on Jetson TK1
  • aarch64 - 64-bit ARM CPU architecture, found on certain Android systems
  • ppc64le - 64-bit little-endian IBM POWER8 architecture

TARGET_OS

어플리케이션을 크로스-컴파일할 때, 타겟 OS를 지정해야 한다. 만약 그러지 않으면, 디폴트로 호스트 OS가 지정된다. 허용되는 OS들은:

  • linux - for any Linux distributions
  • darwin - for Mac OS X
  • android - for any supported device running Android
  • qnx - for any supported device running QNX

TARGET_FS

CUDA 샘플들을 크로스-컴파일하기 위한 가장 신뢰성 있는 방법은 TARGET_FS 변수를 사용하는 것이다. 그렇게 하려면, 호스트 상에서 타겟 파일 시스템을 마운트하라(/mnt/target). 샘플을 크로스-컴파일하기 위해, 다음을 실행하라:

$ make TARGET_ARCH=<arch> TARGET_OS=<os> TARGET_FS=/mnt/target

Copying Libraries
만약 TARGET_FS 옵션이 사용할 수 없다면, 사용되는 라이브러리를 타겟 시스템으로부터 호스트 시스템으로 복사해야 한다(/opt/target/libs). 만약 그 샘플이 GL을 사용한다면, GL 헤더를 복사해야 한다(/opt/target/include). 링커에게 라이브러리가 어디에 있는지 알려줘야 한다(-rpath-link 과/또는 -L 옵션 사용). 일부 라이브러리로부터 해소되지 않는 심볼들을 무시하기 위해, 아래에 나타낸 --unresolved-symbols 옵션을 사용하라. 그 샘플들을 빌드하도록 강제하기 위해 SAMPLE_ENABLED를 사용해야 한다. 예를 들면, 그러한 라이브러리를 사용하는 어떤 샘플을 크로스-컴파일하기 위해 다음을 실행하라:

  $ make TARGET_ARCH=<arch> TARGET_OS=<os> \
    EXTRA_LDFLAGS="-rpath-link=/opt/target/libs -L/opt/target/libs --unresolved-symbols=ignore-in-shared-libs" \
    EXTRA_CCFLAGS="-I /opt/target/include" \
    SAMPLE_ENABLED=1

5.3. Nsight Eclipse Edition

Nsight Eclipse Edition는 크로스-플랫폼 개발을 지원한다. 더 자세한 내용은 Nsight Eclipse Edition Getting Started Guide를 보라.

results matching ""

    No results matching ""