Main Content

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

createCommunicatingJob

クラスターに通信ジョブを作成する

    説明

    j = createCommunicatingJob(cluster) は、指定されたクラスター用の通信ジョブ オブジェクトを作成します。

    j = createCommunicatingJob(___,Name=Value) は、1 つ以上の名前と値の引数を使用して、通信ジョブ オブジェクトのプロパティも指定します。

    サポートされるオブジェクト プロパティのリストについては、parallel.Job を参照してください。ほとんどの場合、指定した値によってクラスター プロファイルの値がオーバーライドされます。AttachedFiles または AdditionalPaths を指定した場合、ソフトウェアによってその値が該当するプロファイルの値と結合されます。無効なプロパティの名前または値を指定した場合、ソフトウェアはオブジェクトを作成しません。

    j = createCommunicatingJob(___,Type=jobType) は、通信ジョブのタイプを pool または spmd として指定します。pool ジョブは使用できる並列プールを使用して、指定されたタスク関数を実行します。spmd ジョブは、指定されたタスク関数をすべてのワーカー上で同時に実行します。ワーカー間の通信には関数 spmd* を使用できます。

    j = createCommunicatingJob(___,Profile=profileName) は、プロファイル profileName に対応するプロパティ値をもつ通信ジョブ オブジェクトを作成します。プロファイルを指定しない場合、ソフトウェアにより、クラスター オブジェクト clusterProfile プロパティが適用されます。

    すべて折りたたむ

    この例では、プール タイプの通信ジョブを作成し、投入する方法を説明します。

    この例の最後にリストされているサポート関数 myFunction は、parfor- ループを使用します。parfor ループ内のステートメントを実行するために、この関数にはプール タイプの通信ジョブが必要です。

    既定のクラスターで myFunction を評価する通信ジョブ オブジェクトを作成します。

    myCluster = parcluster;
    j = createCommunicatingJob(myCluster,"Type","pool"); 

    入力引数を指定して、このジョブにタスクを追加します。

    createTask(j, @myFunction, 1, {100});

    ジョブ プロパティ NumWorkersRange を使用して、並列実行に必要なワーカーの数を設定します。

    j.NumWorkersRange = [5 10];

    ジョブを実行します。

    submit(j);

    ジョブの完了を待ち、結果を取得します。

    wait(j)
    out = fetchOutputs(j)
    out = 1×1 cell array
        {[2.5248e+03]}
    
    

    クラスターからジョブを削除します。

    delete(j);
    function result = myFunction(N)
        result = 0;
        parfor ii=1:N
            result = result + max(eig(rand(ii)));
        end
    end

    入力引数

    すべて折りたたむ

    クラスター。クラスター計算リソースを表す parallel.Cluster オブジェクトとして指定します。オブジェクトを作成するには、関数 parcluster を使用します。

    例: parcluster;

    データ型: parallel.Cluster

    通信ジョブのタイプ。以下のオプションのいずれかとして指定します。

    • "pool" ジョブ — 並列プールを使用して、指定されたタスク関数を実行します。並列プールでは、タスク関数内の parforspmd などの並列関数の本体が実行されます。並列プールの 1 つのワーカーがタスク関数を実行します。したがって、N 個のワーカーをもつプールでのプール タイプのジョブでは、N – 1 個のワーカーのみによりタスク関数内の parfor コードおよび spmd コードが実行されます。

    • "spmd" — 指定されたタスク関数をすべてのワーカー上で同時に実行します。ワーカー間の通信に spmdSendspmdReceive などの通信関数を使用できます。

    データ型: char | string

    クラスター プロファイル。文字ベクトルまたは string スカラーとして指定します。

    例: "Processes" は、プロファイル Processes に指定されたプロパティ値をジョブに適用します。

    データ型: char | string

    出力引数

    すべて折りたたむ

    ジョブ。parallel.Job オブジェクトとして返されます。

    データ型: parallel.Job

    ヒント

    計算をワーカーにオフロードするときに、クライアント上での計算に必要なファイルもすべてワーカー上で使用可能でなければなりません。既定で、クライアントはそれらのファイルを検出して追加しようとします。自動検出をオフにするには、AutoAttachFiles プロパティを false に設定します。ソフトウェアがいずれかのファイルを検出できない場合や、クライアントからワーカーへのファイルの送信速度が遅い場合には、以下のいずれかのオプションを使用します。

    • ワーカー上でアクセスできないフォルダーにファイルが含まれている場合は、AttachedFiles プロパティを設定します。指定した各ファイルが、クラスターによってクライアントからワーカーにコピーされます。

    • ワーカー上でアクセスできるフォルダーにファイルが含まれている場合は、代わりに AdditionalPaths プロパティを設定できます。AdditionalPaths プロパティを使用して各ワーカーの MATLAB® 検索パスにパスを追加し、クライアントからワーカーへの不必要なファイルのコピーを回避します。

    バージョン履歴

    R2012a で導入