2013-02-13 1 views
0

CUDA 툴킷을 사용하는 프로그램을 컴파일한다고 가정하고 필요한 컴퓨팅 기능을 지원하지 않는 하드웨어에서 프로그램을 실행하거나 CUDA 인터페이스를 지원하는 NVIDIA GPU가 없을 수도 있습니다. 프로그래밍 수준? CPU 절차를 다시 수행하거나 오류 메시지를 표시합니다.CUDA를 사용할 수 있는지 어떻게 알 수 있습니까?

답변

3

샘플이 이미 설치되어있는 CUDA 툴킷을 가지고 있다면 deviceQuery 프로젝트를 살펴 보는 것이 좋습니다. Capability Major/Minor 버전 번호와 같은 속성을 장치에 쿼리하는 방법에 대한 예를 보여줍니다. 첨부

짧은 조각 다음 시스템은 GPU가없는 경우에 대해서는

cudaSetDevice(dev); 
    cudaDeviceProp deviceProp; 
    cudaGetDeviceProperties(&deviceProp, dev); 

    printf("\nDevice %d: \"%s\"\n", dev, deviceProp.name); 

    // Console log 
    cudaDriverGetVersion(&driverVersion); 
    cudaRuntimeGetVersion(&runtimeVersion); 
    printf(" CUDA Driver Version/Runtime Version   %d.%d/%d.%d\n", driverVersion/1000, (driverVersion%100)/10, runtimeVersion/1000, (runtimeVersion%100)/10); 
    printf(" CUDA Capability Major/Minor version number: %d.%d\n", deviceProp.major, deviceProp.minor); 

, 당신은 당신이 그 시점에서 정적 라이브러리가 필요 믿고 있지만, 아래의 코드를 사용할 수 있습니다.

int deviceCount = 0; 
cudaError_t error_id = cudaGetDeviceCount(&deviceCount); 

if (error_id != cudaSuccess) 
{ 
    printf("cudaGetDeviceCount returned %d\n-> %s\n", (int)error_id, cudaGetErrorString(error_id)); 
    exit(EXIT_FAILURE); 
} 

// This function call returns 0 if there are no CUDA capable devices. 
if (deviceCount == 0) 
{ 
    printf("There are no available device(s) that support CUDA\n"); 
} 
else 
{ 
    printf("Detected %d CUDA Capable device(s)\n", deviceCount); 
} 
+0

정적 라이브러리가 필요하지 않지만 응용 프로그램과 함께 cudart DLL/SO를 배포해야합니다. EULA는 이러한 목적으로 특별히 재배포를 허용합니다. – Tom

관련 문제