FPGA-Nachweis für Azure-VMs der NP-Serie (Vorschau)

Gilt für: ✔️ Linux-VMs ✔️ Windows-VMs ✔️ Flexible Skalierungsgruppen ✔️ Einheitliche Skalierungsgruppen

Beim FPGA-Nachweisdienst wird eine Reihe von Überprüfungen einer Entwurfsprüfpunkt-Datei (als „netlist“ bezeichnet) durchgeführt, die mit dem Xilinx-Toolset generiert wird. Darüber hinaus wird eine Datei mit dem überprüften Image (als „Bitstream“ bezeichnet) erstellt, die auf einer VM der NP-Serie auf die Xilinx U250 FPGA-Karte geladen werden kann.

Neuigkeiten

Der aktuelle Nachweisdienst verwendet Vitis 2021.1 von Xilinx. Am 26. September 2022 wird auf Vitis 2022.1 umgestellt, die Änderung sollte für die meisten Benutzer transparent sein. Sobald Ihre Entwürfe über Vitis 2022.1 „bestätigt“ wurden, sollten Sie zu XRT2022.1 wechseln. Xilinx hat neue Marktplatzbilder basierend auf XRT 2022.1 veröffentlicht. Beachten Sie, dass aktuelle Designs, die bereits für Vitis 2020.2 oder 2021.1 bestätigt wurden, mit den aktuellen Marketplace-Bereitstellungsimages sowie den neuen Images basierend auf XRT2022.1 funktionieren.

Als Teil der Umstellung auf 2021.1 hat Xilinx ein neues DRC eingeführt, das einige Designs betreffen könnte, die zuvor an Vitis 2020.2 in Bezug auf BUFCE_LEAF-Fehlerbescheinigungen gearbeitet haben. Weitere Einzelheiten finden Sie hier: Xilinx AR 75980 UltraScale/UltraScale+ BRAM: CLOCK_DOMAIN = Common Mode skew checks.

Voraussetzungen

Sie benötigen ein Azure-Abonnement und ein Azure Storage-Konto. Über das Abonnement haben Sie Zugriff auf Azure, und das Speicherkonto wird verwendet, um Ihre netlist-Datei und die Ausgabedateien des Nachweisdiensts zu speichern.

Wir stellen PowerShell- und Bash-Skripts zum Übermitteln von Nachweisanforderungen bereit. Die Skripts verwenden die Azure-Befehlszeilenschnittstelle, die unter Windows und Linux ausgeführt werden kann. PowerShell kann unter Windows, Linux und macOS ausgeführt werden.

Azure CLI-Download (erforderlich)

PowerShell-Download für Windows, Linux und macOS (nur für PowerShell-Skripts)

Sie müssen Ihre Mandanten- und Abonnement-ID für die Übermittlung an den Nachweisdienst autorisieren lassen. Sie können den Zugriff unter https://aka.ms/AzureFPGAAttestationPreview anfordern.

Erstellen eines Entwurfs für den Nachweis

Das bevorzugte Xilinx-Toolset zum Entwickeln von Entwürfen ist Vitis 2022.1. Netlist-Dateien, die mit einer früheren Version des Toolsets erstellt wurden und weiterhin mit 2022,1 kompatibel sind, können verwendet werden. Vergewissern Sie sich, dass Sie die richtige Shell für die Entwicklung geladen haben. Die zurzeit unterstützte Version ist xilinx_u250_gen3x16_xdma_2_1_202010_1. Die unterstützenden Dateien können aus der Xilinx Alveo Lounge heruntergeladen werden.

Sie müssen das folgende Argument in Vitis (v++-Befehlszeile) einschließen, um eine xclbin-Datei zu erstellen, die anstelle einer Bitstream-Datei eine Entwurfsprüfpunkt-Datei enthält.

--advanced.param compiler.acceleratorBinaryContent=dcp

Protokollieren in Azure

Bevor Sie Vorgänge mit Azure durchführen können, müssen Sie sich bei Azure anmelden und das Abonnement festlegen, das zum Aufrufen des Diensts autorisiert ist. Verwenden Sie hierfür die Befehle az login und az account set –s <Sub ID or Name>. Weitere Informationen zu diesem Vorgang finden Sie hier: Mit Azure CLI anmelden. Verwenden Sie in der Befehlszeile entweder die Option zum interaktiven Anmelden oder zum Anmelden mit Anmeldeinformationen.

Erstellen eines Speicherkontos und Blobcontainers

Ihre netlist-Datei muss in einen Azure Storage-Blobcontainer hochgeladen werden, damit der Nachweisdienst darauf zugreifen kann.

Weitere Informationen zum Erstellen des Kontos und eines Containers sowie zum Hochladen Ihrer netlist-Datei als Blob in diesen Container finden Sie unter Schnellstart: Erstellen, Herunterladen und Auflisten von Blobs mit Azure CLI.

Sie können hierfür auch das Azure-Portal verwenden.

Hochladen Ihrer netlist-Datei in Azure-Blobspeicher

Es gibt mehrere Möglichkeiten, die Datei zu kopieren. Unten ist ein Beispiel mit Verwendung des Cmdlets „az storage upload“ angegeben. Die az-Befehle können unter Linux und unter Windows ausgeführt werden. Sie können einen beliebigen Namen als Blobnamen wählen, aber Sie müssen die Erweiterung xclbin beibehalten.

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

Ausführen der Nachweisskripts

Zum Ausführen der Skripts müssen Sie den Namen Ihres Speicherkontos, den Namen des Blobcontainers, in dem die netlist-Datei gespeichert ist, und den Namen der netlist-Datei angeben. Darüber hinaus müssen Sie eine Shared Access Signature (SAS) für den Dienst erstellen, mit der Ihrem Container (nicht der netlist) Lese- und Schreibzugriff gewährt wird. Diese SAS wird vom Nachweisdienst genutzt, um eine lokale Kopie Ihrer netlist-Datei zu erstellen und die sich ergebenden Ausgabedateien des Überprüfungsprozesses in Ihren Container zurückzuschreiben.

Eine Übersicht über Shared Access Signatures finden Sie hier und spezifische Informationen zur Dienst-SAS finden Sie hier. Die Seite zur Dienst-SAS enthält einen wichtigen Warnhinweis, in dem es um den Schutz der generierten SAS geht. Lesen Sie sich den Warnhinweis durch, um sich darüber zu informieren, warum es erforderlich ist, die SAS vor böswilliger oder unbeabsichtigter Nutzung zu schützen.

Sie können eine SAS für Ihren Container generieren, indem Sie das Cmdlet „az storage container generate-sas“ verwenden. Geben Sie einen Ablaufzeitpunkt im UTC-Format an, der mindestens einige Stunden nach dem Zeitpunkt der Übermittlung liegt. Sechs Stunden sollten in diesem Fall mehr als ausreichend sein.

Falls Sie virtuelle Verzeichnisse verwenden möchten, müssen Sie die Verzeichnishierarchie in das Containerargument einbinden. Wenn Sie beispielsweise über einen Container mit dem Namen „netlists“ und ein virtuelles Verzeichnis mit dem Namen „image1“ verfügen, in dem das netlist-Blob enthalten ist, geben Sie „netlists/image1“ als Containernamen an. Fügen Sie ggf. weitere Verzeichnisnamen an, um eine Hierarchie mit mehreren Ebenen anzugeben.

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

Überprüfen des Status Ihrer Übermittlung

Der Nachweisdienst gibt die Orchestrierungs-ID Ihrer Übermittlung zurück. Die Übermittlungsskripts beginnen automatisch mit der Überwachung der Übermittlung, indem die Informationen zum Abschluss abgerufen werden. Die Orchestrierungs-ID ist das wichtigste Mittel, mit dem wir überprüfen können, was mit Ihrer Übermittlung passiert ist. Bewahren Sie die ID daher für den Fall, dass ein Problem auftritt, gut auf. Richtwerte für die Dauer des Nachweisvorgangs sind ca. 30 Minuten für eine kleine netlist-Datei (300 MB) und eine Stunde für eine Datei mit einer Größe von 1,6 GB.

Sie können jederzeit das Skript „Monitor-Validation.ps1“ aufrufen, um den Status und die Ergebnisse des Nachweisvorgangs zu erhalten. Geben Sie hierzu die Orchestrierungs-ID als Argument an:

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

Alternativ können Sie die HTTP POST-Anforderung auch an den Endpunkt des Nachweisdiensts übermitteln:

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

Der Anforderungstext sollte die Abonnement-ID, Mandanten-ID und Orchestrierungs-ID Ihrer Nachweisanforderung enthalten:

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

Schritte nach der Überprüfung

Der Dienst schreibt seine Ausgabe zurück in Ihren Container. Wenn der Überprüfungsvorgang erfolgreich ist, enthält Ihr Container die ursprüngliche netlist-Datei (abc.xclbin), eine Datei mit dem Bitstream (abc.bit.xclbin), eine Datei mit der Angabe des privaten Speicherorts Ihres gespeicherten Bitstreams (abc.azure.xclbin) sowie vier Protokolldateien: eine für den Startprozess (abc-log.txt) und jeweils eine für die drei parallelen Phasen, in denen die Überprüfung erfolgt. Diese haben den Namen „*logPhaseX.txt“, wobei „X“ für die Nummer der Phase steht. Die Datei „azure.xclbin“ wird auf Ihrer VM verwendet, um das Hochladen Ihres überprüften Images auf die U250 zu signalisieren.

Falls die Überprüfung nicht erfolgreich war, wird die Datei „error-*.txt“ geschrieben. Sie enthält den Hinweis, in welchem Schritt ein Fehler aufgetreten ist. Überprüfen Sie auch die Protokolldateien, falls im Fehlerprotokoll angezeigt wird, dass der Nachweisvorgang nicht erfolgreich war. Achten Sie bei einer Kontaktaufnahme mit unserem Support darauf, dass Sie alle diese Dateien sowie die Orchestrierungs-ID in die Supportanfrage einfügen.

Sie können das Azure-Portal nutzen, um Ihren Container zu erstellen, und Sie können Ihre netlist hoch- und die Bitstream- und Protokolldateien herunterladen. Die Übermittlung einer Nachweisanforderung und die Überwachung des Status über das Portal werden derzeit nicht unterstützt. Hierfür müssen Sie die oben beschriebenen Skripts verwenden.