FIXPARALLEL...ENDFIXPARALLEL
指定した数までのパラレル・スレッドを使用して、コマンドのブロックに対するパラレル計算を有効にします。
ENDFIXPARALLELコマンドは、FIXPARALLELコマンド・ブロックを終了します。
構文
FIXPARALLEL (numThreads, mbrList)
COMMANDS ;
[ POSTFIXPARALLEL ( [ varName = ACCUMULATEVAR ( threadVarName ); ]* ); ]
ENDFIXPARALLEL
パラメータ
- numThreads
-
並列計算に使用可能にするスレッド数を指定する正の整数。
- mbrList
-
計算を制限するためのスライスの選択。 これらのスライスは、FIXPARALLEL計算のタスク・メンバーになります。 次のいずれかを指定できます:
-
メンバー名またはメンバーのリスト。 Note: mbrListが1つ以上の疎ディメンションの単一メンバーである場合は、1つのタスクのみが生成され、パラレル実行のメリットは得られません。 1つ以上の疎ディメンションの複数のメンバーが複数のタスクを生成します。
-
メンバー・セット関数。他のメンバーに基づいてメンバー・リストを構築するために使用されます。
指定するデータベース・リージョン(スライス)は、相互に独立している必要があります。
mbrListから、Essbaseはパラレルで計算するタスクを生成します。
Essbaseは、動的でない非共有の疎メンバーのみを使用してタスクを作成し、計算するブロックを決定します。 したがって、mbrListには少なくとも1つの動的でない非共有の疎メンバーが含まれている必要があります。 複数のスレッドを使用するには、mbrListに各疎ディメンションの複数のメンバーを含める必要があります。mbrListでは、指定したnumThreadsと同じ数以上のタスクを指定する必要があります。
FIXPARALLEL計算で設定するタスクが多すぎないようにするには、タスクに使用するメンバーの組合せのみをmbrListに含める必要があります。 他のすべての疎メンバーの組合せは、内部または外部FIXに属します。
-
- COMMANDS
-
FIXPARALLELの期間中に実行するコマンド。 これらのコマンドは、mbrListによって記述されたデータベース・リージョンに適用されます。 THREADVARコマンドを含めることができます。
- POSTFIXPARALLEL
-
THREADVAR変数をVAR変数にコピーする操作のオプション・ブロック。 Essbaseは、FIXPARALLELコマンドが終了する前にPOSTFIXPARALLELブロックを一度実行します。 POSTFIXPARALLELを参照してください。
- varName
-
VAR変数の名前。
- threadVarName
-
THREADVAR変数の名前。
- ACCUMULATEVAR
-
オプションのPOSTFIXPARALLEL内で使用されます。 指定したTHREADVAR変数のすべてのスレッド値を加算します。 次に、合計が指定されたVAR変数に割り当てられます。
- ENDFIXPARALLEL
-
FIXPARALLELコマンド・ブロックを閉じます。
ノート
スレッド・アクティビティは、次のものを使用して制御します:
-
numThreadsパラメータ
-
THREADVARコマンド
-
ACCUMULATEVARコマンド(POSTFIXPARALLEL内)
-
mbrListパラメータ。 メンバー・リストは、計算リージョンをタスクに分割する方法をEssbaseに指示するため、計算を最適化するための重要なツールです。 mbrListが大きくなると、各タスクが小さくなります。 タスクが小さすぎると、計算メモリーのオーバーヘッドによってパフォーマンスが低下する可能性があります。 ただし、タスクが大きすぎると、並列計算スレッドが作業するのに十分なタスクがない可能性があります。
FIXPARALLELの概要
CALCPARALLEL構成設定を使用してパラレル計算を実行できますが、FIXPARALLELコマンド・ブロック・メソッドを使用すると便利な場合があります。
FIXPARALLELコマンド・ブロックには、実行するコマンドと、計算するデータベース・リージョン(スライス)を指定するいくつかのスレッド(numThreads)およびメンバー・リスト(mbrList)を入力します。 Essbaseでは、メンバー・リストの組合せからタスクのリストが作成され、スレッド間でタスクが分割されます。
FIXPARALLELには、次の利点があります:
-
パラレル計算中に一時変数を使用できます。
-
DATACOPY、DATAEXPORTまたはCLEARBLOCKコマンドを使用できます。
-
これは、@XREFまたは@XWRITE関数と組み合せて使用できます。
-
データベースのリージョンをパラレルにエクスポートできます。 このトピックの例を参照してください。
-
CALCPARALLELがパフォーマンス要件を満たしておらず、アウトラインで多数の空のタスクが生成される場合、または計算に使用可能なスレッドより少ないタスク・グループが多数含まれる場合。 FIXPARALLELとCALCPARALLELのタスク選択の比較も参照してください。
計算スクリプト内でFIX文をFIXPARALLELに変換する場合は、次のガイドラインに従ってください:
-
CALCPARALLELを使用して、パフォーマンス・ニーズを満たさないFIX文に焦点を当てます。
-
大量の作業を必要とするFIX文に焦点を当てます。 FIX文のパラレル化にはオーバーヘッドが必要なため、軽量ワークロードで計算パスをパラレル化しようとしても有益ではない場合があります。 AGGやCALC DIMなどの重いワークロードは、FIXPARALLELに適しています。
-
最初に、単一の大きな疎ディメンションを使用するか、格納されたメンバー数が制限された1つ以上の階層にmbrListを制限して、並列処理を試行します。 引き続きメンバー・リストにディメンションを追加して、計算時間が改善されるかどうかを確認できます。
タスクのパラレル計算が行われる場合、タスクは任意の順序で分割され、同時に実行されることに注意してください。 つまり、他のタスクの前にタスクが実行される保証はありません。 このため、指定するリージョンには、データまたは計算の依存関係が存在していない必要があります。 たとえば、2つのパラレル・スレッドがあり、作業がタスクA、B、CおよびDに分割されているとします。
可能な計算の順序は次のとおりです:
-
スレッド#1はAを実行してからCを実行します。
-
スレッド#2はBを実行してからDを実行します。
または、
-
スレッド#1がAを実行します。
-
スレッド#2はB、C、Dの順に実行します。
または、
-
スレッド#1はCを実行してからAを実行します。
-
スレッド#2はDを実行してからBを実行します。
FIXPARALLELとCALCPARALLELのタスク選択の比較
CALCPARALLELは、最初に最後の疎ディメンションからタスクを作成し、次に最後の疎ディメンションから2つ目の疎ディメンションまでタスクを作成してから、十分なタスクを作成します。 FIXPARALLELは、COMMANDSブロックにない疎ディメンションから選択できます。 たとえば、FIXと同様に、FIXPARALLELをオン(レベル0、製品)およびAGG (製品)にすることはできません。
FIXPARALLELは、タスク選択のカスタマイズに役立ちますが、選択したリージョンからタスクを生成する際に相互依存性がないことも前提としています。 CALCPARALLELは、タスク・リストの生成時に疎性、アウトライン順序、依存性およびメンバー式を考慮する必要があります。
FIXPARALLELパラレル計算の制限事項
-
透過パーティションのターゲットであるデータベースでは、FIXPARALLELはリモート計算が無効な場合(SET REMOTECALC OFF)にのみサポートされます。
-
FIXPARALLELブロックでは、次の計算コマンドはサポートされていません:
-
フラット・ファイル以外のオプションを指定したDATAEXPORT
-
DATAIMPORTBIN
-
EXCLUDE...ENDEXCLUDE
-
-
FIXPARALLELでは、最大8つのスレッドがサポートされます(EssbaseがOracle Exalytics In-Memory Machineで実行されている場合)。 各スレッドで作成されるデータ構造と、タスクのスケジュールおよび実行に使用されるアルゴリズムには、かなりのCPUおよびメモリー・リソースが必要です。 リソースが限られているサーバーで高度にパラレル化されたアクティビティを実行すると、パフォーマンスおよびシステムの安定性に悪影響を及ぼす可能性があります。 したがって、ORACLEHARDWAREACCELERATION構成設定がFALSEに設定されている場合、FIXPARALLELを8つを超えるスレッドで使用することはサポートされません。
例
FIXPARALLELをDATAEXPORTとともに使用すると、データベースの制限付きリージョンをパラレルにエクスポートできます。 次の例では、2つのスレッドを使用して、[California]、[Oregon]、[Washington]、[Utah]および[Nevada]に関連するデータをエクスポートします。
FIXPARALLEL (2, @CHILDREN("West"))
DATAEXPORT "File" " " "dataOfWest.txt" "#MI";
ENDFIXPARALLEL
POSTFIXPARALLELの例も参照してください。