Spec-Zone.ru › CMake 3.22

RESOURCE_GROUPS

Новое в версии 3.16.

Укажите ресурсы, необходимые для теста, сгруппированные таким образом, чтобы это было осмысленно для теста. См. распределение ресурсов для получения дополнительной информации о том, как эта свойство интегрируется в функцию распределения ресурсов CTest.

Свойство RESOURCE_GROUPS — это список, разделённый точками с запятой описаний групп. Каждая запись состоит из необязательного количества описаний групп, за которыми следует ряд требований к ресурсам для этих групп. Эти требования (и количество групп) разделяются запятыми. Требования к ресурсам состоят из названия типа ресурса, за которым следует двоеточие и целое положительное число, указывающее количество слотов, требуемых на одном ресурсе данного типа.

Свойство RESOURCE_GROUPS сообщает CTest о том, какие ресурсы, сгруппированные осмысленно для теста, ожидается использовать тесту. Сам тест должен прочитать переменные среды, чтобы определить, какие ресурсы были выделены каждой группе. Например, каждая группа может соответствовать процессу, который тест запустит при выполнении.

Рассмотрим следующий пример:

add_test(NAME MyTest COMMAND MyExe)
set_property(TEST MyTest PROPERTY RESOURCE_GROUPS
  "2,gpus:2"
  "gpus:4,crypto_chips:2")

В этом примере есть два описания групп (неявно разделенные точкой с запятой). Содержание первого описания — 2,gpus:2. Это описание определяет 2 группы, каждая из которых требует 2 слота с одного графического процессора. Содержание второго описания — gpus:4,crypto_chips:2. В этом описании не указано количество групп, поэтому предполагается значение по умолчанию 1. Эта единственная группа требует 4 слота с одного графического процессора и 2 слота с одной криптографической микросхемы. Всего для этого теста указано 3 группы ресурсов, каждая со своими уникальными требованиями.

Обратите внимание, что количество слотов после типа ресурса определяет слоты с одного экземпляра ресурса. Если группа ресурсов может позволить получать слоты из разных экземпляров одного и того же ресурса, она может указать это, разделив спецификацию на несколько требований по одному слоту. Например:

add_test(NAME MyTest COMMAND MyExe)
set_property(TEST MyTest PROPERTY RESOURCE_GROUPS
  "gpus:1,gpus:1,gpus:1,gpus:1")

В этом случае единственная группа ресурсов указывает, что ей требуется четыре слота графического процессора, каждый из которых может исходить из отдельных графических процессоров (хотя это не обязательно; CTest может всё же назначить слоты с одного графического процессора.)

Когда CTest устанавливает переменные среды для теста, он назначает номер группы на основе описания группы, начиная с 0 слева и с номера группы минус 1 справа. Например, в примере выше две группы в первом описании имели бы идентификаторы 0 и 1, а единственная группа во втором описании имела бы идентификатор 2.

Как свойство RESOURCE_GROUPS, так и RESOURCE_LOCK служат аналогичным целям, но они различаются и ортогональны. Ресурсы, указанные с помощью RESOURCE_GROUPS, не влияют на RESOURCE_LOCK, и наоборот. В то время как RESOURCE_LOCK — это более простое свойство, которое используется для блокировки одного глобального ресурса, RESOURCE_GROUPS — это более расширенное свойство, которое позволяет нескольким тестам одновременно использовать несколько ресурсов одного типа, указывая свои потребности в мельчайших деталях.

© 2000–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.22/prop_test/RESOURCE_GROUPS.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API