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