Spec-Zone.ru › CMake 3.31

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 слота с одного GPU. Содержимое второго описания — gpus:4,crypto_chips:2. В этом описании не указано количество групп, поэтому предполагается значение по умолчанию 1. Эта единственная группа требует 4 слота с одного GPU и 2 слота с одного криптографического чипа. В общей сложности для этого теста указано 3 группы ресурсов, каждая со своими уникальными требованиями.

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

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

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

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

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

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

Spec-Zone.ru

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