В этом документе описывается роль политик планировщика в среде выполнения параллелизма. Политика планировщика управляет стратегией , которую планировщик использует при управлении задачами. Например, рассмотрим приложение, которое требует выполнение некоторых задач с THREAD_PRIORITY_NORMAL и других задач с THREAD_PRIORITY_HIGHEST. Можно создать два экземпляра планировщика: один задает политику ContextPriority как THREAD_PRIORITY_NORMAL, а второй определяет ту же политику как THREAD_PRIORITY_HIGHEST.
Использование политики планировщика позволяет разделять доступные ресурсы для обработки и назначать каждому планировщику фиксированный набор ресурсов. Например, рассмотрим параллельный алгоритм, который не масштабируется за пределами четырех процессоров. Вы можете создать политику планировщика, которая ограничивает задачи, чтобы одновременно использовать не более четырех процессоров.
Шайпұл
Исполняющая среда с параллелизмом предоставляет планировщик по умолчанию. Поэтому не требуется создавать его в приложении. Так как планировщик задач помогает точно настроить производительность приложений, рекомендуется начать с библиотеки параллельных шаблонов (PPL) или библиотеки асинхронных агентов, если вы не знакомы со средой выполнения параллелизма.
Перечисление concurrency::P olicyElementKey определяет ключи политики, связанные с планировщиком задач. В следующей таблице описываются ключи политики и значение по умолчанию, используемое средой выполнения для каждого из них.
Значение unsigned int , указывающее минимальное количество ресурсов параллелизма, используемых планировщиком.
1
TargetOversubscriptionFactor
Значение unsigned int , указывающее количество потоков, выделяемых каждому ресурсу обработки.
1
LocalContextCacheSize
Значение unsigned int , указывающее максимальное количество контекстов, которые можно кэшировать в локальной очереди каждого виртуального процессора.
8
ContextStackSize
Значение unsigned int , указывающее размер стека в килобайтах для резервирования для каждого контекста.
0 (используйте размер стека по умолчанию)
ContextPriority
Значение int , указывающее приоритет потока для каждого контекста. Это может быть любое значение, которое можно передать в SetThreadPriority или INHERIT_THREAD_PRIORITY.
Обратите внимание , что эта политика ProgressFeedbackDisabled не задана, так как она зарезервирована для использования средой выполнения.
ProgressFeedbackEnabled
Каждый планировщик использует собственную политику при планировании задач. Политики, связанные с одним планировщиком, не влияют на поведение других планировщиков. Кроме того, после создания объекта нельзя изменить политику планировщика Scheduler .
Маңызды
Используйте только политики планировщика для управления атрибутами для потоков, создаваемых средой выполнения. Не изменяйте сходство или приоритет потоков, создаваемых средой выполнения, поскольку это может привести к неопределенному поведению.
Среда выполнения создает планировщик по умолчанию, если вы не создаете его явным образом. Если вы хотите использовать планировщик по умолчанию в приложении, но вы хотите указать политику для использования планировщика, вызовите метод параллелизма::Scheduler::SetDefaultSchedulerPolicy перед планированием параллельной работы. Если метод не вызывается Scheduler::SetDefaultSchedulerPolicy , среда выполнения использует значения политики по умолчанию из таблицы.
Azure HPC — это специально разработанная облачная возможность для рабочей нагрузки HPC и ИИ, использующая современные отраслевые процессоры и обмен данными по сети InfiniBand для обеспечения максимальной производительности, масштабируемости и ценности приложений. Azure HPC позволяет реализовывать инновации, повышать продуктивность и развивать гибкость бизнеса за счет высокодоступного набора технологий HPC и ИИ с возможностью их динамического распределения в соответствии с изменением коммерческих и техническ