群集安全功能

适用于: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 填充码以加载 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. 没有 XLOPER 参数 (类型“P”、“R”) 。

  2. 没有支持范围引用 (类型“U”) XLOPER12参数。

  3. 不能是宏表等效函数 (“#”,“&”不能) 合并。

对于执行时间较短的 UDF,卸载的开销可能大于执行 UDF 所花费的时间,这否定了使用此基础结构的许多好处。

注意

不能将群集安全 UDF 声明为异步 UDF。

UDF 可以通过调用 xlRunningOnCluster 回调函数来确定它是否正在使用群集连接器运行。