共用方式為


Azure NP 系列 VM 的 FPGA 證明 (預覽版)

適用於: ✔️ Linux VM ✔️ Windows VM ✔️ 彈性擴展集 ✔️ 統一擴展集

FPGA 證明服務會在由 Xilinx 工具組產生的設計檢查點檔案 (稱為「netlist」) 上執行一系列的驗證並產生檔案,其中包含的已驗證映射 (名為「bitstream」) 可載入 NP 系列 VM 中的 Xilinx U250 FPGA 卡。

注意

新聞

目前的證明服務是使用西林克斯的Vitis 2021.1,2022年9月26日,我們將移至Vitis 2022.1。 變更對大多數使用者而言應該是透明的。 使用 Vitis 2022.1「證明」設計後,請移至 XRT2022.1。 Xilinx 以 XRT 2022.1 為基礎發佈了新的市集映像。 請注意,目前的設計已在 Vitis 2020.2 或 2021.1 上證明,可在目前的部署市集映像和以 XRT2022.1 為基礎的新映射上運作

在移至 2021.1 期間,Xilinx 引進了一個新的 DRC,可能會影響先前在 Vitis 2020.2 上處理有關BUFCE_LEAF 失敗證明的一些設計,如需詳細資訊,請參閱此處:Xilinx AR 75980 UltraScale/UltraScale+ BRAM: CLOCK_DOMAIN = 通用模式扭曲檢查

必要條件

您需要 Azure 訂用帳戶和 Azure 儲存體 帳戶。 訂用帳戶可讓您存取 Azure,並使用儲存體帳戶來保存證明服務的 netlist 和輸出檔案。

我們提供 PowerShell 和 Bash 指令碼來提交證明要求。 指令碼會使用可在 Windows 和 Linux 上執行的 Azure CLI。 PowerShell 可以在 Windows、Linux 和 macOS 上執行。

Azure CLI 下載 (必要)

適用於 Windows、Linux 和 macOS 的 PowerShell (僅適用於 PowerShell 指令碼下載)

您必須將租用戶和訂用帳戶標識碼授權提交至證明服務。 若要要求存取,請寄送電子郵件至 https://aka.ms/AzureFPGAAttestationPreview

建置您的證明設計

建置設計的首選 Xilinx 工具組是 Vitis 2022.1。 可以使用以舊版工具組建立,且仍與 2022.1 相容的 Netlist 檔案。 請確定您已載入要建置的正確殼層。 目前支援的版本為 xilinx_u250_gen3x16_xdma_2_1_202010_1。 您可以從 Xilinx Alveo lounge 下載支援檔案。

您必須將下列引數包含在 Vitis (v++ Cmd 行),才能建置包含 netlist 而非 bitstream 的 xclbin 檔案。

--advanced.param compiler.acceleratorBinaryContent=dcp

登入 Azure

使用 Azure 執行任何作業之前,您必須先登入 Azure,並設定授權呼叫服務的訂用帳戶。 針對此目的使用 az loginaz account set –s <Sub ID or Name> 命令。 此程式的詳細資訊記載於此處:使用 Azure CLI 登入。 在命令列上使用互動方式登入使用認證登入選項。

建立儲存體帳戶 Blob 容器

您的 netlist 檔案必須上傳至 Azure 儲存體 Blob 容器,以供證明服務存取。

如需建立帳戶、容器,以及將 netlist 上傳為該容器的詳細資訊,請參閱快速入門:使用 Azure CLI 建立、下載和列出 Blob

您也可以使用此 Azure 入口網站。

將您的 netlist 檔案上傳至 Azure Blob 儲存體

有數種方式可以複製檔案;使用 az storage upload Cmdlet 的範例如下所示。 az 命令會在 Linux 和 Windows 上執行。 您可以選擇「blob」名稱的任何名稱,但請務必保留 xclbin 延伸模組。

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

執行證明指令碼

若要執行指令碼,您必須提供儲存體帳戶的名稱、儲存 netlist 檔案的 Blob 容器名稱,以及 netlist 檔案的名稱。 此外,您必須建立服務共用存取簽章 (SAS),以授與容器的讀取/寫入存取權(而非 netlist)。 證明服務會使用此 SAS 來製作 netlist 檔案的本機複本,並將驗證程式產生的輸出檔案寫回容器。

您可以在這裡取得共用存取簽章的概觀,其中包含這裡提供的服務 SAS 的特定資訊。 [服務 SAS] 頁面包含保護所產生 SAS 的重要警告。 請閱讀警告,以瞭解為保護 SAS 不受惡意或非預期使用的需求。

您可以使用 az storage container generate-sas Cmdlet,為您的容器產生 SAS。 以 UTC 格式指定到期時間,該格式至少超過提交時間的小時;約 6 小時應綽綽有餘。

如果您想要使用虛擬目錄,您必須在容器引數中包含目錄階層。 例如,如果您有名為「netlists」的容器,而且有名稱為「image1」的虛擬目錄,其中包含 netlist blob,您需要指定「netlists/image1」作為容器名稱。 新增任何額外的目錄名稱,以指定更詳細的階層。

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

檢查提交的狀態

證明服務會傳回您提交的協調流程識別碼。 提交指令碼會自動透過輪詢完成來開始監視提交。 協調流程識別碼是我們檢閱提交發生狀況的主要方式,因此,請保留該識別碼以防萬一。 作為參考點,小型 netlist 檔案 (大小為 300 MB)的證明大約需要 30 分鐘才能完成;大小為 1.6 GB 的檔案需要一小時的時間。

您可以隨時呼叫 Monitor-Validation.ps1 指令碼,以取得證明的狀態和結果,並提供協調流程識別碼作為引數:

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

或者,您可以將 HTTP 張貼要求提交至證明服務端點:

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

要求本文應包含證明要求的訂用帳戶識別碼、租用戶識別碼和協調流程識別碼:

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

POST 驗證步驟

服務會將其輸出寫入回您的容器。 如果成功通過驗證,您的容器將會有原始 netlist 檔案 (abc.xclbin)、具有 bitstream 的檔案 (abc.bit.xclbin)、可識別預存位元資料流私人位置的檔案 (abc.azure.xclbin),以及四個記錄檔:一個用於啟動程式 (abc-log.txt),其他分別用於執行驗證的三個平行階段。 這些項目的名稱為 *logPhaseX.txt,其中 X 是階段的數字。 azure.xclbin 會用於您的 VM,以發出將已驗證映像上傳至 U250 的訊號。

如果驗證失敗,則會寫入 error-*.txt 檔案,指出哪個步驟失敗。 此外,如果錯誤記錄檔指出證明失敗,也請檢查記錄檔。 與我們連絡以取得支援時,請務必在支援要求中包含所有這些檔案,以及協調流程識別碼。

您可以使用 Azure 入口網站來建立容器,以及上傳 netlist 並下載位元資料流和記錄檔。 目前不支援透過入口網站提交證明要求並監視其進度,而且必須透過上述指令碼來完成。