Compartilhar via


Atestado de FPGA para VMs do Azure da série NP (Versão prévia)

Aplica-se a: ✔️ VMs do Linux ✔️ VMs do Windows ✔️ Conjuntos de dimensionamento flexíveis ✔️ Conjuntos de dimensionamento uniformes

O serviço de atestado FPGA executa uma série de validações em um arquivo de ponto de verificação de design (chamado de "netlist") gerado pelo conjunto de Ferramentas Xilinx e produz um arquivo que contém a imagem validada (chamada de "fragmentado") que pode ser carregada no cartão Xilinx U250 FPGA em uma VM da série NP.

Observação

News

O serviço de atestado atual está usando o Vitis 2021.1 do Xilinx, em 26 de setembro de 2022, vamos mudar para o Vitis 2022.1. A alteração deve ser transparente para a maioria dos usuários. Depois que os designs são “atestados” usando o Vitis 2022.1, mude para o XRT2022.1. O Xilinx publicou novas imagens do marketplace com base no XRT 2022.1. Observe que os designs atuais já atestados no Vitis 2020.2 ou 2021.1 funcionaram nas imagens atuais do marketplace de implantação, bem como em novas imagens baseadas em XRT2022.1

Como parte da mudança para 2021.1, o Xilinx introduziu um novo DRC que pode afetar alguns designs que anteriormente funcionaam no Vitis 2020.2 em relação ao atestado de falha do BUFCE_LEAF, para obter mais detalhes aqui: Xilinx AR 75980 UltraScale/UltraScale+ BRAM: CLOCK_DOMAIN = Verificações de distorção de Modo Comum.

Pré-requisitos

Você precisa de uma assinatura do Azure e de uma conta de Armazenamento do Azure. A assinatura lhe dá acesso ao Azure, e a conta de armazenamento é usada para manter seus arquivos de saída e de lista de serviço de atestado.

Fornecemos scripts de PowerShell e bash para enviar solicitações de atestado. Os scripts usam a CLI do Azure, que podem 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ê precisa ter seu locatário e sua ID de assinatura autorizados para enviar ao serviço de atestado. Para solicitar acesso, visite https://aka.ms/AzureFPGAAttestationPreview.

Criando seu design para atestado

O conjunto de ferramentas Xilinx preferencial para a criação de designs é o Vitis 2022.1. Os arquivos netlist que foram criados com uma versão anterior do conjunto de ferramentas e que ainda são compatíveis com 2022.1 podem ser usados. Verifique se você carregou o shell correto no qual criar. A versão com suporte atualmente é a xilinx_u250_gen3x16_xdma_2_1_202010_1. Os arquivos de suporte podem ser baixados da área Xilinx ALVEO.

Você deve incluir o argumento a seguir no Vitis (linha de comando v++) para criar um arquivo xclbin que contenha um netlist, em vez de um bitstream.

--advanced.param compiler.acceleratorBinaryContent=dcp

Registro no Azure

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

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

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

Para mais informações sobre como criar a conta, um contêiner e carregar seu netlist como um blob nesse contêiner, consulte 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.

Carregar seu arquivo netlist no armazenamento de blob do Azure

Há várias maneiras de copiar o arquivo. Um exemplo que usa o cmdlet AZ Storage upload é mostrado abaixo. Os comandos az são executados no Linux e no Windows. Você pode escolher qualquer nome para o "blob", mas precisa manter a extensão xclbin.

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 em que o arquivo netlist está armazenado e o nome do arquivo netlist. Além disso, você precisará criar uma assinatura de acesso compartilhado de serviço (SAS) que conceda acesso de leitura/gravação ao seu contêiner (não ao netlist). Essa SAS é usada pelo serviço de atestado para fazer uma cópia local do seu arquivo netlist e gravar novamente os arquivos de saída resultantes do processo de validação em seu contêiner.

Uma visão geral das assinaturas de acesso compartilhado está disponível aqui com informações específicas sobre a SAS do serviço disponível aqui. A página SAS do serviço inclui uma nota importante sobre como proteger a SAS gerada. Leia a nota para entender a necessidade de manter a SAS protegida contra uso mal-intencionado ou indesejado.

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 tenha pelo menos algumas horas após o tempo de envio. Cerca de 6 horas deve ser mais do que adequado.

Se você quiser usar diretórios virtuais, deverá incluir a hierarquia de diretório como parte do argumento de contêiner. Por exemplo, se você tiver um contêiner chamado "netlists" e tiver um diretório virtual chamado "image1" que contém o blob do netlist, deverá especificar "netlists/image1" como o nome do contêiner. Adicione nomes de diretórios extras para especificar uma hierarquia mais detalhada.

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

Verificando o status do seu envio

O serviço de atestado retornará a ID de orquestração do seu envio. Os scripts de envio começam a monitorar automaticamente o envio por meio de sondagem para conclusão. A ID de orquestração é a principal maneira de examinarmos o que aconteceu com o seu envio. Portanto, lembre-se dela se tiver algum problema. Como referência, o atestado leva cerca de 30 minutos para ser concluído para um pequeno arquivo netlist (300 MB em tamanho). Um arquivo 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 a ID de orquestração como um argumento:

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

Você também pode enviar a solicitação HTTP post 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 contêiner. Se o passo de validação for bem-sucedido, seu contêiner terá o arquivo de netlist original (abc.xclbin), um arquivo com o fragmentado (abc.bit.xclbin), um arquivo que identifica o local privado de seu fragmentado 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. Elas são nomeadas *logPhaseX.txt em que 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 junto com a ID de orquestração.

Você pode usar o portal do Azure para criar seu contêiner, bem como carregar seu netlist e baixar os arquivos de log e fragmentado. O envio de uma solicitação de atestado e o monitoramento de seu progresso por meio do portal não tem suporte no momento e deve ser feito por meio de scripts, conforme descrito acima.