exponenta event banner

gpuDeviceCount

Количество имеющихся устройств графического процессора

    Описание

    пример

    n = gpuDeviceCount возвращает количество устройств графического процессора, присутствующих на локальном компьютере, как указано драйвером устройства графического процессора. Подсчитываются все устройства, о которых сообщает драйвер, включая устройства, которые не поддерживаются в MATLAB ®, и устройства, которые недоступны для использования в текущей сессии MATLAB .

    пример

    n = gpuDeviceCount(countMode) возвращает количество устройств графического процессора в машине, подсчитанное в соответствии с countMode. Этот синтаксис используется для подсчета только поддерживаемых GPU-устройств или только тех устройств, которые доступны для использования в данном сеансе MATLAB.

    пример

    [n,indx] = gpuDeviceCount(___) также возвращает индексы подсчитанных GPU-устройств для любого из предыдущих синтаксисов. Этот синтаксис используется при выборе или проверке подсчитанных устройств GPU.

    Примеры

    свернуть все

    Определите количество устройств графического процессора, доступных на компьютере, и их индексы.

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

    Запрос свойств графических процессоров с помощью gpuDeviceTable.

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

    При наличии доступа к нескольким графическим процессорам можно выполнять вычисления на нескольких графических процессорах параллельно с использованием параллельного пула.

    Для определения количества графических процессоров, доступных для использования в MATLAB, используйте gpuDeviceCount функция.

    availableGPUs = gpuDeviceCount("available")
    availableGPUs = 3
    

    Запустите параллельный пул, содержащий столько работников, сколько доступно графических процессоров. Для достижения максимальной производительности MATLAB по умолчанию назначает каждому работнику отдельный графический процессор.

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

    Чтобы определить, какой графический процессор использует каждый работник, вызовите gpuDevice внутри spmd блок. spmd участки блоков gpuDevice на каждого работника.

    spmd
        gpuDevice
    end

    Использовать параллельные языковые функции, такие как parfor или parfeval, чтобы распределить ваши вычисления среди работников в параллельном пуле. Если вы используете gpuArray включенные функции в вычислениях, эти функции выполняются на GPU работника. Дополнительные сведения см. в разделе Выполнение функций MATLAB на графическом процессоре. Пример см. в разделе Выполнение функций MATLAB на нескольких графических процессорах.

    Завершив вычисления, закройте параллельный пул. Вы можете использовать gcp для получения текущего параллельного пула.

    delete(gcp('nocreate'));

    Если вы хотите использовать другой выбор графических процессоров, то вы можете использовать gpuDevice для выбора конкретного графического процессора на каждом работнике с помощью индекса устройства графического процессора. Индекс каждого графического процессора в системе можно получить с помощью gpuDeviceCount функция.

    Предположим, что в системе имеется три графических процессора, но для вычисления необходимо использовать только два. Получите индексы устройств.

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

    Определите индексы устройств, которые требуется использовать.

    useGPUs = [1 3];

    Запустите параллельный пул. Использовать spmd блок и gpuDevice чтобы связать каждого работника с одним из графических процессоров, которые вы хотите использовать, используя индекс устройства. 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

    В качестве передовой практики и для достижения оптимальной производительности назначьте каждому работнику отдельный графический процессор.

    Завершив вычисления, закройте параллельный пул.

    delete(gcp('nocreate'));

    Входные аргументы

    свернуть все

    Режим подсчета устройств, указанный как один из следующих:

    • "all" - Подсчитать все устройства графического процессора, сообщенные драйвером устройства графического процессора. Счетчик включает устройства, которые не поддерживаются в MATLAB, и устройства, которые недоступны для использования в текущем сеансе MATLAB.

    • "supported" - Подсчитывать только устройства графического процессора, поддерживаемые текущей версией MATLAB.

    • "available" - Подсчитывать только устройства графического процессора, доступные для использования в текущем сеансе MATLAB.

    Пример: "available"

    Типы данных: char | string

    Выходные аргументы

    свернуть все

    Количество устройств графического процессора, возвращаемое как положительный скаляр.

    Индексы устройств GPU, возвращаемые в виде числового вектора. Каждый элемент indx - индекс устройства подсчитанного графического процессора. Используйте индекс устройства для выбора или запроса устройства графического процессора с помощью gpuDevice функция.

    Представлен в R2010b