Zaświadczenie FPGA dla maszyn wirtualnych platformy Azure NP-Series (wersja zapoznawcza)

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux Maszyny ✔️ wirtualne z systemem Windows — elastyczne zestawy ✔️ ✔️ skalowania

Usługa zaświadczania FPGA wykonuje serię weryfikacji w pliku punktu kontrolnego projektu (nazywanym "netlistą") wygenerowaną przez zestaw narzędzi Xilinx i tworzy plik zawierający zweryfikowany obraz (nazywany "bitstream"), który można załadować na kartę FPGA Xilinx U250 na maszynie wirtualnej serii NP.

Wiadomości

Bieżąca usługa zaświadczania korzysta z oprogramowania Vitis 2021.1 z Xilinx, 26 września 2022 r., przejdziemy do programu Vitis 2022.1, zmiana powinna być niewidoczna dla większości użytkowników. Gdy projekty są "certyfikowane" przy użyciu Vitis 2022.1, należy przejść do XRT2022.1. Xilinx opublikował nowe obrazy z witryny Marketplace na podstawie XRT 2022.1. Należy pamiętać, że bieżące projekty już testowane na Vitis 2020.2 lub 2021.1 będą działać na bieżących obrazach platformy handlowej wdrożenia, a także nowych obrazach opartych na XRT2022.1

W ramach przejścia do 2021.1 Xilinx wprowadził nowy drC, który może mieć wpływ na niektóre projekty wcześniej działające na Vitis 2020.2 dotyczące BUFCE_LEAF zaświadczania, aby uzyskać więcej szczegółów tutaj: Xilinx AR 75980 UltraScale/UltraScale+ BRAM: CLOCK_DOMAIN = Kontrole niesymetryczności trybu wspólnego.

Wymagania wstępne

Potrzebna będzie subskrypcja platformy Azure i konto usługi Azure Storage. Subskrypcja zapewnia dostęp do platformy Azure, a konto magazynu jest używane do przechowywania plików netlist i wyjściowych usługi zaświadczania.

Udostępniamy skrypty programu PowerShell i powłoki Bash do przesyłania żądań zaświadczania. Skrypty używają interfejsu wiersza polecenia platformy Azure, który można uruchomić w systemach Windows i Linux. Program PowerShell może działać w systemach Windows, Linux i macOS.

Pobieranie interfejsu wiersza polecenia platformy Azure (wymagane)

Pobieranie programu PowerShell dla systemów Windows, Linux i macOS (tylko dla skryptów programu PowerShell)

Musisz mieć swój identyfikator dzierżawy i subskrypcji autoryzowany do przesyłania do usługi zaświadczania. Odwiedź stronę https://aka.ms/AzureFPGAAttestationPreview , aby zażądać dostępu.

Tworzenie projektu na potrzeby zaświadczania

Preferowany zestaw narzędzi Xilinx do projektowania budynków to Vitis 2022.1. Można używać plików netlist utworzonych przy użyciu starszej wersji zestawu narzędzi i nadal zgodnych z wersją 2022.1. Upewnij się, że załadowano poprawną powłokę do kompilacji. Obecnie obsługiwana wersja to xilinx_u250_gen3x16_xdma_2_1_202010_1. Pliki pomocy technicznej można pobrać z salonu Xilinx Alveo.

Aby utworzyć xclbin plik zawierający listę sieciową zamiast strumienia bitowego, należy dołączyć następujący argument do języka Vitis (v++ cmd line).

--advanced.param compiler.acceleratorBinaryContent=dcp

Logowanie się do platformy Azure

Przed wykonaniem jakichkolwiek operacji na platformie Azure należy zalogować się do platformy Azure i ustawić subskrypcję, która jest autoryzowana do wywołania usługi. az login W tym celu użyj poleceń iaz account set –s <Sub ID or Name>. Więcej informacji na temat tego procesu opisano tutaj: Zaloguj się przy użyciu interfejsu wiersza polecenia platformy Azure. Użyj opcji logowania interakcyjnego lub zaloguj się przy użyciu poświadczeń w wierszu polecenia.

Tworzenie konta magazynu i kontenera obiektów blob

Plik netlist musi zostać przekazany do kontenera obiektów blob usługi Azure Storage w celu uzyskania dostępu do usługi zaświadczania.

Aby uzyskać więcej informacji na temat tworzenia konta, kontenera i przekazywania listy netlist jako obiektu blob do tego kontenera, zobacz Szybki start: tworzenie, pobieranie i wyświetlanie listy obiektów blob za pomocą interfejsu wiersza polecenia platformy Azure.

W tym celu można również użyć Azure Portal.

Przekazywanie pliku netlist do usługi Azure Blob Storage

Istnieje kilka sposobów kopiowania pliku; poniżej przedstawiono przykład użycia polecenia cmdlet az storage upload. Polecenia az są uruchamiane zarówno w systemach Linux, jak i Windows. Możesz wybrać dowolną nazwę "obiektu blob", ale pamiętaj, aby zachować xclbin rozszerzenie.

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

Pobieranie skryptów zaświadczania

Skrypty weryfikacji można pobrać z następującego kontenera obiektów blob usługi Azure Storage:

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

Plik zip ma dwa skrypty programu PowerShell, jeden do przesłania, a drugi do monitorowania, podczas gdy trzeci plik jest skryptem powłoki bash, który wykonuje obie funkcje.

Uruchamianie skryptów zaświadczania

Aby uruchomić skrypty, należy podać nazwę konta magazynu, nazwę kontenera obiektów blob, w którym jest przechowywany plik netlist i nazwę pliku netlist. Należy również utworzyć sygnaturę dostępu współdzielonego usługi ,która udziela dostępu do odczytu/zapisu do kontenera (a nie do listy netlist). Ta sygnatura dostępu współdzielonego jest używana przez usługę zaświadczania, aby utworzyć lokalną kopię pliku netlist i zapisać wynikowe pliki wyjściowe procesu weryfikacji do kontenera.

Omówienie sygnatur dostępu współdzielonego jest dostępne tutaj z określonymi informacjami o sygnaturze dostępu współdzielonego dostępne tutaj. Strona Sygnatura dostępu współdzielonego usługi zawiera ważną ostrożność dotyczącą ochrony wygenerowanej sygnatury dostępu współdzielonego. Przeczytaj ostrożność, aby zrozumieć potrzebę ochrony sygnatury dostępu współdzielonego przed złośliwym lub niezamierzonym użyciem.

Sygnaturę dostępu współdzielonego dla kontenera można wygenerować przy użyciu polecenia cmdlet az storage container generate-sas. Określ czas wygaśnięcia w formacie UTC, który jest co najmniej kilka godzin po upływie czasu przesłania; około 6 godzin powinno być więcej niż odpowiednie.

Jeśli chcesz używać katalogów wirtualnych, musisz uwzględnić hierarchię katalogów jako część argumentu kontenera. Jeśli na przykład masz kontener o nazwie "netlists" i masz katalog wirtualny o nazwie "image1", który zawiera obiekt blob listy netlist, określ wartość "netlists/image1" jako nazwę kontenera. Dołącz wszelkie dodatkowe nazwy katalogów, aby określić głębszą hierarchię.

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

Sprawdzanie stanu przesyłania

Usługa zaświadczania zwróci identyfikator aranżacji przesyłania. Skrypty przesyłania automatycznie rozpoczynają monitorowanie przesyłania przez sondowanie pod kątem ukończenia. Identyfikator orkiestracji jest podstawowym sposobem, abyśmy przejrzeli, co się stało z przesłaniem, więc zachowaj to w przypadku wystąpienia problemu. W punktach referencyjnych zaświadczenie trwa około 30 minut w przypadku małego pliku netlist (rozmiar 300 MB); plik o rozmiarze 1,6 GB trwał godzinę.

Skrypt Monitor-Validation.ps1 można wywołać w dowolnym momencie, aby uzyskać stan i wyniki zaświadczania, podając identyfikator aranżacji jako argument:

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

Alternatywnie możesz przesłać żądanie postu HTTP do punktu końcowego usługi zaświadczania:

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

Treść żądania powinna zawierać identyfikator subskrypcji, identyfikator dzierżawy i identyfikator aranżacji żądania zaświadczania:

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

Kroki po weryfikacji

Usługa zapisze dane wyjściowe z powrotem do kontenera. Jeśli przebieg weryfikacji zakończy się pomyślnie, kontener będzie miał oryginalny plik netlist (abc.xclbin), plik z bitstream (abc.bit.xclbin), plik identyfikujący prywatną lokalizację przechowywanego strumienia bitowego (abc.azure.xclbin) i cztery pliki dziennika: jeden dla procesu uruchamiania (abc-log.txt) i jeden dla trzech równoległych faz, które przeprowadzają walidację. Są to *logPhaseX.txt, gdzie X jest liczbą dla fazy. Narzędzie azure.xclbin jest używane na maszynie wirtualnej do sygnalizowania przekazywania zweryfikowanego obrazu do interfejsu U250.

Jeśli walidacja nie powiodła się, zostanie zapisany plik error-*.txt wskazujący, który krok zakończył się niepowodzeniem. Sprawdź również pliki dziennika, jeśli dziennik błędów wskazuje, że zaświadczenie nie powiodło się. Jeśli skontaktujemy się z nami w celu uzyskania pomocy technicznej, dołącz wszystkie te pliki w ramach żądania pomocy technicznej wraz z identyfikatorem aranżacji.

Za pomocą Azure Portal można utworzyć kontener, a także przekazać listę sieci i pobrać pliki bitstream i dzienników. Przesyłanie żądania zaświadczania i monitorowanie jego postępu za pośrednictwem portalu nie jest obecnie obsługiwane i należy wykonać za pośrednictwem skryptów zgodnie z powyższym opisem.