Delen via


FPGA-attestation voor Azure NP-Series-VM's (preview)

Van toepassing op: ✔️ Linux-VM's ✔️ Windows-VM's ✔️ Flexibele schaalsets ✔️ Uniforme 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 met de gevalideerde installatiekopieën (bitstream genoemd) dat 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 stappen we over op Vitis 2022.1. De wijziging moet transparant zijn voor de meeste gebruikers. Zodra uw ontwerpen zijn 'getest' met behulp van 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 op de huidige marketplace-installatiekopieën 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 werkten met Vitis 2020.2 met betrekking tot BUFCE_LEAF mislukte attestation. Meer informatie vindt u hier: Xilinx AR 75980 UltraScale/UltraScale+ BRAM: CLOCK_DOMAIN = Common Mode scheefheidscontroles.

Vereisten

U hebt een Azure-abonnement en een Azure Storage-account nodig. Het abonnement geeft 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 kan worden uitgevoerd in Windows en Linux. PowerShell kan worden uitgevoerd op 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 deze in te dienen bij de Attestation-service. Ga naar https://aka.ms/AzureFPGAAttestationPreview om toegang aan te vragen.

Uw ontwerp bouwen voor Attestation

De favoriete Xilinx-toolset voor bouwontwerpen is Vitis 2022.1. Netlist-bestanden die zijn gemaakt met een eerdere versie van de toolset en 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 van de Xilinx Alveo lounge.

U moet het volgende argument opnemen voor Vitis (v++ cmd-lijn) 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 met Azure uitvoert, moet u zich aanmelden bij Azure en het abonnement instellen dat is gemachtigd om de service aan te roepen. Gebruik de az login opdrachten en az account set –s <Sub ID or Name> voor dit doel. Meer informatie over dit proces wordt hier beschreven: Aanmelden met Azure CLI. Gebruik de optie interactief aanmelden of aanmelden met 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 de 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 zowel Linux als 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 downloaden

De validatiescripts kunnen worden gedownload van de volgende Azure Storage Blob-container:

https://fpgaattestation.blob.core.windows.net/validationscripts/validate.zip

Het zip-bestand heeft twee PowerShell-scripts, één om te verzenden en het andere om te controleren, terwijl het derde bestand een bash-script is dat beide functies uitvoert.

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 de service maken die lees-/schrijftoegang verleent tot uw container (niet de netlist). Deze SAS wordt gebruikt door de Attestation-service 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 voor meer informatie over de noodzaak om de SAS te beschermen tegen schadelijk of onbedoeld gebruik.

U kunt een SAS voor uw container genereren met behulp van de cmdlet az storage container generate-sas. Geef een verlooptijd op in UTC-indeling die ten minste enkele uren na het tijdstip van indiening 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 de 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

De status van uw inzending controleren

De Attestation-service retourneert de indelings-id van uw inzending. De inzendingsscripts beginnen automatisch met het bewaken van de inzending door te peilen naar voltooiing. De indelings-id is de primaire manier voor ons om te controleren wat er is gebeurd met uw inzending, dus bewaar dat voor 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 Monitor-Validation.ps1-script 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-aanvraag na de aanvraag 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 uitvoer van de service wordt teruggeschreven 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) identificeert en vier logboekbestanden: één voor het opstartproces (abc-log.txt) en één voor de drie parallelle fasen die de validatie uitvoeren. Deze hebben de naam *logPhaseX.txt waarbij X een getal voor de fase is. De azure.xclbin wordt op uw VM gebruikt om aan te geven dat uw gevalideerde installatiekopieën naar de U250 worden geüpload.

Als de validatie is mislukt, wordt een fout-*.txt-bestand geschreven dat aangeeft welke stap is mislukt. Controleer ook de logboekbestanden als het foutenlogboek aangeeft 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 de 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 bewaken van de voortgang ervan via de portal wordt op dit moment niet ondersteund en moet worden uitgevoerd via scripts zoals hierboven beschreven.