Main Content

gather

キューに入れられた演算の実行後、tall 配列をメモリに収集

説明

Y = gather(X) は、未評価の tall 配列 X の計算に必要な、キューに入れられたすべての演算を実行し、その結果を Y としてメモリに収集します。

gather 計算の結果が大きすぎる場合、MATLAB® のメモリが足りなくなることがあります。結果がメモリに収まるかどうかに確信がもてない場合は gather(head(X)) または gather(tail(X)) を使って完全な計算を実行し、結果の一部のみをメモリに入れます。

計算中に追加でデータを渡す回数が可能な限りまとめられるように、gather は慎重に使用してください。詳細については、tall 配列の遅延評価を参照してください。

[Y1,Y2,Y3,...] = gather(X1,X2,X3,...) は、複数の未評価の tall 配列 X1, X2, X3,... を対応する出力 Y1, Y2, Y3,... に収集します。

すべて折りたたむ

airlinesmall.csv データ セットのデータストアを作成します。使用する変数のサブセットを選択し、'NA' 値を欠損データとして扱って、tabularTextDatastoreNaN 値に置き換えられるようにします。データストアを tall table に変換します。

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'}    
     :         :              :
     :         :              :

tall table のサイズを計算します。

sz = size(T)
sz =

  1x2 tall double row vector

    ?    ?

MATLAB® は tall 配列上のほとんどの演算を直ちには評価しません。その代わり、MATLAB は演算が入力されたときに実行する演算を記憶し、バックグラウンドで計算を最適化します。

未評価の tall 配列に gather を使用する場合、MATLAB はデータを通す回数を最小限にして、キューに入れられたすべての演算を実行します。この最適化により、大規模な計算の実行時間を大幅に短縮できます。このため、gather は結果を確認する必要がある場合にのみ使用してください。

gather を使用して計算を実行し、結果をメモリに収集します。

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

      123523           3

gather をいくつかの入力と共に使用して複数の tall 配列を同時に評価します。

1 ~ 1000 までのランダムな整数のインメモリ配列から tall 配列を作成します。各列で最大値と最小値を計算します。

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.25 sec
Evaluation completed in 0.59 sec
valRange = [mnA mxA]
valRange = 1×2

           1        1000

入力引数

すべて折りたたむ

未評価の tall 配列。未評価の tall 配列は、gather を使用せずに計算が実行される tall 配列で、その計算は完全に評価されます。

出力引数

すべて折りたたむ

インメモリ配列。Y のデータ型は、未評価の tall 配列 X の基となるデータ型と同じです。

ヒント

  • 複数の出力引数を返す関数は、変数を使用して gather にすべての出力を提供する必要があります。以下に例を示します。

    [a,b] = bounds(X);
    [a,b] = gather(a,b);

  • Parallel Computing Toolbox™ をおもちの場合、distributed および gpuArray 計算の収集の詳細については、gather (Parallel Computing Toolbox) を参照してください。

拡張機能

tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。

GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。

スレッドベースの環境
MATLAB® の backgroundPool を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool を使用してコードを高速化します。

バージョン履歴

R2016b で導入