Установите массивы на графическом процессоре

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 Характеристики

Существует несколько функций, доступных для исследования характеристик объекта gpuArray:

ФункцияОписание
classUnderlyingКласс базовых данных в массиве
existsOnGPUИндикация, если массив существует на графическом процессоре и доступен
isrealИндикация, если данные массива действительны
isaUnderlying

Определите, имеют ли данные о длинном массиве заданный класс, такой как gpuArray

isequalОпределите, равны ли два или больше массива
isnumericОпределите, имеет ли массив тип числовых данных
issparseОпределите, разрежен ли массив
lengthДлина векторного или самого большого измерения массива
ndimsКоличество размерностей в массиве
sizeРазмер измерений массива

Например, чтобы исследовать размер gpuArray объекта G, введите:

G = rand(100,'gpuArray');
s = size(G)
    100   100

Смотрите также

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте