Аттестация ППВМ для виртуальных машин Azure серии NP (предварительная версия)

Применимо к: ✔️ Виртуальные машины Linux ✔️ Виртуальные машины Windows ✔️ Универсальные масштабируемые наборы

Служба аттестации ППВМ выполняет ряд проверок в файле контрольных точек проекта (называемом "список соединений"), созданном набором инструментов Xilinx, и создает файл, содержащий проверенный образ ("битовый поток"), который можно загрузить на карту ППВМ Xilinx U250 в виртуальной машине серии NP.

Новости

Текущая служба аттестации использует Vitis 2021.1 от Xilinx. 26 сентября 2022 г. мы перейдем на Vitis 2022.1. Изменение должно быть прозрачным для большинства пользователей. После аттестации проектов с помощью Vitis 2022.1 следует перейти на XRT2022.1. Компания Xilinx опубликовала новые образы Marketplace на основе XRT 2022.1. Обратите внимание, что текущие проекты, уже аттестованные в Vitis 2020.2 или 2021.1, будут работать с текущими образами развертывания Marketplace, а также с новыми образами на основе XRT2022.1.

В рамках перехода на2021.1 Xilinx представила новое DRC, которое может повлиять на некоторые проекты, ранее работающие на Vitis 2020.2 в отношении сбоя аттестации BUFCE_LEAF. Дополнительные сведения см. Xilinx AR 75980 UltraScale/UltraScale+ BRAM: CLOCK_DOMAIN =: CLOCK_DOMAIN = проверки отклонений обычного режима.

Предварительные условия

Потребуются подписка Azure и учетная запись службы хранилища Azure. Подписка предоставляет доступ к Azure, а учетная запись хранения используется для хранения списка соединений и выходных файлов службы аттестации.

Для отправки запросов аттестации мы предоставляем сценарии PowerShell и bash. В скриптах используется Azure CLI, который может работать в ОС Windows и Linux. PowerShell поддерживается в Windows, Linux и macOS.

Скачивание Azure CLI (обязательно)

Скачивание PowerShell для Windows, Linux и macOS (только для скриптов PowerShell)

Для отправки в службу аттестации необходимо, чтобы ваш клиент и идентификатор подписки были авторизованы. Чтобы запросить доступ, посетите https://aka.ms/AzureFPGAAttestationPreview.

Создание проекта для аттестации

Предпочтительный набор инструментов Xilinx для строительных проектов — Vitis 2022.1. Можно использовать файлы netlist, созданные с помощью более ранней версии набора инструментов и совместимые с версией 2022.1. Убедитесь, что для сборки загружена правильная оболочка. В текущий момент поддерживается версия xilinx_u250_gen3x16_xdma_2_1_202010_1. Файлы поддержки можно скачать с ресурса Xilinx Alveo.

Чтобы создать файл xclbin, содержащий список соединений вместо битового потока, необходимо передать следующий аргумент в Vitis (командная строка v++).

--advanced.param compiler.acceleratorBinaryContent=dcp

Вход в Azure

Перед выполнением каких-либо операций с Azure необходимо войти в Azure и настроить подписку, имеющую права вызова службы. Для этой цели используйте команды az login и az account set –s <Sub ID or Name>. Дополнительные сведения об этом процессе приведены здесь: Вход с помощью Azure CLI. Используйте в командной строке параметр Войти в интерактивном режиме или Войти с учетными данными.

Создание учетной записи хранения и контейнера BLOB-объектов

Чтобы получить доступ к службе аттестации, необходимо отправить файл списка соединений в контейнер BLOB-объектов хранилища Azure.

Дополнительные сведения о создании учетной записи, контейнере и отправке списка netlist в качестве BLOB-объекта в этот контейнер см. в кратком руководстве: создание, скачивание и перечисление BLOB-объектов с помощью Azure CLI.

Для этого также можно использовать портал Azure.

Отправка файла списка соединений в хранилище BLOB-объектов Azure

Существует несколько способов скопировать файл. Ниже приведен пример использования командлета отправки в хранилище az. Команды 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>

Скачивание скриптов аттестации

Скрипты проверки можно скачать из следующего контейнера BLOB-объектов хранилища Azure:

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

ZIP-файл содержит два сценария PowerShell: один для отправки, а другой — для отслеживания. Третий файл представляет собой скрипт bash, выполняющий обе функции.

Выполнение скриптов аттестации

Чтобы выполнить скрипты, необходимо указать имя учетной записи хранения, имя контейнера BLOB-объектов, в котором хранится файл списка соединений, и имя файла списка соединений. Также потребуется создать подписанный URL-адрес (SAS) службы, предоставляющий доступ на чтение и запись к контейнеру (не к списку соединений). Этот подписанный URL-адрес используется службой аттестации для создания локальной копии файла списка соединений и записи результирующих выходных файлов процесса проверки обратно в контейнер.

Общие сведения о подписанных URL-адресах с конкретной информацией о подписанном URL-адресе службы см. здесь. Страница подписанного URL-адреса службы содержит важное предупреждение о защите созданного подписанного URL-адреса. Прочтите предупреждение, чтобы понять необходимость защиты подписанного URL-адреса от злоумышленного использования или использования не по назначению.

Подписанный URL-адрес для контейнера можно создать с помощью командлета generate-sas контейнера хранилища az. Укажите время истечения срока действия в формате UTC, которое как минимум на несколько часов позже времени отправки. Запаздывание 6 часов более, чем достаточно.

Если нужно использовать виртуальные каталоги, необходимо включить иерархию каталогов как часть аргумента контейнера. Например, при наличии контейнера с именем netlists и виртуального каталога с именем Image1, содержащего 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

Проверка состояния отправки

Служба аттестации возвратит идентификатор оркестрации отправки. Скрипты отправки автоматически начинают отслеживать отправку, опрашивая на предмет завершения. Идентификатор оркестрации является для нас основным способом проверки того, что произошло с отправкой, поэтому сохраните его на случай возможной проблемы. Для справки, аттестация занимает около 30 минут для небольшого файла списка соединений (объемом 300 МБ), для файла объемом 1,6 ГБ потребовался один час.

В любой момент можно вызвать скрипт Monitor-Validation.ps1, чтобы получить состояние и результаты аттестации, указав в качестве аргумента идентификатор оркестрации.

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

Либо можно отправить запрос HTTP POST в конечную точку службы аттестации.

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

Текст запроса должен содержать идентификатор подписки, идентификатор клиента и идентификатор оркестрации для запроса аттестации.

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

Действия после проверки

Служба запишет выходные данные обратно в ваш контейнер. Если проверка прошла успешно, ваш контейнер будет содержать исходный файл списка соединений (abc.xclbin), файл с битовым потоком (abc.bit.xclbin), файл, определяющий частное расположение сохраненного битового потока (abc.azure.xclbin) и четыре файла журналов: один для процесса запуска (abc-log.txt) и по одному для трех параллельных этапов выполнения проверки. Они называются *logPhaseX.txt где X — это номер этапа. Файл azure.xclbin используется на виртуальной машине, чтобы сообщить о передаче проверенного образа в U250.

Если проверка закончилась неудачей, записывается файл error-*.txt, указывающий на этап, на котором произошел сбой. Также проверьте файлы журналов, если журнал ошибок указывает на сбой аттестации. При обращении к нам за поддержкой обязательно включите все эти файлы в запрос на поддержку вместе с идентификатором оркестрации.

Можно использовать портал Azure, чтобы создать контейнер, а также передать список соединений и скачать файлы битового потока и журналов. Отправка запроса аттестации и мониторинг его хода выполнения, используя портал, в настоящее время не поддерживаются и должны выполняться с помощью скриптов, как описано выше.