Main Content

gpuDeviceCount

컴퓨터에 있는 GPU 장치 개수

    설명

    예제

    n = gpuDeviceCount는 로컬 컴퓨터에 있는 (GPU 장치 드라이버에 의해 보고된) GPU 장치 개수를 반환합니다. MATLAB®에서 지원되지 않는 장치와 현재 MATLAB 세션에서 사용할 수 없는 장치를 포함하여, 드라이버에 의해 보고된 모든 장치의 개수를 셉니다.

    예제

    n = gpuDeviceCount(countMode)는 컴퓨터에 있는 GPU 장치 개수를 countMode에 따라 세어서 반환합니다. 지원되는 GPU 장치의 개수만 세거나 이 MATLAB 세션에서 사용할 수 있는 장치의 개수만 세려면 이 구문을 사용하십시오.

    예제

    [n,indx] = gpuDeviceCount(___)는 위에 열거된 모든 구문에서 개수를 센 GPU 장치의 인덱스도 반환합니다. 개수를 센 GPU 장치를 선택하거나 검토하려는 경우 이 구문을 사용하십시오.

    예제

    모두 축소

    컴퓨터에서 사용할 수 있는 GPU 장치의 개수와 인덱스를 확인합니다.

    [n,indx] = gpuDeviceCount
    n = 2
    indx =   
         1     2
    

    gpuDeviceTable을 사용하여 GPU의 속성을 쿼리합니다.

    gpuDeviceTable
    ans = 
        Index        Name              ComputeCapability    DeviceAvailable    DeviceSelected
        _____    __________________    _________________    _______________    ______________
    
          1      "TITAN RTX"                 "7.5"               true              false     
          2      "GeForce GTX 1080"          "5.0"               true              true      
    
    

    여러 개의 GPU에 액세스할 수 있는 경우에는 병렬 풀을 사용하여 여러 개의 GPU에서 병렬로 계산을 수행할 수 있습니다.

    MATLAB에서 사용 가능한 GPU 개수를 확인하려면 gpuDeviceCount 함수를 사용하십시오.

    availableGPUs = gpuDeviceCount("available")
    availableGPUs = 3
    

    사용 가능한 GPU와 같은 수의 워커를 사용하여 병렬 풀을 시작합니다. MATLAB은 최적의 성능을 위해 기본적으로 각 워커에 다른 GPU를 할당합니다.

    parpool('local',availableGPUs);
    Starting parallel pool (parpool) using the 'local' profile ...
    Connected to the parallel pool (number of workers: 3).
    

    각 워커가 사용하는 GPU를 식별하려면 spmd 블록 내에서 gpuDevice를 호출하십시오. spmd 블록은 모든 워커에서 gpuDevice를 실행합니다.

    spmd
        gpuDevice
    end

    parfor 또는 parfeval과 같은 병렬 언어 기능을 사용하여 계산을 병렬 풀의 워커로 분산합니다. 계산에 gpuArray 지원 함수를 사용하는 경우 이러한 함수는 워커의 GPU에서 실행됩니다. 자세한 내용은 GPU에서 MATLAB 함수 실행하기 항목을 참조하십시오. 예제는 Run MATLAB Functions on Multiple GPUs 항목을 참조하십시오.

    계산이 완료되면 병렬 풀을 종료합니다. gcp 함수를 사용하여 현재 병렬 풀을 가져올 수 있습니다.

    delete(gcp('nocreate'));

    다른 GPU를 선택하려면 gpuDevice를 사용하여 GPU 장치 인덱스를 통해 각 워커에서 특정 GPU를 선택할 수 있습니다. gpuDeviceCount 함수를 사용하여 시스템에 있는 각 GPU 장치의 인덱스를 가져올 수 있습니다.

    시스템에 3개의 GPU가 있지만 2개만 계산에 사용하려 한다고 가정하겠습니다. 장치의 인덱스를 가져옵니다.

    [availableGPUs,gpuIndx] = gpuDeviceCount("available")
    availableGPUs = 3
    
    gpuIndx = 1×3
    
         1     2     3
    
    

    사용할 장치의 인덱스를 정의합니다.

    useGPUs = [1 3];

    병렬 풀을 시작합니다. spmd 블록과 gpuDevice를 사용하여 장치 인덱스를 통해 각 워커를 사용하려는 GPU 중 하나와 연결합니다. labindex 함수는 각 워커의 인덱스를 식별합니다.

    parpool('local',numel(useGPUs));
    Starting parallel pool (parpool) using the 'local' profile ...
    Connected to the parallel pool (number of workers: 2).
    
    spmd
        gpuDevice(useGPUs(labindex));
    end

    최상의 성능을 구현하려면 각 워커에 다른 GPU를 할당하는 것이 좋습니다.

    계산이 완료되면 병렬 풀을 종료합니다.

    delete(gcp('nocreate'));

    입력 인수

    모두 축소

    장치 카운트 모드로, 다음 중 하나로 지정됩니다.

    • "all" — GPU 장치 드라이버에 의해 보고된 모든 GPU 장치의 개수를 셉니다. MATLAB에서 지원되지 않는 장치와 현재 MATLAB 세션에서 사용할 수 없는 장치까지 포함하여 셉니다.

    • "supported" — 현재 버전의 MATLAB에서 지원되는 GPU 장치의 개수만 셉니다.

    • "available" — 현재 MATLAB 세션에서 사용할 수 있는 GPU 장치의 개수만 셉니다.

    예: "available"

    데이터형: char | string

    출력 인수

    모두 축소

    GPU 장치 개수로, 양의 스칼라로 반환됩니다.

    GPU 장치의 인덱스로, 숫자형 벡터로 반환됩니다. indx의 각 요소는 개수를 센 GPU 장치의 장치 인덱스입니다. gpuDevice 함수를 사용하여 GPU 장치를 선택하거나 쿼리하려면 장치 인덱스를 사용하십시오.

    버전 내역

    R2010b에 개발됨