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 доступно несколько функций:
| Функция | Описание |
|---|---|
underlyingType | Класс базовых данных в массиве |
existsOnGPU | Указывает, существует ли массив на графическом процессоре и доступен ли он |
isreal | Индикация, являются ли данные массива вещественными |
isUnderlyingType | Определите, имеют ли базовые данные массива заданный класс, например |
isequal | Определите, равны ли два или более массивов |
isnumeric | Определите, является ли массив типом числовых данных |
issparse | Определите, является ли массив разреженным |
length | Длина вектора или наибольшего измерения массива |
mustBeUnderlyingType | Проверьте, что массив имеет заданный базовый тип, такой как double |
ndims | Количество размерностей в массиве |
size | Размер измерений массива |
Например, чтобы изучить размер объекта gpuArray G, тип:
G = rand(100,'gpuArray');
s = size(G)100 100
Вы можете сохранить переменные gpuArray как файлы MAT для дальнейшего использования. При сохранении gpuArray из рабочего пространства MATLAB данные сохраняются как переменная gpuArray в файле MAT. Когда вы загружаете файл MAT, содержащий переменную gpuArray, данные загружаются в графический процессор как gpuArray.
Примечание
Можно загрузить файлы MAT, содержащие данные gpuArray, как массивы в памяти, когда графический процессор недоступен. gpuArray, загруженный без графический процессор, ограничен, и вы не можете использовать его для расчетов. Чтобы использовать gpuArray, загруженный без графический процессор, извлеките содержимое с помощью gather.
Дополнительные сведения о том, как сохранить и загрузить переменные в рабочем пространстве MATLAB, см. в разделе «Сохранение и загрузка переменных рабочей области».