Skip to content

Commit 4d71f28

Browse files
committed
fix: tpulang no_save mode block all log prob
- no_save, quiet compile wont block subsequent logs Change-Id: I6038803ddf14e71408444c6f930035169de9fe0e
1 parent dda1596 commit 4d71f28

2 files changed

Lines changed: 63 additions & 10 deletions

File tree

include/tpu_mlir/Dialect/Top/Transforms/Passes.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def Init : Pass<"init", "ModuleOp"> {
2525
"chip frequance">,
2626
Option<"weight_in_mem", "weight_in_mem", "bool", /*default=*/"false",
2727
"whether to save weight in memory instead of hard disk.">,
28-
Option<"level", "level", "uint64_t", /*default=*/"",
28+
Option<"level", "level", "int64_t", /*default=*/"",
2929
"log level">,
3030
];
3131
}

python/utils/mlir_shell.py

Lines changed: 62 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,71 @@
2525
import re
2626
import signal
2727
import psutil
28+
from contextlib import contextmanager
29+
import ctypes
2830

2931
# from typing import TextIO
3032
# from utils.tpuc_cmd_builder import TpucCommandBuilder
3133

3234

35+
@contextmanager
36+
def suppress_output():
37+
import sys
38+
import os
39+
import tempfile
40+
import time
41+
42+
original_stdout_fd = sys.stdout.fileno()
43+
original_stderr_fd = sys.stderr.fileno()
44+
original_stdout_copy = os.dup(original_stdout_fd)
45+
original_stderr_copy = os.dup(original_stderr_fd)
46+
47+
temp_stdout = tempfile.NamedTemporaryFile(mode='w+', delete=False)
48+
temp_stderr = tempfile.NamedTemporaryFile(mode='w+', delete=False)
49+
temp_stdout_name = temp_stdout.name
50+
temp_stderr_name = temp_stderr.name
51+
temp_stdout.close()
52+
temp_stderr.close()
53+
54+
try:
55+
temp_stdout_fd = os.open(temp_stdout_name, os.O_WRONLY)
56+
temp_stderr_fd = os.open(temp_stderr_name, os.O_WRONLY)
57+
os.dup2(temp_stdout_fd, original_stdout_fd)
58+
os.dup2(temp_stderr_fd, original_stderr_fd)
59+
os.close(temp_stdout_fd)
60+
os.close(temp_stderr_fd)
61+
yield
62+
finally:
63+
sys.stdout.flush()
64+
sys.stderr.flush()
65+
66+
try:
67+
libc = ctypes.CDLL("libc.so.6")
68+
libc.fflush(None)
69+
time.sleep(0.05)
70+
except Exception:
71+
pass
72+
73+
os.dup2(original_stdout_copy, original_stdout_fd)
74+
os.dup2(original_stderr_copy, original_stderr_fd)
75+
76+
os.close(original_stdout_copy)
77+
os.close(original_stderr_copy)
78+
79+
try:
80+
with open(temp_stdout_name, 'r+') as f:
81+
f.truncate(0)
82+
with open(temp_stderr_name, 'r+') as f:
83+
f.truncate(0)
84+
os.remove(temp_stdout_name)
85+
os.remove(temp_stderr_name)
86+
except Exception:
87+
pass
88+
89+
sys.stdout.flush()
90+
sys.stderr.flush()
91+
92+
3393
def _parse_timeout(timeout_str):
3494
if not timeout_str:
3595
return None
@@ -1079,23 +1139,16 @@ def origin_mlir_txt_to_bmodel(*,
10791139
mlir_txt = converter.get_mlir_txt()
10801140
weight_option = "weight_in_mem=True"
10811141
if log_level == "quiet":
1082-
options.insert(0, f'--init="{weight_option}"')
1083-
with open(os.devnull, "w") as devnull:
1084-
os.dup2(devnull.fileno(), sys.stdout.fileno())
1085-
os.dup2(devnull.fileno(), sys.stderr.fileno())
1086-
try:
1142+
options.insert(0, f'--init="{weight_option} level=-1"')
1143+
with suppress_output():
10871144
pymlir.run_pass_pipeline(mlir_txt, options)
1088-
finally:
1089-
os.dup2(sys.__stdout__.fileno(), sys.stdout.fileno())
1090-
os.dup2(sys.__stderr__.fileno(), sys.stderr.fileno())
10911145
else:
10921146
if log_level == "simple":
10931147
options = [opt for opt in options if not opt.startswith('--init')]
10941148
options.insert(0, f'--init="{weight_option} level=1"')
10951149
elif log_level == "only-layer-group":
10961150
options = [opt for opt in options if not opt.startswith('--init')]
10971151
options.insert(0, f'--init="{weight_option} level=2"')
1098-
# pymlir.debug(["layer-group","LayerGroupUtil"]) #todo
10991152
else:
11001153
options.insert(0, f'--init="{weight_option}"')
11011154
print("options: ", options)

0 commit comments

Comments
 (0)