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, см. в разделе «Сохранение и загрузка переменных рабочей области».