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
Можно сохранить gpuArray переменные как файлы MAT для дальнейшего использования. Когда вы избавляете gpuArray от рабочего пространства MATLAB, данные сохранены как gpuArray переменная в файле MAT. Когда вы загружаете файл MAT, содержащий gpuArray переменную, данные загружаются на графический процессор как gpuArray.
Можно загрузить файлы MAT, содержащие gpuArray данные как массивы в оперативной памяти, когда графический процессор не доступен. gpuArray, загруженный без графического процессора, ограничивается, и вы не можете использовать его в расчетах. Чтобы использовать gpuArray, загруженный без графического процессора, получите содержимое с помощью gather
.
Для получения дополнительной информации о том, как сохранить и загрузить переменные в рабочем пространстве MATLAB, смотрите, Сохраняют и Переменные Рабочей области Загрузки (MATLAB).