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