FPGA-attestation voor vm's uit de Azure NP-serie (preview)
Van toepassing op: ✔️ Virtuele Linux-machines voor Windows-VM's ✔️ ✔️ Flexibele schaalsets Uniform-schaalsets ✔️
De FPGA Attestation-service voert een reeks validaties uit op een ontwerpcontrolepuntbestand (een 'netlist' genoemd) dat wordt gegenereerd door de Xilinx-toolset en produceert een bestand dat de gevalideerde installatiekopieën bevat (een 'bitstream' genoemd) die kan worden geladen op de Xilinx U250 FPGA-kaart in een VM uit de NP-serie.
Nieuws
De huidige attestation-service gebruikt Vitis 2021.1 van Xilinx, op 26 september 2022, gaan we overstappen op Vitis 2022.1, de wijziging moet transparant zijn voor de meeste gebruikers. Zodra uw ontwerpen zijn "getest" met Vitis 2022.1, moet u overstappen op XRT2022.1. Xilinx heeft nieuwe marketplace-installatiekopieën gepubliceerd op basis van XRT 2022.1. Houd er rekening mee dat de huidige ontwerpen die al zijn getest op Vitis 2020.2 of 2021.1, werken aan de huidige marketplace-installatiekopieën voor implementatie en nieuwe installatiekopieën op basis van XRT2022.1
Als onderdeel van de overstap naar 2021.1 heeft Xilinx een nieuwe DRC geïntroduceerd die van invloed kan zijn op sommige ontwerpen die eerder op Vitis 2020.2 werkt met betrekking tot BUFCE_LEAF mislukte attestation, voor meer informatie hier: Xilinx AR 75980 UltraScale/UltraScale+ BRAM: CLOCK_DOMAIN = Common Mode scheefcontroles.
Vereisten
U hebt een Azure-abonnement en een Azure Storage-account nodig. Het abonnement biedt u toegang tot Azure en het opslagaccount wordt gebruikt voor het opslaan van uw netlist- en uitvoerbestanden van de Attestation-service.
We bieden PowerShell- en Bash-scripts om attestation-aanvragen in te dienen. De scripts maken gebruik van Azure CLI, die kunnen worden uitgevoerd in Windows en Linux. PowerShell kan worden uitgevoerd in Windows, Linux en macOS.
Azure CLI downloaden (vereist)
PowerShell voor Windows, Linux en macOS downloaden (alleen voor PowerShell-scripts)
U moet uw tenant- en abonnements-id gemachtigd hebben om te verzenden naar de attestation-service. Bezoek https://aka.ms/AzureFPGAAttestationPreview om toegang aan te vragen.
Uw ontwerp bouwen voor attestation
De favoriete Xilinx toolset voor het bouwen van ontwerpen is Vitis 2022.1. Netlist-bestanden die zijn gemaakt met een eerdere versie van de toolset en die nog steeds compatibel zijn met 2022.1 kunnen worden gebruikt. Zorg ervoor dat u de juiste shell hebt geladen om mee te bouwen. De momenteel ondersteunde versie is xilinx_u250_gen3x16_xdma_2_1_202010_1
. De ondersteuningsbestanden kunnen worden gedownload uit de Xilinx Alveo lounge.
U moet het volgende argument toevoegen aan Vitis (v++ cmd line) om een xclbin
bestand te maken dat een netlist bevat in plaats van een bitstream.
--advanced.param compiler.acceleratorBinaryContent=dcp
Aanmelden bij Azure
Voordat u bewerkingen uitvoert met Azure, moet u zich aanmelden bij Azure en het abonnement instellen dat is geautoriseerd om de service aan te roepen. Gebruik hiervoor de az login
en az account set –s <Sub ID or Name>
opdrachten. Meer informatie over dit proces wordt hier beschreven: Aanmelden met Azure CLI. Gebruik de aanmelding interactief of meld u aan met de optie referenties op de opdrachtregel.
Een opslagaccount en blobcontainer maken
Uw netlist-bestand moet worden geüpload naar een Azure Storage Blob-container voor toegang door de Attestation-service.
Zie quickstart: Blobs maken, downloaden en vermelden met Azure CLI voor meer informatie over het maken van het account, een container en het uploaden van uw netlist als blob naar die container.
U kunt hiervoor ook Azure Portal gebruiken.
Uw netlist-bestand uploaden naar Azure Blob Storage
Er zijn verschillende manieren om het bestand te kopiëren; hieronder ziet u een voorbeeld van de cmdlet az storage upload. De az-opdrachten worden uitgevoerd in Linux en Windows. U kunt een willekeurige naam kiezen voor de naam van de blob, maar zorg ervoor dat u de xclbin
extensie behoudt.
az storage blob upload --account-name <storage account to receive netlist> --container-name <blob container name> --name <blob filename> --file <local file with netlist>
De attestation-scripts uitvoeren
Als u de scripts wilt uitvoeren, moet u de naam van uw opslagaccount opgeven, de naam van de blobcontainer waarin het netlist-bestand is opgeslagen en de naam van het netlist-bestand. U moet ook een Sas (Shared Access Signature) voor service maken die lees-/schrijftoegang verleent aan uw container (niet de netlist). Deze SAS wordt door de attestation-service gebruikt om een lokale kopie van uw netlist-bestand te maken en de resulterende uitvoerbestanden van het validatieproces terug te schrijven naar uw container.
Hier vindt u een overzicht van handtekeningen voor gedeelde toegang met specifieke informatie over de service-SAS die hier beschikbaar is. De pagina Service-SAS bevat een belangrijke waarschuwing over het beveiligen van de gegenereerde SAS. Lees de waarschuwing om inzicht te krijgen in de noodzaak om de SAS te beschermen tegen kwaadwillend of onbedoeld gebruik.
U kunt een SAS genereren voor uw container met behulp van de cmdlet az storage container generate-sas. Geef een verlooptijd op in UTC-indeling die ten minste een paar uur na de indieningstijd ligt; ongeveer 6 uur moet meer dan voldoende zijn.
Als u virtuele mappen wilt gebruiken, moet u de maphiërarchie opnemen als onderdeel van het containerargument. Als u bijvoorbeeld een container met de naam 'netlists' hebt en een virtuele map met de naam 'image1' hebt die de netlist-blob bevat, geeft u 'netlists/image1' op als containernaam. Voeg eventuele extra mapnamen toe om een diepere hiërarchie op te geven.
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
Controleren op de status van uw inzending
De Attestation-service retourneert de indelings-id van uw inzending. De inzendingsscripts beginnen automatisch met het bewaken van de inzending door te peilen voor voltooiing. De indelings-id is de primaire manier om te controleren wat er met uw inzending is gebeurd. Houd dit dus bij het geval u een probleem ondervindt. Als referentiepunten duurt attestation ongeveer 30 minuten voor een klein netlist-bestand (300 MB groot); Een bestand van 1,6 GB duurde een uur.
U kunt het script Monitor-Validation.ps1 op elk gewenst moment aanroepen om de status en resultaten van attestation op te halen, waarbij u de indelings-id als argument opgeeft:
.\Monitor-Validation.ps1 -OrchestrationId <orchestration ID>
U kunt ook een HTTP-postaanvraag indienen bij het attestation-service-eindpunt:
https://fpga-attestation.azurewebsites.net/api/ComputeFPGA_HttpGetStatus
De aanvraagbody moet uw abonnements-id, tenant-id en indelings-id van uw attestation-aanvraag bevatten:
{
"OrchestrationId": "<orchestration ID>",
"ClientSubscriptionId": "<your subscription ID>",
"ClientTenantId": "<your tenant ID>"
}
Stappen na validatie
De service schrijft de uitvoer terug naar uw container. Als de validatie is geslaagd, heeft uw container het oorspronkelijke netlist-bestand (abc.xclbin), een bestand met de bitstream (abc.bit.xclbin), een bestand dat de privélocatie van uw opgeslagen bitstream (abc.azure.xclbin) en vier logboekbestanden identificeert: één voor het opstartproces (abc-log.txt) en één voor de drie parallelle fasen die de validatie uitvoeren. Deze worden *logPhaseX.txt genoemd waarbij X een getal is voor de fase. De azure.xclbin wordt op uw VIRTUELE machine gebruikt om het uploaden van uw gevalideerde installatiekopieën naar de U250 te signaleren.
Als de validatie is mislukt, wordt er een fout-*.txt-bestand geschreven dat aangeeft welke stap is mislukt. Controleer ook de logboekbestanden als in het foutenlogboek wordt aangegeven dat attestation is mislukt. Wanneer u contact met ons opneemt voor ondersteuning, moet u al deze bestanden opnemen als onderdeel van de ondersteuningsaanvraag, samen met de indelings-id.
U kunt Azure Portal gebruiken om uw container te maken en uw netlist te uploaden en de bitstream- en logboekbestanden te downloaden. Het indienen van een attestation-aanvraag en het controleren van de voortgang ervan via de portal wordt op dit moment niet ondersteund en moet worden uitgevoerd via scripts zoals hierboven beschreven.