gpuDeviceCount

Количество имеющихся устройств GPU

    Описание

    пример

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

    пример

    n = gpuDeviceCount(countMode) возвращает количество устройств GPU в вашей машине, подсчитанное согласно countMode. Используйте этот синтаксис для подсчета только поддерживаемых графических процессоров или для подсчета только устройств, доступных для использования в данном сеансе работы с 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 блок. The spmd блок запускается gpuDevice на каждом работнике.

    spmd
        gpuDevice
    end

    Используйте функции параллельного языка, такие как parfor или parfeval, чтобы распределить ваши расчеты среди работников в параллельном пуле. Если вы используете gpuArray активизированные функции в ваших расчетах, эти функции выполняются на графическом процессоре работника. Для получения дополнительной информации смотрите Запуск функций 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 чтобы связать каждый рабочий процесс с одним из используемых графических процессоров, используя индекс устройства. The 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" - Подсчет всех устройств GPU, сообщенных драйвером устройства GPU. Счетчик включает устройства, которые не поддерживаются в MATLAB, и устройства, которые недоступны для использования в текущем сеансе работы с MATLAB.

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

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

    Пример: "available"

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

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

    свернуть все

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

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

    Введенный в R2010b