Я использую программу MPI при ограниченных ресурсах процессора. Это включало запуск приложения, требующего 20 отдельных процессов на 12-поточном процессоре. Я запускаю его снова и снова с разными параметрами.
К концу приложения большинство из 20 процессов уже завершены, в результате чего 11 из моих 12 потоков остаются незанятыми в ожидании завершения последнего. Я хочу использовать эти незанятые ядра, чтобы начать следующую работу в очереди, не дожидаясь завершения текущей. Было бы лучше, если бы я мог уже приступить к следующей работе, когда одно ядро уже простаивает.
Крутящий момент настроен, но я должен заранее указать требования к ресурсам. Я хочу динамически распределять эти ядра ЦП, чтобы ЦП всегда был на 100%.
Если в вашем кластере / узлах включен общий режим, можно начинать следующее задание. По сути, вам нужна политика распределения узлов, но это можно сделать с помощью среды планировщика заданий (например, Torque + Moab / Maui или Slurm). Скорее всего, это невозможно с одним крутящим моментом.
Другой вариант - запускать задачи в рамках одного скрипта задания. Средство запуска задач должно быть достаточно умным, чтобы определять, какие ресурсы доступны. Это может быть написано с помощью простых сценариев задания, но может быть сложно. (можно посмотреть в Nitro или даже Condor).