Partilhar via


Atestado FPGA para VMs da Série NP do Azure (Visualização)

Aplica-se a: ✔️ VMs ✔️ Linux VMs ✔️ do Windows Conjuntos ✔️ de escala flexíveis Conjuntos de balanças uniformes

O serviço de Atestado FPGA executa uma série de validações em um arquivo de ponto de verificação de projeto (chamado de "netlist") gerado pelo conjunto de ferramentas Xilinx e produz um arquivo que contém a imagem validada (chamada de "fluxo de bits") que pode ser carregada na placa FPGA Xilinx U250 em uma VM da série NP.

Novidades

O serviço de atestado atual está usando o Vitis 2021.1 da Xilinx, em 26 de setembro de 2022, estaremos mudando para o Vitis 2022.1, a mudança deve ser transparente para a maioria dos usuários. Uma vez que seus projetos são "atestados" usando o Vitis 2022.1, você deve mudar para XRT2022.1. A Xilinx publicou novas imagens de mercado baseadas no XRT 2022.1. Observe que os designs atuais já atestados no Vitis 2020.2 ou 2021.1 funcionarão nas imagens atuais do mercado de implantação, bem como em novas imagens baseadas no XRT2022.1

Como parte da mudança para 2021.1, a Xilinx introduziu uma nova RDC que pode afetar alguns projetos que trabalharam anteriormente no Vitis 2020.2 em relação a BUFCE_LEAF atestado com falha, para obter mais detalhes aqui: Xilinx AR 75980 UltraScale/UltraScale+ BRAM: CLOCK_DOMAIN = Common Mode skew checks.

Pré-requisitos

Você precisará de uma assinatura do Azure e de uma conta de Armazenamento do Azure. A subscrição dá-lhe acesso ao Azure e a conta de armazenamento é utilizada para guardar a sua netlist e os ficheiros de saída do serviço de atestado.

Fornecemos scripts PowerShell e Bash para enviar solicitações de atestado. Os scripts usam a CLI do Azure, que pode ser executada no Windows e no Linux. O PowerShell pode ser executado no Windows, Linux e macOS.

Download da CLI do Azure (obrigatório)

Download do PowerShell para Windows, Linux e macOS (somente para scripts do PowerShell)

Você precisará ter seu inquilino e ID de assinatura autorizados a enviar ao serviço de atestado. Visita https://aka.ms/AzureFPGAAttestationPreview para solicitar acesso.

Construindo seu projeto para atestado

O conjunto de ferramentas Xilinx preferido para projetos de construção é o Vitis 2022.1. Os arquivos Netlist que foram criados com uma versão anterior do conjunto de ferramentas e ainda são compatíveis com 2022.1 podem ser usados. Certifique-se de ter carregado o shell correto para compilar. A versão suportada atualmente é xilinx_u250_gen3x16_xdma_2_1_202010_1. Os arquivos de suporte podem ser baixados do lounge Xilinx Alveo.

Você deve incluir o seguinte argumento para Vitis (linha cmd v++) para criar um xclbin arquivo que contém uma netlist em vez de um fluxo de bits.

--advanced.param compiler.acceleratorBinaryContent=dcp

Iniciar sessão no Azure

Antes de executar quaisquer operações com o Azure, tem de iniciar sessão no Azure e definir a subscrição autorizada a chamar o serviço. Use os az login comandos e az account set –s <Sub ID or Name> para esta finalidade. Mais informações sobre esse processo estão documentadas aqui: Entrar com a CLI do Azure. Use a opção de entrar interativamente ou entrar com credenciais na linha de comando.

Criando uma conta de armazenamento e um contêiner de blob

Seu arquivo netlist deve ser carregado em um contêiner de blob de armazenamento do Azure para acesso pelo serviço de atestado.

Para obter mais informações sobre como criar a conta, um contêiner e carregar sua netlist como um blob para esse contêiner, consulte Guia de início rápido: criar, baixar e listar blobs com a CLI do Azure.

Você também pode usar o portal do Azure para isso.

Carregue seu arquivo netlist para o armazenamento de blobs do Azure

Há várias maneiras de copiar o arquivo; Um exemplo usando o cmdlet AZ Storage Upload é mostrado abaixo. Os comandos az são executados em Linux e Windows. Você pode escolher qualquer nome para o nome "blob", mas certifique-se de manter a xclbin extensão.

az storage blob upload --account-name <storage account to receive netlist> --container-name <blob container name> --name <blob filename> --file <local file with netlist>

Executando os scripts de atestado

Para executar os scripts, você precisará fornecer o nome da sua conta de armazenamento, o nome do contêiner de blob onde o arquivo netlist está armazenado e o nome do arquivo netlist. Você também precisará criar uma assinatura de acesso compartilhado (SAS) de serviço que conceda acesso de leitura/gravação ao seu contêiner (não à netlist). Essa SAS é usada pelo serviço de atestado para fazer uma cópia local do seu arquivo netlist e para gravar de volta os arquivos de saída resultantes do processo de validação no seu contêiner.

Uma visão geral das assinaturas de acesso compartilhado está disponível aqui com informações específicas sobre o SAS de Serviço disponíveis aqui. A página SAS de serviço inclui um cuidado importante sobre a proteção da SAS gerada. Leia o cuidado para entender a necessidade de manter o SAS protegido contra uso mal-intencionado ou não intencional.

Você pode gerar uma SAS para seu contêiner usando o cmdlet az storage container generate-sas. Especifique um tempo de expiração no formato UTC que seja pelo menos algumas horas após a hora de envio; cerca de 6 horas devem ser mais do que suficientes.

Se desejar usar diretórios virtuais, você deve incluir a hierarquia de diretórios como parte do argumento container. Por exemplo, se você tiver um contêiner chamado "netlists" e tiver um diretório virtual chamado "image1" que contenha o blob netlist, especifique "netlists/image1" como o nome do contêiner. Anexe quaisquer nomes de diretório adicionais para especificar uma hierarquia mais profunda.

PowerShell

$sas=$(az storage container generate-sas --account-name <storage acct name> --name <blob container name> --https-only --permissions rwc --expiry <e.g., 2021-01-07T17:00Z> --output tsv)

.\Validate-FPGAImage.ps1 -StorageAccountName <storage acct name> -Container <blob container name> -BlobContainerSAS $sas -NetlistName <netlist blob filename>

Bash

sas=az storage container generate-sas --account-name <storage acct name> --name <blob container name> --https-only --permissions rwc --expiry <2021-01-07T17:00Z> --output tsv  

validate-fpgaimage.sh --storage-account <storage acct name> --container <blob container name> --netlist-name <netlist blob filename> --blob-container-sas $sas

Verificar o estado da sua submissão

O serviço de Atestado retornará o ID de orquestração do seu envio. Os scripts de envio começam automaticamente a monitorar o envio por sondagem para conclusão. O ID de orquestração é a principal forma de analisarmos o que aconteceu ao seu envio, por isso, mantenha-o no caso de ter um problema. Como pontos de referência, o atestado leva cerca de 30 minutos para ser concluído para um pequeno arquivo netlist (300MB de tamanho); um ficheiro de 1,6 GB demorou uma hora.

Você pode chamar o script Monitor-Validation.ps1 a qualquer momento para obter o status e os resultados do atestado, fornecendo o ID de orquestração como argumento:

.\Monitor-Validation.ps1 -OrchestrationId <orchestration ID>

Como alternativa, você pode enviar uma solicitação HTTP de postagem para o ponto de extremidade do serviço de atestado:

https://fpga-attestation.azurewebsites.net/api/ComputeFPGA_HttpGetStatus

O corpo da solicitação deve conter sua ID de assinatura, ID de locatário e ID de orquestração de sua solicitação de atestado:

{  
  "OrchestrationId": "<orchestration ID>",  
  "ClientSubscriptionId": "<your subscription ID>",  
  "ClientTenantId": "<your tenant ID>"
}

Etapas de pós-validação

O serviço gravará sua saída de volta no seu contêiner. Se o passo de validação for bem-sucedido, seu contêiner terá o arquivo netlist original (abc.xclbin), um arquivo com o fluxo de bits (abc.bit.xclbin), um arquivo que identifica o local privado do fluxo de bits armazenado (abc.azure.xclbin) e quatro arquivos de log: um para o processo de inicialização (abc-log.txt) e um para as três fases paralelas que executam a validação. Estes são chamados *logPhaseX.txt onde X é um número para a fase. O azure.xclbin é usado em sua VM para sinalizar o carregamento de sua imagem validada para o U250.

Se a validação falhar, um arquivo error-*.txt será gravado indicando qual etapa falhou. Verifique também os arquivos de log se o log de erros indicar que o atestado falhou. Ao entrar em contato conosco para obter suporte, certifique-se de incluir todos esses arquivos como parte da solicitação de suporte, juntamente com o ID de orquestração.

Você pode usar o portal do Azure para criar seu contêiner, bem como carregar sua netlist e baixar o fluxo de bits e os arquivos de log. O envio de um pedido de certificação e o acompanhamento do seu progresso através do portal não são suportados neste momento e devem ser feitos através de scripts conforme descrito acima.