Compartilhar via


Funções seguras de cluster

Aplica-se a: Excel 2013 | Office 2013 | Visual Studio

No Excel 2013, o Excel pode descarregar chamadas User-Defined Function (UDF) para um cluster de computação de alto desempenho por meio de uma interface dedicada do conector de cluster. Os fornecedores de cluster de computação fornecem Conectores de Cluster. Os autores da UDF podem declarar seus UDFs como seguros para cluster e, quando um conector de cluster está presente, o Excel envia chamadas para essas UDFs para o conector de cluster para descarregamento.

Quando o Excel descobre uma UDF segura por cluster durante o recálculo, ele passa o nome da XLL que está em execução no momento, o nome da UDF segura por cluster e todos os parâmetros para o conector de cluster. O conector executa a chamada UDF remotamente e retorna os resultados para o Excel. O cálculo não dependente continua e, quando o conector de cluster terminar de executar a UDF, ele passa os resultados para o Excel e os cálculos dependentes continuam. O mecanismo para esse comportamento assíncrono imita o mecanismo usado por UDFs assíncronos, exceto que o conector de cluster gerencia os aspectos assíncronos em vez do autor da UDF. Normalmente, um conector de cluster implementa um shim XLL para carregar XLLs e executar UDFs em nós de cluster de computação.

A mecânica de declarar UDFs como seguros de cluster se assemelham às de declarar UDFs como seguros para recalculação de vários threads. No entanto, como a UDF não está necessariamente em execução no mesmo computador que outros UDFs da mesma sessão do Excel, há considerações diferentes ao escrever UDFs seguros para cluster.

Para registrar um UDF como seguro para cluster, você deve chamar a função de retorno de chamada xlfRegister (Formulário 1) por meio da interface excel12 ou Excel12v . Para obter mais informações sobre essas interfaces, consulte o Excel4/Excel12 e Excel4v/Excel12v. Não há suporte para registrar um UDF como seguro de cluster por meio da interface do Excel4 ou do Excel4v .

Se você registrar uma função como cluster-safe, deverá garantir que a função se comporte de maneira segura por cluster. Embora o comportamento exato do conector de cluster seja específico da implementação, você deve projetar seu UDF para ser executado em um sistema de computador distribuído e ter as seguintes características:

  • Uma UDF não deve confiar em nenhum estado de memória. Por exemplo, uma UDF não deve depender de um cache na memória existente.

  • Uma UDF não deve executar retornos de chamada do Excel que o provedor do conector de cluster não dá suporte.

Além do comportamento de segurança de cluster, há as seguintes restrições técnicas em UDFs seguras para cluster:

  1. Nenhum argumento XLOPER (tipos 'P', 'R').

  2. Nenhum XLOPER12 argumentos que dão suporte a referências de intervalo (digite 'U').

  3. Não é possível ser uma função equivalente de folha de macro ('#' e '&' não pode ser combinada).

Para UDFs com tempos de execução mais curtos, a sobrecarga de descarregamento pode ser maior do que o tempo que a UDF leva para ser executada, negando muitos dos benefícios de usar essa infraestrutura.

Observação

Você não pode declarar uma UDF segura por cluster como uma UDF assíncrona.

Uma UDF pode determinar se ela está sendo executada usando um conector de cluster chamando a função de retorno de chamada xlRunningOnCluster .