exponenta event banner

собраться

Сбор массива высокого уровня в память после выполнения операций в очереди

Описание

пример

Y = gather(X) выполняет все операции в очереди, необходимые для вычисления нерасчетного массива высокого уровня X и собирает результаты в память как Y.

MATLAB ® может исчерпать память, если результат gather расчет слишком велик. Если вы не уверены, может ли результат поместиться в памяти, используйте gather(head(X)) или gather(tail(X)) чтобы выполнить полный расчет, но внести в память лишь небольшую часть результата.

Использовать gather чтобы гарантировать, что дополнительные проходы через данные объединяются во время вычислений, когда это возможно. Дополнительные сведения см. в разделе Отложенная оценка массивов Tall.

пример

[Y1,Y2,Y3,...] = gather(X1,X2,X3,...) собирает несколько невысоких массивов X1, X2, X3,... в соответствующие выходы Y1, Y2, Y3,....

Примеры

свернуть все

Создание хранилища данных для airlinesmall.csv набор данных. Выберите подмножество переменных для работы и обработки 'NA' значения как отсутствующие данные, так что tabularTextDatastore заменяет их на NaN значения. Преобразование хранилища данных в таблицу высокого уровня.

varnames = {'Year','ArrDelay','UniqueCarrier'};
ds = tabularTextDatastore('airlinesmall.csv', 'TreatAsMissing', 'NA',...
    'SelectedVariableNames',varnames);
T = tall(ds)
T =

  Mx3 tall table

    Year    ArrDelay    UniqueCarrier
    ____    ________    _____________

    1987        8          {'PS'}    
    1987        8          {'PS'}    
    1987       21          {'PS'}    
    1987       13          {'PS'}    
    1987        4          {'PS'}    
    1987       59          {'PS'}    
    1987        3          {'PS'}    
    1987       11          {'PS'}    
     :         :              :
     :         :              :

Вычислите размер таблицы высокого уровня.

sz = size(T)
sz =

  1x2 tall double row vector

    ?    ?

MATLAB ® не сразу оценивает большинство операций с массивами tall. Вместо этого MATLAB запоминает операции, выполняемые при их вводе, и оптимизирует вычисления в фоновом режиме .

При использовании gather в нерасчетном массиве высокого уровня MATLAB выполняет все операции в очереди, используя минимальное количество проходов через данные. Эта оптимизация значительно сокращает время выполнения больших вычислений. По этой причине следует использовать gather только когда нужно увидеть результат.

Использовать gather для выполнения вычисления и сбора результата в память.

S = gather(sz)
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.81 sec
Evaluation completed in 1 sec
S = 1×2

      123523           3

Использовать gather с несколькими входами для одновременной оценки нескольких массивов tall.

Создайте высокий массив из массива случайных чисел в памяти от 1 до 1000. Вычислите максимальное и минимальное значения в каждом столбце.

A = tall(randi(1000,100,7))
A =

  100x7 tall double matrix

   815   163   645    60   423   583   851
   906   795   379   682    95   541   561
   127   312   812    43   599   870   930
   914   529   533    72   471   265   697
   633   166   351   522   696   319   583
    98   602   940    97   700   120   816
   279   263   876   819   639   940   880
   547   655   551   818    34   646   989
    :     :     :     :     :     :     :
    :     :     :     :     :     :     :
b = min(A);
c = max(A);

Используйте результаты для определения общего минимального и максимального значений в массиве. Соберите окончательный результат в память.

[mnA,mxA] = gather(min(b),max(c));
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.26 sec
Evaluation completed in 0.56 sec
valRange = [mnA mxA]
valRange = 1×2

           1        1000

Входные аргументы

свернуть все

Невысокий массив. Невысокий массив - это любой высокий массив, для которого выполняются вычисления без использования gather для полной оценки этих расчетов.

Выходные аргументы

свернуть все

Массив в памяти. Тип данных Y совпадает с базовым типом данных нерасчетного массива высокого уровня X.

Совет

  • Если у вас есть Toolbox™ параллельных вычислений, см. раздел gather(Панель инструментов параллельных вычислений) для получения информации о сборе distributed и gpuArray вычисления.

Расширенные возможности

Массивы высокого уровня
Расчет с массивами, в которых больше строк, чем в памяти.

Создание кода графического процессора
Создание кода CUDA ® для графических процессоров NVIDIA ® с помощью Coder™ графических процессоров

.
Представлен в R2016b