Spaces:
Runtime error
Runtime error
from config import update_device_command | |
def parse_base_code(contents, debug = False): | |
import re | |
indexes = [m.start() for m in re.finditer('#####', contents)] | |
assert len(indexes) % 2 == 0 | |
# split to span | |
spans = [] | |
# spans.append(contents[:indexes[0]]) | |
for i in range(len(indexes)): | |
if i != len(indexes) - 1: | |
spans.append(contents[indexes[i]:indexes[i+1]]) | |
# spans.append(contents[indexes[-1]:]) | |
spans_with_type = [ | |
] | |
for span in spans: | |
if "setup" in span: | |
spans_with_type.append((span, "setup")) | |
elif "loop" in span: | |
spans_with_type.append((span, "loop")) | |
elif "main" in span: | |
spans_with_type.append((span, "command")) | |
else: | |
spans_with_type.append((span, "other")) | |
spans_with_type_added_device_control = [] | |
for span, type_ in spans_with_type: | |
if type_ == "setup": | |
spans_with_type_added_device_control.append(( | |
"""cd $(cd "$(dirname "$0")";pwd); source gpu_utility.sh\n\n""" | |
, "device_control")) | |
spans_with_type_added_device_control.append((span, type_)) | |
spans_with_type_added_device_control.append(("""date_stamp=`date '+%Y-%m-%d-%H'`\nlog_dir="logs/$exp_name/$date_stamp"\nmkdir -p $log_dir\n""", "logging")) | |
# spans_with_type_added_device_control.append((gpu_env, "device_control")) | |
# spans_with_type_added_device_control.append((update_device_func, "device_control")) | |
elif type_ == "loop": | |
spans_with_type_added_device_control.append((span, type_)) | |
elif type_ == "command": | |
spans_with_type_added_device_control.append((update_device_command, "device_control")) | |
span_remove_the_first_part = span[span.index("\n"):] | |
if not debug: | |
spans_with_type_added_device_control.append((f"\n\ncommand=\"\"\"{span_remove_the_first_part}\"\"\"\n", type_)) | |
run_command = "eval nohup $command" | |
run_command += " > $log_dir/$RANDOM$RANDOM.log 2>&1 &" | |
run_command += "\n\n\n" | |
spans_with_type_added_device_control.append((run_command, type_)) | |
else: | |
spans_with_type_added_device_control.append( | |
(f"{span_remove_the_first_part}\n", type_) | |
) | |
sleep_command = "sleep $sleeptime\n\n" | |
spans_with_type_added_device_control.append((sleep_command, type_)) | |
else: | |
spans_with_type_added_device_control.append((span, type_)) | |
spans_without_type = [span for span, type_ in spans_with_type_added_device_control] | |
spans_without_type_str = "".join(spans_without_type) | |
return spans_without_type_str |