Dela via


FPGA-attestering för virtuella Datorer i Azure NP-serien (förhandsversion)

Gäller för: ✔️ Virtuella Linux-datorer ✔️ med virtuella Windows-datorer ✔️ – flexibla skalningsuppsättningar ✔️ Enhetliga skalningsuppsättningar

FPGA-attesteringstjänsten utför en serie valideringar på en designkontrollpunktsfil (kallas "netlist") som genereras av Xilinx-verktygsuppsättningen och skapar en fil som innehåller den verifierade avbildningen (kallas "bitström") som kan läsas in på Xilinx U250 FPGA-kortet på en virtuell dator i NP-serien.

Nyheter

Den aktuella attesteringstjänsten använder Vitis 2021.1 från Xilinx, den 26 september 2022 kommer vi att flytta till Vitis 2022.1, ändringen bör vara transparent för de flesta användare. När designerna har "intygats" med Vitis 2022.1 bör du flytta till XRT2022.1. Xilinx publicerade nya marketplace-avbildningar baserade på XRT 2022.1. Observera att de aktuella designerna som redan har intygats på Vitis 2020.2 eller 2021.1 fungerar på de aktuella marketplace-avbildningarna för distribution samt nya avbildningar baserade på XRT2022.1

Som en del av övergången till 2021.1 introducerade Xilinx en ny DRC som kan påverka vissa mönster som tidigare arbetade med Vitis 2020.2 angående BUFCE_LEAF misslyckade attestering, för mer information här: Xilinx AR 75980 UltraScale/UltraScale+ BRAM: CLOCK_DOMAIN = Common Mode skew checks.

Förutsättningar

Du behöver en Azure-prenumeration och ett Azure Storage-konto. Prenumerationen ger dig åtkomst till Azure och lagringskontot används för att lagra dina netlist- och utdatafiler för attesteringstjänsten.

Vi tillhandahåller PowerShell- och Bash-skript för att skicka attesteringsbegäranden. Skripten använder Azure CLI, som kan köras i Windows och Linux. PowerShell kan köras i Windows, Linux och macOS.

Nedladdning av Azure CLI (krävs)

PowerShell för Windows, Linux och macOS -nedladdning (endast för PowerShell-skript)

Du måste ha ditt klient- och prenumerations-ID auktoriserat för att skicka till attesteringstjänsten. Besök https://aka.ms/AzureFPGAAttestationPreview för att begära åtkomst.

Skapa din design för attestering

Den föredragna Xilinx-verktygsuppsättningen för byggnadsdesign är Vitis 2022.1. Netlist-filer som har skapats med en tidigare version av verktygsuppsättningen och som fortfarande är kompatibla med 2022.1 kan användas. Kontrollera att du har läst in rätt gränssnitt att bygga mot. Den version som stöds för närvarande är xilinx_u250_gen3x16_xdma_2_1_202010_1. Supportfilerna kan laddas ned från Xilinx Alveo-loungen.

Du måste inkludera följande argument i Vitis (v++ cmd line) för att skapa en xclbin fil som innehåller en netlist i stället för en bitström.

--advanced.param compiler.acceleratorBinaryContent=dcp

Logga in på Azure

Innan du utför några åtgärder med Azure måste du logga in på Azure och ange den prenumeration som har behörighet att anropa tjänsten. Använd kommandona az login och az account set –s <Sub ID or Name> för det här ändamålet. Mer information om den här processen finns här: Logga in med Azure CLI. Använd antingen alternativet logga in interaktivt eller logga in med autentiseringsuppgifter på kommandoraden.

Skapa ett lagringskonto och en blobcontainer

Din netlist-fil måste laddas upp till en Azure Storage Blob-container för åtkomst av attesteringstjänsten.

Mer information om hur du skapar kontot, en container och laddar upp din netlist som en blob till containern finns i Snabbstart: Skapa, ladda ned och lista blobar med Azure CLI.

Du kan också använda Azure-portalen för detta.

Ladda upp netlist-filen till Azure Blob Storage

Det finns flera sätt att kopiera filen. ett exempel med cmdleten az storage upload visas nedan. Az-kommandona körs på både Linux och Windows. Du kan välja valfritt namn för "blob"-namnet men se till att behålla xclbin tillägget.

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

Köra attesteringsskripten

Om du vill köra skripten måste du ange namnet på ditt lagringskonto, namnet på blobcontainern där netlist-filen lagras och namnet på netlist-filen. Du måste också skapa en signatur för delad åtkomst för tjänsten (SAS) som ger läs-/skrivåtkomst till containern (inte netlist). Denna SAS används av attesteringstjänsten för att göra en lokal kopia av din netlist-fil och för att skriva tillbaka de resulterande utdatafilerna för valideringsprocessen till containern.

En översikt över signaturer för delad åtkomst finns här med specifik information om tjänstens SAS som är tillgänglig här. Sidan Service SAS innehåller en viktig varning för att skydda den genererade SAS. Läs varningen för att förstå behovet av att skydda SAS från skadlig eller oavsiktlig användning.

Du kan generera en SAS för din container med hjälp av cmdleten az storage container generate-sas. Ange en förfallotid i UTC-format som är minst några timmar efter sändningstiden. cirka 6 timmar ska vara mer än tillräckligt.

Om du vill använda virtuella kataloger måste du inkludera kataloghierarkin som en del av containerargumentet. Om du till exempel har en container med namnet "netlists" och har en virtuell katalog med namnet "image1" som innehåller netlist-bloben, anger du "netlists/image1" som containernamn. Lägg till ytterligare katalognamn för att ange en djupare hierarki.

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

Kontrollera statusen för din sändning

Attesteringstjänsten returnerar orkestrerings-ID:t för din sändning. Sändningsskripten börjar automatiskt övervaka sändningen genom avsökning för slutförande. Orkestrerings-ID:t är det primära sättet för oss att granska vad som hände med din inlämning, så behåll det om du har problem. Som referenspunkter tar attesteringen cirka 30 minuter att slutföra för en liten netlist-fil (300 MB i storlek); en fil på 1,6 GB tog en timme.

Du kan anropa skriptet Monitor-Validation.ps1 när som helst för att hämta status och resultat av attesteringen, vilket ger orkestrerings-ID:t som ett argument:

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

Du kan också skicka EN HTTP-begäran till attesteringstjänstens slutpunkt:

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

Begärandetexten ska innehålla ditt prenumerations-ID, klientorganisations-ID och orkestrerings-ID för din attesteringsbegäran:

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

Steg efter validering

Tjänsten skriver tillbaka sina utdata till containern. Om valideringspasset lyckas har containern den ursprungliga netlist-filen (abc.xclbin), en fil med bitströmmen (abc.bit.xclbin), en fil som identifierar den privata platsen för den lagrade bitströmmen (abc.azure.xclbin) och fyra loggfiler: en för startprocessen (abc-log.txt) och en var för de tre parallella faser som utför valideringen. Dessa heter *logPhaseX.txt där X är ett tal för fasen. Azure.xclbin används på den virtuella datorn för att signalera uppladdningen av din verifierade avbildning till U250.

Om verifieringen misslyckades skrivs en fel-*.txt fil som anger vilket steg som misslyckades. Kontrollera även loggfilerna om felloggen anger att attesteringen misslyckades. När du kontaktar oss för support måste du inkludera alla dessa filer som en del av supportbegäran tillsammans med orkestrerings-ID:t.

Du kan använda Azure-portalen för att skapa din container samt ladda upp din netlist och ladda ned bitströms- och loggfilerna. Att skicka en attesteringsbegäran och övervaka dess förlopp via portalen stöds inte just nu och måste göras via skript enligt beskrivningen ovan.