Ověření identity FPGA pro virtuální počítače řady Azure NP-Series (Preview)

Platí pro: ✔️ Virtuální počítače s Windows s Linuxem ✔️ ✔️ – Flexibilní škálovací sady Uniform Scale Sets ✔️

Služba ověřování FPGA provádí řadu ověření na souboru kontrolního bodu návrhu (označovaného jako "netlist") vygenerovaný sadou nástrojů Xilinx a vytvoří soubor, který obsahuje ověřenou image (označovanou jako bitstream), která se dá načíst na kartu Xilinx U250 FPGA na virtuálním počítači řady NP.

Novinky

Aktuální služba ověření identity používá Vitis 2021.1 z Xilinx, 26. září 2022, budeme přejít na Vitis 2022.1, změna by měla být transparentní pro většinu uživatelů. Jakmile jsou vaše návrhy "potvrzeny" pomocí Vitis 2022.1, měli byste přejít na XRT2022.1. Xilinx publikoval nové image marketplace založené na XRT 2022.1. Upozorňujeme, že aktuální návrhy, které již byly potvrzeny na Vitis 2020.2 nebo 2021.1, budou fungovat na aktuálních imagích marketplace nasazení a také na nových imagích založených na XRT2022.1.

V rámci přechodu na verzi 2021.1 představil Xilinx nový DRC, který by mohl ovlivnit některé návrhy dříve pracující na Vitis 2020.2 týkající se BUFCE_LEAF neúspěšné ověření identity, další podrobnosti najdete zde: Xilinx AR 75980 UltraScale/UltraScale+ BRAM: CLOCK_DOMAIN = kontroly nerovnoměrné distribuce běžných režimů.

Požadavky

Budete potřebovat předplatné Azure a účet Azure Storage. Předplatné poskytuje přístup k Azure a účet úložiště se používá k uložení netlistu a výstupních souborů služby ověření identity.

Poskytujeme skripty PowerShellu a Bash pro odesílání žádostí o ověření identity. Skripty používají Azure CLI, které se dají spustit ve Windows a Linuxu. PowerShell může běžet ve Windows, Linuxu a macOS.

Stažení Azure CLI (povinné)

Stažení PowerShellu pro Windows, Linux a macOS (jenom pro skripty PowerShellu)

K odeslání do služby ověření identity budete muset mít oprávnění vašeho tenanta a ID předplatného. Navštivte žádost https://aka.ms/AzureFPGAAttestationPreview o přístup.

Vytvoření návrhu pro ověření identity

Upřednostňovaná sada nástrojů Xilinx pro návrhy budov je Vitis 2022.1. Soubory Netlist vytvořené pomocí starší verze sady nástrojů a jsou stále kompatibilní s verzí 2022.1. Ujistěte se, že jste načetli správné prostředí pro sestavení. Aktuálně podporovaná verze je xilinx_u250_gen3x16_xdma_2_1_202010_1. Podpůrné soubory si můžete stáhnout z salonku Xilinx Alveo.

Chcete-li vytvořit xclbin soubor, který obsahuje seznam netlist místo bitstreamu, musíte do řádku Vitis (v++ cmd line) zahrnout následující argument.

--advanced.param compiler.acceleratorBinaryContent=dcp

Přihlášení k Azure

Před provedením jakýchkoli operací s Azure se musíte přihlásit k Azure a nastavit předplatné, které má oprávnění volat službu. K tomuto účelu az login použijte příkazy a az account set –s <Sub ID or Name> příkazy. Další informace o tomto procesu jsou popsané tady: Přihlaste se pomocí Azure CLI. Použijte buď interaktivní přihlášení, nebo se přihlaste pomocí možnosti přihlašovacích údajů na příkazovém řádku.

Vytvoření účtu úložiště a kontejneru objektů blob

Váš soubor netlist se musí nahrát do kontejneru objektů blob úložiště Azure pro přístup službou ověření identity.

Další informace o vytvoření účtu, kontejneru a nahrání netlistu jako objektu blob do tohoto kontejneru najdete v tématu Rychlý start: Vytvoření, stažení a výpis objektů blob pomocí Azure CLI.

K tomu můžete také použít Azure Portal.

Nahrání souboru netlist do služby Azure Blob Storage

Existuje několik způsobů, jak soubor zkopírovat; Příklad použití rutiny az storage upload je uvedený níže. Příkazy az se spouštějí v Linuxu i Ve Windows. Můžete zvolit libovolný název názvu objektu blob, ale nezapomeňte zachovat xclbin rozšíření.

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

Spuštění skriptů ověření identity

Ke spuštění skriptů budete muset zadat název účtu úložiště, název kontejneru objektů blob, ve kterém je uložený soubor netlist, a název souboru netlist. Budete také muset vytvořit sdílený přístupový podpis služby (SAS), který vašemu kontejneru uděluje přístup pro čtení a zápis (nikoli netlist). Tento SAS používá služba ověření identity k vytvoření místní kopie vašeho souboru netlist a k zápisu výsledných výstupních souborů ověřovacího procesu do kontejneru.

Tady je k dispozici přehled sdílených přístupových podpisů s konkrétními informacemi o SAS služby, které jsou zde k dispozici. Stránka SAS služby obsahuje důležité upozornění na ochranu vygenerovaného sdíleného přístupového podpisu. Přečtěte si upozornění, abyste porozuměli nutnosti chránit SAS před škodlivým nebo neúmyslným použitím.

Sas pro kontejner můžete vygenerovat pomocí rutiny az storage container generate-sas. Zadejte dobu vypršení platnosti ve formátu UTC, která je alespoň několik hodin po uplynutí doby odeslání; přibližně 6 hodin by mělo být více než adekvátní.

Pokud chcete používat virtuální adresáře, musíte do argumentu kontejneru zahrnout hierarchii adresáře. Pokud máte například kontejner s názvem netlists a máte virtuální adresář s názvem image1, který obsahuje objekt blob netlist, zadáte jako název kontejneru "netlists/image1". Pokud chcete zadat hlubší hierarchii, připojte všechny další názvy adresářů.

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

Kontrola stavu odeslání

Služba Ověření identity vrátí ID orchestrace odeslání. Skripty pro odeslání automaticky začnou monitorovat odeslání dotazováním na dokončení. ID orchestrace je primárním způsobem, jak zkontrolovat, co se stalo s vaším odesláním, takže pokud máte problém, mějte ho. Vzhledem k tomu, že ověření identity trvá přibližně 30 minut, než se dokončí malý soubor netlist (velikost 300 MB); 1,6 GB souboru trvalo hodinu.

Skript Monitor-Validation.ps1 můžete kdykoli volat, abyste získali stav a výsledky ověření identity a poskytli ID orchestrace jako argument:

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

Alternativně můžete odeslat požadavek HTTP post do koncového bodu služby ověření identity:

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

Text požadavku by měl obsahovat ID vašeho předplatného, ID tenanta a ID orchestrace vaší žádosti o ověření identity:

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

Kroky po ověření

Služba zapíše výstup zpět do kontejneru. Pokud ověření proběhne úspěšně, kontejner bude mít původní soubor netlist (abc.xclbin), soubor s bitstreamem (abc.bit.xclbin), soubor, který identifikuje privátní umístění vašeho uloženého bitstreamu (abc.azure.xclbin) a čtyři soubory protokolu: jeden pro spouštěcí proces (abc-log.txt) a jeden pro tři paralelní fáze, které provádějí ověření. Tato pole mají název *logPhaseX.txt, kde X je číslo pro fázi. Azure.xclbin se na vašem virtuálním počítači používá k nahrání ověřené image do U250.

Pokud se ověření nezdařilo, zapíše se soubor s chybou*.txt, který krok selhal. Zkontrolujte také soubory protokolu, pokud protokol chyb indikuje, že ověření se nezdařilo. Při kontaktování podpory nezapomeňte zahrnout všechny tyto soubory jako součást žádosti o podporu spolu s ID orchestrace.

Pomocí webu Azure Portal můžete vytvořit kontejner a nahrát netlist a stáhnout soubory bitstreamu a protokolu. Odeslání žádosti o ověření identity a monitorování jeho průběhu prostřednictvím portálu se v tuto chvíli nepodporuje a musí se provádět prostřednictvím skriptů, jak je popsáno výše.