インテル® DAAL プログラミング・ガイド

分散処理

このモードは、データセットが計算ノードの nblocks ブロックに分割されていると仮定します。

アルゴリズムのパラメーター

分散処理モードの SVD アルゴリズムのパラメーターは次のとおりです。

パラメーター

デフォルト値

説明

computeStep

適用不可

アルゴリズムを初期化するために必要なパラメーターです。次のいずれか。

  • step1Local - 第 1 ステップ、ローカルノードで実行
  • step2Master - 第 2 ステップ、マスターノードで実行
  • step3Local - 最終ステップ、ローカルノードで実行

algorithmFPType

double

アルゴリズムが中間計算に使用する浮動小数点の型。float または double を指定できます。

method

defaultDense

パフォーマンス指向の計算メソッド。アルゴリズムでサポートされている唯一のメソッドです。

leftSingularMatrix

requiredInPackedForm

左特異ベクトルの行列が必要かどうかを指定します。次のいずれか。

  • notRequired - 行列は必要ありません。
  • requiredInPackedForm - パックド形式の行列が必要です。

rightSingularMatrix

requiredInPackedForm

右特異ベクトルの行列が必要かどうかを指定します。次のいずれか。

  • notRequired - 行列は必要ありません。
  • requiredInPackedForm - パックド形式の行列が必要です。

3 ステップの計算スキーマを使用して SVD を計算します。

ステップ 1 - ローカルノード


SVD Distributed Processing Workflow Step 1

このステップの SVD の入力は次のとおりです。入力 ID をパラメーターとして、アルゴリズムの入力を提供するメソッドに渡します。詳細は、「アルゴリズム」を参照してください。

入力 ID

入力

data

ローカルノードの i 番目のデータブロックを表す ni x p 数値テーブルのポインター。各データブロックは十分なサイズ (ni > p) が必要なことに注意してください。入力は、NumericTable の派生クラスのオブジェクトです。

このステップで、SVD は次の結果を計算します。結果 ID をパラメーターとして、アルゴリズムの結果にアクセスするメソッドに渡します。詳細は、「アルゴリズム」を参照してください。

結果 ID

結果

outputOfStep1ForStep2

ステップ 2 のマスターノードに転送する部分結果を含む数値テーブルのコレクション。デフォルトでは、これらのテーブルは HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrixPackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。

outputOfStep1ForStep3

ステップ 3 のローカルノードで保持する部分結果を含む数値テーブルのコレクション。デフォルトでは、これらのテーブルは HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrixPackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。

ステップ 2 - マスターノード


SVD Distributed Processing Workflow Step 2

このステップの SVD の各ローカルノードからの入力は次のとおりです。入力 ID をパラメーターとして、アルゴリズムの入力を提供するメソッドに渡します。詳細は、「アルゴリズム」を参照してください。

入力 ID

入力

inputOfStep2FromStep1

ステップ 1 でローカルノードで計算された結果 (outputOfStep1ForStep2) を含むコレクション。(PackedSymmetricMatrix クラスおよび lowerPackedTriangularMatrix レイアウトの PackedTriangularMatrix クラスを除く) NumericTable の派生クラスのオブジェクトをコレクションに含めることができます。

key

キー、型 int の数。キーを使用すると、ステップ 1 (inputOfStep2FromStep1) の部分結果の順序を追跡できるため、ステップ 2 (outputOfStep2ForStep3) で計算された部分結果を全く同じ順序でローカルノードに戻すことができます。

このステップで、SVD は次の結果を計算します。結果 ID をパラメーターとして、アルゴリズムの結果にアクセスするメソッドに渡します。詳細は、「アルゴリズム」を参照してください。

結果 ID

結果

outputOfStep2ForStep3

左特異ベクトルを計算するためにローカルロードに分割する数値テーブルを含むコレクション。左特異ベクトルが必要ない場合は NULL に設定します。デフォルトでは、これらのテーブルは HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrixPackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。

singularValues

特異値 (行列 Σ の対角) を含む 1 x p 数値テーブルのポインター。デフォルトでは、この結果は HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrixPackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。

rightSingularMatrix

右特異ベクトル (行列 V) を含む p x p 数値テーブルのポインター。右特異ベクトルが必要ない場合は NULL を渡します。デフォルトでは、この結果は HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrixPackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。

ステップ 3 - ローカルノード


SVD Distributed Processing Workflow Step 3

このステップの SVD の入力は次のとおりです。入力 ID をパラメーターとして、アルゴリズムの入力を提供するメソッドに渡します。詳細は、「アルゴリズム」を参照してください。

入力 ID

入力

inputOfStep3FromStep1

ステップ 1 でローカルノードで計算された結果 (outputOfStep1ForStep3) を含むコレクション。(PackedSymmetricMatrix および PackedTriangularMatrix を除く) NumericTable の派生クラスのオブジェクトをコレクションに含めることができます。

inputOfStep3FromStep2

ステップ 2 でマスターノードで計算された結果 (outputOfStep2ForStep3) を含むコレクション。(PackedSymmetricMatrix および PackedTriangularMatrix を除く) NumericTable の派生クラスのオブジェクトをコレクションに含めることができます。

このステップで、SVD は次の結果を計算します。結果 ID をパラメーターとして、アルゴリズムの結果にアクセスするメソッドに渡します。詳細は、「アルゴリズム」を参照してください。

結果 ID

結果

leftSingularMatrix

左特異ベクトル (行列 U) を含む n x p 数値テーブルのポインター。左特異ベクトルが必要ない場合は NULL を渡します。デフォルトでは、この結果は HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrixPackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。

サンプル

インテル® DAAL ディレクトリーの次のサンプルを参照してください。

C++: ./examples/cpp/source/svd/svd_distributed.cpp

Java*: ./examples/java/source/com/intel/daal/examples/svd/SVDDistributed.java