import argparse import random import string import sys from watchmen import WatchClient def parse_args(in_args=None): arg_parser = argparse.ArgumentParser() arg_parser.add_argument("--task_name", type=str, required=True, help="Take Name") arg_parser.add_argument("--cuda", type=str, required=True, help="cuda to be waited") arg_parser.add_argument( "--req_gpu_num", type=int, required=False, default=1, help="request number of gpus", ) arg_parser.add_argument( "--wait", choices=["schedule", "queue", "none"], default="none", help="scheduling/queue wait", ) arg_info = arg_parser.parse_args(args=in_args) return arg_info if __name__ == "__main__": in_argv = parse_args() if in_argv.wait == "none": sys.exit(0) random_id = "-" + "".join(random.sample(string.ascii_letters + string.digits, 8)) exp_id = in_argv.task_name + random_id watch_client = WatchClient( id=exp_id, gpus=eval(f"[{in_argv.cuda}]"), server_host="localhost", server_port=62333, req_gpu_num=in_argv.req_gpu_num, mode=in_argv.wait, timeout=60, ) available_gpus = watch_client.wait() available_gpus = [str(x) for x in available_gpus] print(",".join(available_gpus))