Spec-Zone.ru › CMake 3.20

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.20/prop_test/RESOURCE_GROUPS.html

Spec-Zone.ru

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