Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

mexcuda

GPU 계산을 위해 MEX 함수 컴파일

설명

예제

mexcuda filenames는 소스 파일을 MATLAB® 내에서 실행 가능한 MEX 파일이라는 공유 라이브러리로 컴파일하고 연결합니다. 이 함수는 CUDA® C++ 프레임워크를 사용하여 작성된 MEX 파일을 NVIDIA® nvcc 컴파일러로 컴파일하며 그 파일에서 GPU 커널을 정의하고 시작할 수 있도록 합니다. 또한 mexcuda 함수는 MEX 파일이 gpuArray를 읽고 쓸 수 있도록 GPU MEX API를 노출시킵니다.

mexcuda는 MATLAB mex 함수의 확장입니다. mex에서 지원되는 컴파일러의 일부만 mexcuda에서 지원됩니다. MATLAB이 지원하는 CUDA 툴킷 버전에 따라 지원되는 컴파일러가 달라집니다.

예제

mexcuda option1 ... optionN filenames는 지정된 빌드 옵션을 사용하여 빌드합니다. option1 ... optionN 인수는 디폴트 mexcuda 빌드 구성을 보조하거나 재정의합니다. mex에서 사용할 수 있는 대부분의 옵션을 mexcuda에서 사용할 수 있습니다.

예제

모두 축소

간단한 MEX 함수를 컴파일하여 CUDA C++ 소스 파일에서 함수 myMexFunction을 만듭니다.

mexcuda myMexFunction.cu

예제 소스 파일은 matlabroot/toolbox/parallel/gpu/extern/src/mex/mexGPUExample.cu에서 확인할 수 있습니다.

컴파일 명령이나 링크 명령, 그리고 문제 해결에 유용한 기타 정보를 표시하기 위해 세부 정보 표시 모드를 사용합니다.

mexcuda -v myMexFunction.cu

하나의 명령으로 여러 소스 파일을 컴파일하고 연결합니다.

mexcuda myMexFunction.cu otherSource1.cpp otherSource2.cpp

먼저 컴파일한 다음 함수를 만들기 위해 연결합니다.

mexcuda -c myMexFunction.cu
mexcuda myMexFunction.obj

첫 번째 라인은 myMexFunction.obj(Windows®) 또는 myMexFunction.o(UNIX®)로 컴파일하고 두 번째 라인은 함수 myMexFunction을 만들기 위해 연결합니다.

다른 커널을 시작하는 커널을 정의하여 동적 병렬 처리를 사용하는 코드를 컴파일합니다.

mexcuda -dynamic myMexFunction.cu

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64\nppi.lib에 설치되어 있는 CUDA 이미지 원시 라이브러리 npp를 활용하는 MEX 함수를 컴파일합니다.

mexcuda '-LC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64' -lnppi myMexFunction.cu 

입력 인수

모두 축소

하나 이상의 파일 이름으로, 이름과 파일 확장자를 포함하며 문자형 벡터로 지정됩니다. 파일이 현재 폴더에 없는 경우, 파일 전체 경로를 지정하십시오. 파일 이름은 다음의 조합일 수 있습니다.

  • C 또는 C++ 언어 소스 파일

  • 오브젝트 파일

  • 라이브러리 파일

filenames 목록에 나오는 첫 번째 소스 코드 파일은 이진 MEX 파일의 이름입니다. 명명 규칙을 재정의하려면 '-output' 옵션을 사용하십시오.

데이터형: char

하나 이상의 빌드 옵션으로, 다음 값 중 하나로 지정됩니다. 옵션은 따로 표시된 경우를 제외하고 모든 플랫폼에서 어떤 순서로든 나타날 수 있습니다.

mex 함수에 사용할 수 있는 대부분의 옵션이 지원됩니다. 또한 다음 옵션도 사용할 수 있습니다.

옵션설명

-dynamic

동적 병렬 처리: 다른 커널을 시작하는 커널을 정의하는 MEX 파일을 컴파일합니다.

-G

장치 코드에 대한 디버그 정보를 생성합니다. 이 옵션은 NVIDIA의 디버그 응용 프로그램(NSight 또는 cuda-gdb) 중 하나에서 커널 코드를 라인 단위로 순차적으로 실행할 수 있도록 합니다. 호스트 코드의 디버그를 활성화하려면 -g를 사용하십시오.

다음 mex 함수 옵션은 지원되지 않습니다.

옵션이유

-compatibleArrayDims

MATLAB 대규모 배열 처리 API를 묵시적으로 사용하며 재정의하여 사용할 수 없습니다.

다른 모든 mex 옵션은 mexcuda에서 지원됩니다. 자세한 내용은 mex 도움말 문서를 참조하십시오.

  • CUDA 툴킷이 발견되지 않거나 지원되는 버전이 아닌 경우 MATLAB은 MATLAB과 함께 설치된 NVIDIA nvcc 컴파일러를 사용하여 CUDA 코드를 컴파일합니다. mexcuda가 어떤 컴파일러를 사용 중인지 확인하려면 mexcuda 명령에서 세부 정보 출력을 할 수 있도록 -v 플래그를 사용하십시오.

  • MATLAB과 함께 설치된 CUDA 툴킷에는 CUDA 툴킷에서 사용할 수 있는 모든 라이브러리가 포함되어 있지 않습니다. MATLAB과 함께 설치되지 않은 특정 라이브러리를 연결하려면 CUDA 툴킷을 설치하십시오. gpuDevice를 사용하여 MATLAB에 필요한 CUDA 툴킷 버전을 확인할 수 있습니다. CUDA 툴킷에 대한 자세한 내용은 CUDA 툴킷 항목을 참조하십시오.

  • 설치된 CUDA 툴킷에서 mexcuda가 NVIDIA 컴파일러(nvcc)를 찾을 수 없는 경우 디폴트가 아닌 위치에 설치되었을 수 있습니다. 시스템에서 nvcc의 위치를 환경 변수 MW_NVCC_PATH에 저장하여 지정할 수 있습니다. MATLAB setenv 명령을 사용하여 이 변수를 설정할 수 있습니다. 예를 들면 다음과 같습니다.

    setenv('MW_NVCC_PATH','/usr/local/CUDA/bin')
R2015b에 개발됨