Spec-Zone.ru › CMake 3.19

ГРУППЫ_РЕСУРСОВ

Новое в версии 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–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.19/prop_test/RESOURCE_GROUPS.html

Spec-Zone.ru

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