| 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)) | |