共用方式為


叢集安全函式

適用於:Excel 2013 |Office 2013 |Visualstudio

在 Excel 2013 中,Excel 可以透過專用的叢集連接器介面,將 User-Defined 函式 (UDF) 呼叫卸除至高效能運算叢集。 計算叢集廠商提供叢集連接器。 UDF 作者可以將其 UDF 宣告為叢集安全,然後當叢集連接器存在時,Excel 會將這些 UDF 的呼叫傳送至叢集連接器以進行卸除。

當 Excel 在重新計算期間探索叢集安全 UDF 時,它會將目前正在執行的 XLL 名稱、叢集安全 UDF 的名稱,以及任何參數傳遞至叢集連接器。 連接器會從遠端執行 UDF 呼叫,並將結果傳回 Excel。 不相依的計算會繼續進行,而且當叢集連接器完成執行 UDF 時,它會將結果傳遞至 Excel,並繼續進行相依計算。 此異步行為的機制會模擬異步 UDF 所使用的機制,不同之處在於叢集連接器會管理異步層面,而不是 UDF 作者。 一般而言,叢集連接器會實作 XLL 填充碼來載入 XLL,並在計算叢集節點上執行 UDF。

將UDF宣告為叢集安全的機制,類似於將UDF宣告為多線程重新計算安全的機制。 不過,因為 UDF 不一定與相同 Excel 會話中的其他 UDF 在同一部電腦上執行,所以撰寫叢集安全 UDF 時會有不同的考慮。

若要將 UDF 註冊為叢集安全,您必須透過 Excel12 或 Excel12v 介面呼叫 xlfRegister (Form 1) 回調函式。 如需這些介面的詳細資訊,請參閱 Excel4/Excel12Excel4v/Excel12v。 不支援透過Excel4或Excel4v介面將UDF 註冊為叢集安全。

如果您將函式註冊為叢集安全,則必須確定函式以叢集安全的方式運作。 雖然叢集連接器的確切行為是實作特定的,但您應該將UDF設計為在分散式計算機系統上執行,並具有下列特性:

  • UDF 不應依賴任何記憶體狀態。 例如,UDF 不應依賴現有的記憶體內部快取。

  • UDF 不應執行叢集連接器提供者不支援的 Excel 回呼。

除了叢集安全行為之外,叢集安全 UDF 還有下列技術限制:

  1. 類型 『P』、『R』 ) (沒有 XLOPER 自變數。

  2. 不支援範圍參考 (類型 『U』) 的XLOPER12自變數。

  3. 不能是宏表對等函式 ('#' 和 '&' 無法合併) 。

對於運行時間較短的 UDF,卸除的額外負荷可能會大於 UDF 執行所花費的時間,而否定使用此基礎結構的許多優點。

注意事項

您無法將叢集安全 UDF 宣告為異步 UDF。

UDF 可以藉由呼叫 xlRunningOnCluster 回調函式,判斷它是否正在使用叢集連接器來執行。