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–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/prop_test/RESOURCE_GROUPS.html