in torchx/schedulers/local_scheduler.py [0:0]
def schedule(self, dryrun_info: AppDryRunInfo[PopenRequest]) -> str:
if len(self._apps) == self._cache_size:
if not self._evict_lru():
raise IndexError(
f"App cache size ({self._cache_size}) exceeded. Increase the cache size"
)
request: PopenRequest = dryrun_info.request
app_id = request.app_id
app_log_dir = request.log_dir
assert (
app_id not in self._apps
), "no app_id collisions expected since uuid4 suffix is used"
os.makedirs(app_log_dir)
local_app = _LocalAppDef(app_id, app_log_dir)
for role_name in request.role_params.keys():
role_params = request.role_params[role_name]
role_log_dirs = request.role_log_dirs[role_name]
for replica_id in range(len(role_params)):
replica_params = role_params[replica_id]
replica_log_dir = role_log_dirs[replica_id]
os.makedirs(replica_log_dir)
replica = self._popen(
role_name,
replica_id,
replica_params,
# pyre-ignore[6] cfg type checked by runopt.resolve()
dryrun_info._cfg.get("prepend_cwd"),
)
local_app.add_replica(role_name, replica)
self._apps[app_id] = local_app
return app_id