Zaświadczenie FPGA dla maszyn wirtualnych serii NP PLATFORMy Azure (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ą") wygenerowanym przez zestaw narzędzi Xilinx i tworzy plik zawierający zweryfikowany obraz (nazywany "strumieniem bitowym"), który można załadować na kartę Xilinx U250 FPGA na maszynie wirtualnej serii NP.
Uwaga
- Ta seria maszyn wirtualnych i zaświadczenie FPGA są obecnie dostępne w wersji zapoznawczej.
- Zobacz warunki użytkowania wersji zapoznawczej | Platforma Microsoft Azure dla postanowień prawnych mających zastosowanie do funkcji platformy Azure, które są w wersji beta, wersji zapoznawczej lub w inny sposób nie zostały jeszcze wydane w wersji ogólnodostępnej.
- Zarejestruj się w publicznej wersji zapoznawczej.
Wiadomości
Bieżąca usługa zaświadczania korzysta z Vitis 2021.1 z Xilinx, 26 września 2022 r., przejdziemy do 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 środowiska XRT 2022.1. Należy pamiętać, że bieżące projekty już zaświadczyły na temat oprogramowania Vitis 2020.2 lub 2021.1, działają na bieżących obrazach witryny Marketplace wdrożenia i nowych obrazach na podstawie XRT2022.1
W ramach przejścia do 2021.1, Xilinx wprowadził nową drC, która może mieć wpływ na niektóre projekty wcześniej działające na Vitis 2020.2 w odniesieniu do BUFCE_LEAF niepowodzenie 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 jest 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że działać w systemach Windows i Linux. Program PowerShell może działać w systemach Windows, Linux i macOS.
Pobieranie interfejsu wiersza polecenia platformy Azure (wymagane)
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
Preferowanym zestawem narzędzi Xilinx do projektów budynków jest Vitis 2022.1. Można używać plików netlist, które zostały utworzone przy użyciu starszej wersji zestawu narzędzi i są nadal zgodne 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ę netlist zamiast strumienia bitowego, należy dołączyć następujący argument do wiersza Vitis (v++ cmd).
--advanced.param compiler.acceleratorBinaryContent=dcp
Logowanie się na platformie Azure
Przed wykonaniem jakichkolwiek operacji na platformie Azure należy zalogować się do platformy Azure i ustawić subskrypcję, która jest autoryzowana do wywoływania usługi. az login
W tym celu użyj poleceń i az account set –s <Sub ID or Name>
. Więcej informacji na temat tego procesu opisano tutaj: Logowanie 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
Aby uzyskać dostęp do usługi zaświadczania, plik netlist musi zostać przekazany do kontenera obiektów blob usługi Azure Storage.
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żesz również użyć witryny 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 działają zarówno w systemach Linux, jak i Windows. Możesz wybrać dowolną nazwę nazwy "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>
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, oraz nazwę pliku netlist. Ponadto należy utworzyć sygnaturę dostępu współdzielonego usługi (SAS), 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 w kontenerze.
Omówienie sygnatur dostępu współdzielonego jest dostępne tutaj z określonymi informacjami na temat sygnatur dostępu współdzielonego dostępnych 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 przesyłania; około 6 godzin powinno być więcej niż odpowiednie.
Jeśli chcesz użyć katalogów wirtualnych, musisz dołączyć 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 netlist, jako nazwę kontenera należy określić wartość "netlists/image1". Dodaj wszelkie dodatkowe nazwy katalogów, aby określić bardziej szczegółową 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 aranżacji jest podstawowym sposobem na przejrzenie tego, co się stało z przesłaniem, więc zachowaj to w przypadku wystąpienia problemu. W punktach referencyjnych ukończenie zaświadczania trwa około 30 minut dla 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 post 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 weryfikacja 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 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ą witryny Azure Portal możesz utworzyć kontener, a także przekazać listę netlist i pobrać pliki bitstream i dziennika. 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.