RESOURCE_GROUPS
Укажите ресурсы, необходимые для теста, сгруппированные таким образом, чтобы это было осмысленно для теста. Подробнее о том, как эта свойство интегрируется в функцию распределения ресурсов 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–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.17/prop_test/RESOURCE_GROUPS.html