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, поэтому вам не нужно указывать его.
Для создания 8192-элементного вектора столбца нулей на графическом процессоре введите
Z = zeros(8192,1,'gpuArray');
size(Z)8192 1
Для вектора столбца размер второго размера равен 1.
Существует несколько функций для изучения характеристик объекта gpuArray:
| Функция | Описание |
|---|---|
underlyingType | Класс базовых данных в массиве |
existsOnGPU | Индикация наличия массива на GPU и доступности |
isreal | Индикация того, являются ли данные массива реальными |
isUnderlyingType | Определите, относятся ли данные базового массива к указанному классу, например |
isequal | Определите, равны ли два или более массива |
isnumeric | Определите, относится ли массив к числовому типу данных |
issparse | Определите, является ли массив разреженным |
length | Длина вектора или наибольшего размера массива |
mustBeUnderlyingType | Проверьте, что массив имеет указанный базовый тип, например двойной |
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 см. в разделе Сохранение и загрузка переменных рабочей области.