exponenta event banner

Создание массивов на графическом процессоре

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

Создание массивов графических процессоров на основе существующих данных

Отправка массивов графическому процессору

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

N = 6;
M = magic(N);
G = gpuArray(M);

Это можно выполнить в одной строке кода:

G = gpuArray(magic(N));

G теперь является объектом MATLAB gpuArray, который представляет магический квадрат, хранящийся на GPU. Входные данные, предоставленные gpuArray должен быть числовым (например: single, double, int8и т.д.) или логический. (См. также Работа с комплексными номерами на GPU.)

Извлечение массивов из графического процессора

Используйте gather для извлечения массивов из графического процессора в рабочую область MATLAB. Он принимает массив, который находится в графическом процессоре, представленном объектом gpuArray, и передает его в рабочую область MATLAB как обычный массив MATLAB. Вы можете использовать isequal для проверки возврата правильных значений:

G = gpuArray(ones(100,'uint32'));
D = gather(G);
OK = isequal(D,ones(100,'uint32'))

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

Пример: Передача массива в графический процессор

Создайте случайную матрицу 1000 на 1000 в MATLAB, а затем перенесите ее в графический процессор:

X = rand(1000);
G = gpuArray(X);

Пример: Массив передачи заданной точности

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

X = rand(1000);
G = gpuArray(single(X));

Создание массивов графических процессоров напрямую

Ряд функций позволяет непосредственно создавать массивы на GPU, указывая 'gpuArray' введите в качестве входного аргумента. Эти функции требуют только информации о размере массива и классе данных, поэтому они могут создавать массив без необходимости переноса каких-либо элементов из рабочей области MATLAB. Дополнительные сведения см. в разделе gpuArray.

Пример: Построение матрицы идентификаторов на графическом процессоре

Создание матрицы идентификаторов типа 1024 на 1024 int32 на GPU, введите

II = eye(1024,'int32','gpuArray');
size(II)
        1024        1024

С помощью одного числового аргумента создается двумерная матрица.

Пример: Создание многомерного массива на графическом процессоре

Создание 3-мерного массива с классом данных double на GPU, введите

G = ones(100,100,50,'gpuArray');
size(G)
   100   100    50
underlyingType(G)
double

Класс данных по умолчанию: double, поэтому вам не нужно указывать его.

Пример: Построение вектора на GPU

Для создания 8192-элементного вектора столбца нулей на графическом процессоре введите

Z = zeros(8192,1,'gpuArray');
size(Z)
        8192           1

Для вектора столбца размер второго размера равен 1.

Изучить характеристики gpuArray

Существует несколько функций для изучения характеристик объекта gpuArray:

ФункцияОписание
underlyingTypeКласс базовых данных в массиве
existsOnGPUИндикация наличия массива на GPU и доступности
isrealИндикация того, являются ли данные массива реальными
isUnderlyingType

Определите, относятся ли данные базового массива к указанному классу, например double

isequalОпределите, равны ли два или более массива
isnumericОпределите, относится ли массив к числовому типу данных
issparseОпределите, является ли массив разреженным
lengthДлина вектора или наибольшего размера массива
mustBeUnderlyingTypeПроверьте, что массив имеет указанный базовый тип, например двойной
ndimsКоличество измерений в массиве
sizeРазмер размеров массива

Например, чтобы проверить размер объекта gpuArray G, введите:

G = rand(100,'gpuArray');
s = size(G)
    100   100

Сохранить и загрузить gpuArrays

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

Примечание

Файлы MAT, содержащие данные gpuArray, можно загружать как массивы в памяти, если графический процессор недоступен. gpuArray, загруженный без графического процессора, ограничен, и его нельзя использовать для вычислений. Чтобы использовать gpuArray, загруженный без графического процессора, извлеките содержимое с помощью gather.

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

См. также

Связанные темы