Main Content

parallel.gpu.CUDAKernel

PTX 및 CU 코드에서 GPU CUDA 커널 객체 만들기

설명

예제

kern = parallel.gpu.CUDAKernel(ptxFile,cuFile)은 PTX 코드 ptxFile과 CUDA® 소스 파일 cuFile을 사용하여 CUDAKernel 객체를 만듭니다. PTX 파일에는 단일 진입점만 포함되어야 합니다.

GPU에서 CUDA 커널을 실행하려면 kern을 사용하십시오. 커널 객체 실행에 대한 자세한 내용은 CUDAKernel 실행하기 항목을 참조하십시오.

kern = parallel.gpu.CUDAKernel(ptxFile,cuFile,func)func로 정의된 함수 진입점에 대한 CUDAKernel을 만듭니다. func는 PTX 파일에서 적절한 커널 진입점을 명확하게 정의해야 합니다.

예제

kern = parallel.gpu.CUDAKernel(ptxFile,cProto)는 PTX 파일 ptxFile과 C 프로토타입 cProto를 사용하여 CUDAKernel 객체를 만듭니다. cProtokern이 나타내는 커널 호출에 대한 C 함수 프로토타입입니다. PTX 파일에는 단일 진입점만 포함되어야 합니다.

kern = parallel.gpu.CUDAKernel(ptxFile,cProto,func)func로 정의된 함수 진입점에 대해 PTX 파일과 C 프로토타입에서 CUDAKernel 객체를 만듭니다. func는 PTX 파일에서 적절한 커널 진입점을 명확하게 정의해야 합니다.

예제

모두 축소

이 예제에서는 PTX 파일과 CU 파일을 사용하거나 PTX 파일과 함수 프로토타입을 사용하여 CUDAKernel 객체를 만드는 방법을 보여줍니다.

CUDA 소스 파일 simpleEx.cu에는 다음 코드가 포함되어 있습니다.

/*
* Add a constant to a vector.
*/
__global__ void addToVector(float * pi, float c, int vecLen)  {
   int idx = blockIdx.x * blockDim.x + threadIdx.x;
   if (idx < vecLen) {
       pi[idx] += c;
   }
}

NVIDIA® CUDA 툴킷의 nvcc 컴파일러를 사용하여 CU 파일을 PTX 파일로 컴파일합니다. PTX 파일을 컴파일하려면 다음 셸 명령을 실행합니다.

nvcc -ptx simpleEx.cu

위 명령은 모든 NVIDIA GPU 장치에서 지원되는 일반 PTX 파일을 생성합니다. 특정 GPU 장치에 최적화된 코드를 생성하려면 -arch 또는 -code 플래그를 사용하여 추가 옵션을 지정하십시오. nvcc 옵션에 대한 자세한 내용은 nvcc 문서를 참조하십시오.

PTX 파일과 CU 파일을 사용하여 CUDA 커널을 만듭니다.

kern = parallel.gpu.CUDAKernel('simpleEx.ptx','simpleEx.cu');

PTX 파일과 addToVector 함수의 함수 프로토타입을 사용하여 CUDA 커널을 만듭니다.

kern = parallel.gpu.CUDAKernel('simpleEx.ptx','float *,float,int');

위의 두 명령문은 모두 addToVector CUDA 커널을 호출하는 데 사용할 수 있는 커널 객체를 반환합니다.

입력 인수

모두 축소

PTX 파일 또는 PTX 코드의 이름으로, 문자형 벡터로 지정됩니다.

PTX 코드의 이름이나 PTX 파일의 내용을 제공할 수 있습니다.

CUDA 소스 파일의 이름으로, 문자형 벡터로 지정됩니다.

이 함수는 CUDA 소스 파일을 검토하여 PTX 코드에 정의된 CUDA 커널에 대한 함수 프로토타입을 찾습니다. CUDA 소스 파일에는 '__global__'로 시작하는 커널 정의가 포함되어야 합니다.

함수 진입점으로, 문자형 벡터로 지정됩니다. func는 PTX 파일에서 적절한 커널 진입점을 명확하게 정의해야 합니다.

커널 호출에 대한 C 프로토타입으로, 문자형 벡터로 지정됩니다. 여러 입력 인수는 쉼표로 구분하여 지정합니다.

버전 내역

R2010b에 개발됨