Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

dload

ディスクから分散配列と Composite オブジェクトを読み込む

    説明

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

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

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

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

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

    dload は、ワイルドカードや -regexp オプションをサポートしていません。要求したいずれの変数もファイルにない場合、MATLAB により警告が発行されます。

    dload -scatter ___ は、可能であれば非分散データを分散します。dload がデータを分散できない場合、MATLAB により警告が発行されます。

    dload(filename) は、構文の関数形式です。関数形式の場合、入力を小かっこで囲み、入力引数を string スカラーまたは文字ベクトルとして指定して、入力をスペースではなくコンマで区切る必要があります。

    たとえば、data.mat という名前のファイルを読み込む場合、以下の関数呼び出しは同等です。

     dload("test.mat") % function syntax 
    dload test.mat % command syntax
    前述の構文にある任意の入力を使用できます。

    [outVariables] = dload(filename,variables) は、指定された変数を (関数 load が返すような構造体でなく) 個別の出力引数として読み込みます。要求したいずれの変数もファイルにない場合、dload はエラーになります。

    すべて折りたたむ

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

    まず、ワークスペースの内容を確認します。

    whos

    fname.mat の内容を表示します。

    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.mat を読み込んでから、ワークスペースの内容を再び確認します。既定で、関数 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.
    

    dload の関数形式を使用して、ファイル mydata.mat から Composite 配列 PQ を読み込みます。新規作成した並列プールのサイズが、Composite 配列の作成に使用したプールよりも大きいため、MATLAB は警告を発行します。

    [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 変数を読み込んで分散します。

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

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

    dload の関数形式を使用して、ファイル student_scores.mat から 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 という名前のファイルを検索し、matlab.mat がないときにはエラーになります。

    filename に拡張子がない場合、dload は名前が filename.mat が付加されたファイルを検索します。

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

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

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

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

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

    データ型: char | string

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

    関数 dload は、ワイルドカードや -regexp オプションをサポートしていません。要求したいずれの変数もファイルにない場合、MATLAB により警告が発行されます。

    例: dload myFile.mat A は、myFile.mat という名前のファイルから変数 A を読み込みます。

    例: [X,Y,Z] = dload("myFile","X","Y","Z") は、変数 XY、および Z を個別の出力引数としてクライアントに読み込みます。

    データ型: char | string

    ヒント

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

    バージョン履歴

    R2010a で導入