次の方法で共有


クラスター セーフ関数

適用対象: Excel 2013 | Office 2013 | Visual Studio

Excel 2013 では、Excel は専用のクラスター コネクタ インターフェイスを使用して、User-Defined 関数 (UDF) 呼び出しをハイ パフォーマンス コンピューティング クラスターにオフロードできます。 コンピューティング クラスター ベンダーは、クラスター コネクタを提供します。 UDF 作成者は UDF をクラスター セーフとして宣言できます。その後、クラスター コネクタが存在する場合、Excel はオフロードのためにこれらの UDF をクラスター コネクタに呼び出しを送信します。

Excel は、再計算中にクラスター セーフ UDF を検出すると、現在実行中の XLL 名、クラスター セーフ UDF、および任意のパラメーターをクラスター コネクタに渡します。 コネクタは UDF 呼び出しをリモートで実行し、結果を Excel に返します。 依存しない計算が続行され、クラスター コネクタは UDF の実行を完了すると結果を Excel に渡して、依存する計算を続行します。 この非同期動作のメカニズムは、非同期の動作を管理するのが UDF 作成者ではなくクラスター コネクタであるという点を除けば、非同期 UDF によって使用されるメカニズムと同じです。 通常、クラスター コネクタは XLL shim を実装して XLL を読み込み、計算クラスター ノード上で UDF を実行します。

クラスター セーフとして UDF を宣言するしくみは、マルチ スレッドの再計算に関して UDF を安全として宣言するしくみに似ています。 ただし、UDF は必ずしも同じ Excel セッションの他の UDF と同じコンピューター上で実行されるわけではないため、クラスター セーフ UDF を記述する際には、さまざまな考慮事項が存在します。

To register a UDF as cluster-safe, you must call the xlfRegister (Form 1) callback function through the Excel12 or Excel12v interface. For more information about these interfaces, see the Excel4/Excel12 and Excel4v/Excel12v. Registering a UDF as cluster-safe through the Excel4 or Excel4v interface is not supported.

クラスター セーフとして関数を登録する場合は、関数がクラスター セーフな方法で動作することを確認する必要があります。 クラスター コネクタの厳密な動作は実装によって異なりますが、UDF は、分散コンピューター システム上で実行し、また次のような特徴を持つように設計する必要があります。

  • UDF はメモリの状態に依存しない。 たとえば、UDF は既存のメモリ内キャッシュなどに依存していてはなりません。

  • UDF �̓N���X�^�[ �R�l�N�^ �v���o�C�_�[�ŃT�|�[�g����Ă��Ȃ� Excel �R�[���o�b�N����s���Ȃ��B

�N���X�^�[ �Z�[�t UDF �ɂ́A�N���X�^�[ �Z�[�t�̓���̑��ɂ�A���̂悤�ȋZ�p�I�Ȑ���������܂��B

  1. XLOPER ���� ('P' �^�A'R' �^) �͎g�p�ł��܂���B

  2. 範囲参照をサポートする XLOPER12 引数 ('U' 型) は使用できません。

  3. マクロ シートの同等の関数であってはなりません ('#' と '&' を組み合わせることはできません)。

実行時間が短い UDF の場合は、オフロードのオーバーヘッドが UDFの実行にかかる時間よりも大きくなって、このインフラストラクチャを使用してもほとんどプラスにならない可能性があります。

注:

[!����] �N���X�^�[ �Z�[�t UDF �͔񓯊� UDF �Ƃ��Đ錾�ł��܂���B

UDF �́AxlRunningOnCluster �R�[���o�b�N�֐���Ăяo�����Ƃɂ���āA�N���X�^�[ �R�l�N�^��g�p���Ď��s����Ă��邩�ǂ����𔻕ʂł��܂��B