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

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

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

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

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

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

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

G = gpuArray(magic(N));

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

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

Используйте 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));

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

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

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

Чтобы создать матрицу тождеств типа 1024 на 1024 int32 на графическом процессоре введите

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

С одним числовым аргументом вы создаете 2-мерную матрицу.

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

Чтобы создать 3-мерный массив таковых с классом данных double на графическом процессоре введите

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

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

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

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

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

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

Исследуйте характеристики gpuArray

Для исследования характеристик объекта gpuArray доступно несколько функций:

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

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

isequalОпределите, равны ли два или более массивов
isnumericОпределите, является ли массив типом числовых данных
issparseОпределите, является ли массив разреженным
lengthДлина вектора или наибольшего измерения массива
mustBeUnderlyingTypeПроверьте, что массив имеет заданный базовый тип, такой как double
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, см. в разделе «Сохранение и загрузка переменных рабочей области».

См. также

Похожие темы