メインコンテンツ

dload

分散配列と Composite オブジェクトを読み込む

    説明

    dload filename は、filename で指定された名前のファイルからすべての変数を読み込みます。拡張子を指定しない場合、関数は拡張子を .mat とみなします。この関数は、分散配列と Composite オブジェクトの内容を並列プール ワーカーに読み込みます。この関数は他のタイプのデータを MATLAB® クライアントのワークスペースに直接読み込みます。

    • 分散配列を読み込むと、この関数は既定の分散スキームを使用して、現在の並列プールのワーカーにデータを分散します。この関数を使用して変数を読み込む際に、同じサイズのプールを開いておく必要はありません。

    • Composite オブジェクトを読み込むと、この関数は現在の並列プールのワーカーにデータを送信します。Composite が大きすぎて現在の並列プールに収容できない場合、ソフトウェアはデータを読み込みません。Composite が現在の並列プールより小さい場合、ソフトウェアは警告を返します。

    並列プールが開いていない場合、既定では関数 dload が既定のプロファイルを使用してワーカーの並列プールを起動します。

    dload filename variables は、指定された変数を filename で指定された名前のファイルから読み込みます。

    この関数は、ワイルドカードや -regexp オプションをサポートしていません。1 つ以上の指定された変数がファイルに含まれていない場合、警告が返されます。

    dload -scatter ___ は、非分散データを分散しようとします。dload がデータを分散できない場合は、警告が返されます。

    dload(filename) は、dload filename と同じ操作を実行します。

    たとえば、以下の関数呼び出しは同等です。

     dload("test.mat")
    dload test.mat

    [out1,...,outN] = dload(filename,variables) は、指定された変数を読み込んで、個別の出力引数として返します。1 つ以上の指定された変数がファイルに含まれていない場合、関数はエラーを返します。

    すべて折りたたむ

    MAT ファイル fname からすべての分散配列を MATLAB ワークスペースに読み込みます。

    まず、ワークスペースで変数をリストします。

    whos

    fname 内の変数をリストします。

    whos("-file","fname.mat")
      Name                 Size             Bytes  Class     Attributes
    
      DMAT_MANIFEST        1x1               4171  struct              
      X                  100x100            80000  double              
      Y                   90x90             64800  double              
      Z                  110x110            96800  double              
    

    fname を読み込んでから、ワークスペースで再度変数をリストします。既定で、関数 dload はワーカーの並列プールを起動して変数を分散します。

    dload fname.mat
    Starting parallel pool (parpool) using the 'Processes' profile ...
    Connected to parallel pool with 6 workers.
    
    whos
      Name        Size             Bytes  Class          Attributes
    
      X         100x100            80000  distributed              
      Y          90x90             64800  distributed              
      Z         110x110            96800  distributed              
    

    関数構文を使用して、変数を読み込むこともできます。変数をクリアして、関数 dload を呼び出します。

    clear X Y Z
    dload("fname.mat")

    Composite オブジェクトを作成してファイルに保存し、そのデータを異なるサイズの並列プールに再度読み込みます。

    4 つのワーカーをもつ並列プールを作成し、spmd ステートメントを使用してクライアント上に Composite オブジェクトを作成します。Composite オブジェクトを MAT ファイル mydata に保存してから、ワークスペースをクリアします。

    p = parpool(4);
    Starting parallel pool (parpool) using the 'Processes' profile ...
    Connected to parallel pool with 4 workers.
    
    spmd
    P = magic(1000);
    Q = randn(2000);
    end
    dsave mydata P Q
    clear P Q
    delete(p);
    Parallel pool using the 'Processes' profile is shutting down.
    

    MAT ファイルから Composite オブジェクト P および Q を読み込みます。新しい並列プールが、Composite オブジェクトの作成に使用したプールよりも大きいため、警告が返されます。

    [P,Q] = dload("mydata.mat","P","Q");
    Starting parallel pool (parpool) using the 'Processes' profile ...
    Connected to parallel pool with 6 workers.
    
    Warning: The Composite "P" was created with a pool of size 4, and is being loaded into a Composite of size 6 (the current default Composite size).
    
    Warning: The Composite "Q" was created with a pool of size 4, and is being loaded into a Composite of size 6 (the current default Composite size).
    

    ワークスペースで変数をリストします。

    whos
      Name      Size            Bytes  Class                   Attributes
    
      P         1x6               505  Composite                         
      Q         1x6               505  Composite                         
      p         1x1                 8  parallel.ProcessPool              
    

    ファイルから table 変数を読み込んで分散します。

    MAT ファイル student_scores の内容を表示します。

    whos("-file","student_scores.mat")
      Name               Size            Bytes  Class    Attributes
    
      studentScores       -              13541  table              
    

    MAT ファイル student_scores から table studentScores を読み込み、分散します。

    scores = dload("-scatter","student_scores.mat");
    Starting parallel pool (parpool) using the 'Processes' profile ...
    Connected to parallel pool with 4 workers.
    

    各ワーカーに分散されたデータ量を確認します。

    spmd
        scores
    end
    Worker 1: 
      This worker stores scores(1:9,:).
              LocalPart: [9x26 table]
          Codistributor: [1x1 codistributor1d]
    Worker 2: 
      This worker stores scores(10:18,:).
              LocalPart: [9x26 table]
          Codistributor: [1x1 codistributor1d]
    Worker 3: 
      This worker stores scores(19:26,:).
              LocalPart: [8x26 table]
          Codistributor: [1x1 codistributor1d]
    Worker 4: 
      This worker stores scores(27:34,:).
              LocalPart: [8x26 table]
          Codistributor: [1x1 codistributor1d]
    

    入力引数

    すべて折りたたむ

    読み込むファイルの名前。string スカラーまたは文字ベクトルとして指定します。filename を指定しない場合、関数 dloadmatlab という名前の MAT ファイルを検索します。ファイルが見つからない場合、関数はエラーを返します。

    filename の拡張子を指定しない場合、dload は名前が filename で拡張子が .mat のファイルを検索します。

    ファイルの場所に応じて、filename は次のいずれかの形式とします。

    • ファイルが現在のフォルダー、または MATLAB パス上のフォルダーにある場合は、filename にファイル名のみを指定します。

    • ファイルが現在のフォルダー、または MATLAB パス上のフォルダーのいずれにもない場合は、filename に絶対パスまたは相対パスを指定します。

    例: "myFile.mat" は、ファイル名を指定します。

    例: C:\myFolder\myFile.mat は、ファイルへの絶対パスを指定します。

    データ型: char | string

    読み込む変数の名前。1 つ以上の string スカラーまたは文字ベクトルとして指定します。

    関数 dload は、ワイルドカードや -regexp オプションをサポートしていません。1 つ以上の指定された変数が見つからない場合、関数は警告を返します。

    データ型: char | string

    ヒント

    • 関数 dload は、既存の並列プールのワーカー上に分散配列または Composite オブジェクトを読み込みます。プールがない場合、並列設定でプールの自動起動が無効になっていなければ、関数 dload により新たな並列プールが起動されます。並列プールがなく、dload による並列プールの起動もできない場合、dload は分散オブジェクトを読み込みますが、Composite オブジェクトの読み込みはできません。

    バージョン履歴

    R2010a で導入