mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-20 21:14:14 +08:00
Fix unused Python variables outside torch/ and test/ (#136359)
Pull Request resolved: https://github.com/pytorch/pytorch/pull/136359 Approved by: https://github.com/albanD
This commit is contained in:
committed by
PyTorch MergeBot
parent
241bf047b3
commit
498a7808ff
2
.github/scripts/filter_test_configs.py
vendored
2
.github/scripts/filter_test_configs.py
vendored
@ -332,7 +332,7 @@ def process_jobs(
|
|||||||
# The job name from github is in the PLATFORM / JOB (CONFIG) format, so breaking
|
# The job name from github is in the PLATFORM / JOB (CONFIG) format, so breaking
|
||||||
# it into its two components first
|
# it into its two components first
|
||||||
current_platform, _ = (n.strip() for n in job_name.split(JOB_NAME_SEP, 1) if n)
|
current_platform, _ = (n.strip() for n in job_name.split(JOB_NAME_SEP, 1) if n)
|
||||||
except ValueError as error:
|
except ValueError:
|
||||||
warnings.warn(f"Invalid job name {job_name}, returning")
|
warnings.warn(f"Invalid job name {job_name}, returning")
|
||||||
return test_matrix
|
return test_matrix
|
||||||
|
|
||||||
|
|||||||
2
.github/scripts/runner_determinator.py
vendored
2
.github/scripts/runner_determinator.py
vendored
@ -258,7 +258,7 @@ def load_yaml(yaml_text: str) -> Any:
|
|||||||
try:
|
try:
|
||||||
data = yaml.safe_load(yaml_text)
|
data = yaml.safe_load(yaml_text)
|
||||||
return data
|
return data
|
||||||
except yaml.YAMLError as exc:
|
except yaml.YAMLError:
|
||||||
log.exception("Error loading YAML")
|
log.exception("Error loading YAML")
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
|||||||
2
.github/scripts/test_trymerge.py
vendored
2
.github/scripts/test_trymerge.py
vendored
@ -898,7 +898,7 @@ class TestBypassFailures(TestCase):
|
|||||||
repo = DummyGitRepo()
|
repo = DummyGitRepo()
|
||||||
# Check that failure is classified as flaky but still raises exception
|
# Check that failure is classified as flaky but still raises exception
|
||||||
with warnings.catch_warnings(record=True) as w, self.assertRaises(RuntimeError):
|
with warnings.catch_warnings(record=True) as w, self.assertRaises(RuntimeError):
|
||||||
rule = find_matching_merge_rule(pr, repo)
|
find_matching_merge_rule(pr, repo)
|
||||||
self.assertEqual(len(w), 1)
|
self.assertEqual(len(w), 1)
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
"1 checks failed but were likely due flakiness or broken trunk",
|
"1 checks failed but were likely due flakiness or broken trunk",
|
||||||
|
|||||||
3
.github/scripts/trymerge.py
vendored
3
.github/scripts/trymerge.py
vendored
@ -1747,7 +1747,7 @@ def get_classifications(
|
|||||||
try:
|
try:
|
||||||
print(f"From Dr.CI checkrun summary: {drci_summary}")
|
print(f"From Dr.CI checkrun summary: {drci_summary}")
|
||||||
drci_classifications = json.loads(str(drci_summary))
|
drci_classifications = json.loads(str(drci_summary))
|
||||||
except json.JSONDecodeError as error:
|
except json.JSONDecodeError:
|
||||||
warn("Invalid Dr.CI checkrun summary")
|
warn("Invalid Dr.CI checkrun summary")
|
||||||
drci_classifications = {}
|
drci_classifications = {}
|
||||||
|
|
||||||
@ -1918,7 +1918,6 @@ def do_revert_prs(
|
|||||||
dry_run: bool = False,
|
dry_run: bool = False,
|
||||||
) -> None:
|
) -> None:
|
||||||
# Prepare and push revert commits
|
# Prepare and push revert commits
|
||||||
commit_shas: List[str] = []
|
|
||||||
for commit_sha, pr in shas_and_prs:
|
for commit_sha, pr in shas_and_prs:
|
||||||
revert_msg = f"\nReverted {pr.get_pr_url()} on behalf of {prefix_with_github_url(author_login)}"
|
revert_msg = f"\nReverted {pr.get_pr_url()} on behalf of {prefix_with_github_url(author_login)}"
|
||||||
revert_msg += extra_msg
|
revert_msg += extra_msg
|
||||||
|
|||||||
2
.github/workflows/_runner-determinator.yml
vendored
2
.github/workflows/_runner-determinator.yml
vendored
@ -326,7 +326,7 @@ jobs:
|
|||||||
try:
|
try:
|
||||||
data = yaml.safe_load(yaml_text)
|
data = yaml.safe_load(yaml_text)
|
||||||
return data
|
return data
|
||||||
except yaml.YAMLError as exc:
|
except yaml.YAMLError:
|
||||||
log.exception("Error loading YAML")
|
log.exception("Error loading YAML")
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
|||||||
@ -72,7 +72,6 @@ class CoordinatorBase:
|
|||||||
print(f"Episode {ep} - ", end="")
|
print(f"Episode {ep} - ", end="")
|
||||||
|
|
||||||
n_steps = episode_steps
|
n_steps = episode_steps
|
||||||
agent_start_time = time.time()
|
|
||||||
|
|
||||||
futs = []
|
futs = []
|
||||||
for ob_rref in self.ob_rrefs:
|
for ob_rref in self.ob_rrefs:
|
||||||
|
|||||||
@ -19,7 +19,7 @@ flaky_models = {
|
|||||||
def get_field(csv, model_name: str, field: str):
|
def get_field(csv, model_name: str, field: str):
|
||||||
try:
|
try:
|
||||||
return csv.loc[csv["name"] == model_name][field].item()
|
return csv.loc[csv["name"] == model_name][field].item()
|
||||||
except Exception as e:
|
except Exception:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import pandas as pd
|
|||||||
def get_field(csv, model_name: str, field: str):
|
def get_field(csv, model_name: str, field: str):
|
||||||
try:
|
try:
|
||||||
return csv.loc[csv["name"] == model_name][field].item()
|
return csv.loc[csv["name"] == model_name][field].item()
|
||||||
except Exception as e:
|
except Exception:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -671,7 +671,7 @@ def print_summary_table(data, print_dataframe=False):
|
|||||||
col.ljust(width),
|
col.ljust(width),
|
||||||
f"gmean={gmean(cdata):.2f}x mean={cdata.mean():.3f}x",
|
f"gmean={gmean(cdata):.2f}x mean={cdata.mean():.3f}x",
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@ -3018,7 +3018,7 @@ class BenchmarkRunner:
|
|||||||
)
|
)
|
||||||
):
|
):
|
||||||
is_same = False
|
is_same = False
|
||||||
except Exception as e:
|
except Exception:
|
||||||
# Sometimes torch.allclose may throw RuntimeError
|
# Sometimes torch.allclose may throw RuntimeError
|
||||||
is_same = False
|
is_same = False
|
||||||
|
|
||||||
@ -3110,7 +3110,7 @@ class BenchmarkRunner:
|
|||||||
tol=tolerance,
|
tol=tolerance,
|
||||||
):
|
):
|
||||||
is_same = False
|
is_same = False
|
||||||
except Exception as e:
|
except Exception:
|
||||||
# Sometimes torch.allclose may throw RuntimeError
|
# Sometimes torch.allclose may throw RuntimeError
|
||||||
is_same = False
|
is_same = False
|
||||||
|
|
||||||
@ -3157,7 +3157,7 @@ class BenchmarkRunner:
|
|||||||
self.init_optimizer(name, current_device, model.parameters())
|
self.init_optimizer(name, current_device, model.parameters())
|
||||||
optimized_model_iter_fn = optimize_ctx(self.run_n_iterations)
|
optimized_model_iter_fn = optimize_ctx(self.run_n_iterations)
|
||||||
new_result = optimized_model_iter_fn(model, example_inputs)
|
new_result = optimized_model_iter_fn(model, example_inputs)
|
||||||
except Exception as e:
|
except Exception:
|
||||||
log.exception("")
|
log.exception("")
|
||||||
print(
|
print(
|
||||||
"TorchDynamo optimized model failed to run because of following error"
|
"TorchDynamo optimized model failed to run because of following error"
|
||||||
@ -3542,7 +3542,7 @@ class BenchmarkRunner:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
shutil.move("repro.py", f"{repro_dir}/{name}_repro.py")
|
shutil.move("repro.py", f"{repro_dir}/{name}_repro.py")
|
||||||
except OSError as e:
|
except OSError:
|
||||||
logging.error("Could not find repro script for model %s", name)
|
logging.error("Could not find repro script for model %s", name)
|
||||||
else:
|
else:
|
||||||
logging.info(
|
logging.info(
|
||||||
@ -4369,9 +4369,6 @@ def run(runner, args, original_dir=None):
|
|||||||
# Set translation validation on by default on CI accuracy runs.
|
# Set translation validation on by default on CI accuracy runs.
|
||||||
torch.fx.experimental._config.translation_validation = True
|
torch.fx.experimental._config.translation_validation = True
|
||||||
|
|
||||||
ci = functools.partial(
|
|
||||||
CI, args.backend, training=args.training, dynamic=args.dynamic_shapes
|
|
||||||
)
|
|
||||||
if args.ddp:
|
if args.ddp:
|
||||||
assert args.training, "DDP benchmark requires --training mode"
|
assert args.training, "DDP benchmark requires --training mode"
|
||||||
torch._dynamo.config.optimize_ddp = args.optimize_ddp_mode
|
torch._dynamo.config.optimize_ddp = args.optimize_ddp_mode
|
||||||
|
|||||||
@ -90,7 +90,7 @@ def model_iter_fn(model, example_inputs, collect_outputs=False):
|
|||||||
|
|
||||||
def get_model(args):
|
def get_model(args):
|
||||||
if args.torchbench_model:
|
if args.torchbench_model:
|
||||||
old_cwd = setup_torchbench_cwd()
|
setup_torchbench_cwd()
|
||||||
module = importlib.import_module(
|
module = importlib.import_module(
|
||||||
f"torchbenchmark.models.{args.torchbench_model}"
|
f"torchbenchmark.models.{args.torchbench_model}"
|
||||||
)
|
)
|
||||||
|
|||||||
@ -1451,7 +1451,7 @@ class DashboardUpdater:
|
|||||||
RegressionDetector(self.args).generate_comment()
|
RegressionDetector(self.args).generate_comment()
|
||||||
try:
|
try:
|
||||||
RegressionTracker(self.args).diff()
|
RegressionTracker(self.args).diff()
|
||||||
except Exception as e:
|
except Exception:
|
||||||
logging.exception("")
|
logging.exception("")
|
||||||
with open(f"{self.args.output_dir}/gh_regression.txt", "w") as gh_fh:
|
with open(f"{self.args.output_dir}/gh_regression.txt", "w") as gh_fh:
|
||||||
gh_fh.write("")
|
gh_fh.write("")
|
||||||
|
|||||||
@ -236,7 +236,6 @@ class TorchBenchmarkRunner(BenchmarkRunner):
|
|||||||
)
|
)
|
||||||
is_training = self.args.training
|
is_training = self.args.training
|
||||||
use_eval_mode = self.args.use_eval_mode
|
use_eval_mode = self.args.use_eval_mode
|
||||||
dynamic_shapes = self.args.dynamic_shapes
|
|
||||||
candidates = [
|
candidates = [
|
||||||
f"torchbenchmark.models.{model_name}",
|
f"torchbenchmark.models.{model_name}",
|
||||||
f"torchbenchmark.canary_models.{model_name}",
|
f"torchbenchmark.canary_models.{model_name}",
|
||||||
|
|||||||
@ -205,7 +205,7 @@ def bench(rnn_runners, group_name, print_json=False, sep=" ", **params):
|
|||||||
result_with_no_info = result._replace(info_fwd="None", info_bwd="None")
|
result_with_no_info = result._replace(info_fwd="None", info_bwd="None")
|
||||||
print_stderr(pretty_print(result_with_no_info, sep=sep))
|
print_stderr(pretty_print(result_with_no_info, sep=sep))
|
||||||
results[name] = result
|
results[name] = result
|
||||||
except Exception as e:
|
except Exception:
|
||||||
if not print_json:
|
if not print_json:
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
|||||||
@ -338,8 +338,8 @@ def layernorm_pytorch_lstm_creator(**kwargs):
|
|||||||
seq_len = len(input.unbind(0))
|
seq_len = len(input.unbind(0))
|
||||||
hy, cy = new_hidden
|
hy, cy = new_hidden
|
||||||
for i in range(seq_len):
|
for i in range(seq_len):
|
||||||
ln_i_output = ln_i(ln_input1)
|
ln_i(ln_input1)
|
||||||
ln_h_output = ln_h(ln_input1)
|
ln_h(ln_input1)
|
||||||
cy = ln_c(cy)
|
cy = ln_c(cy)
|
||||||
|
|
||||||
return out, (hy, cy)
|
return out, (hy, cy)
|
||||||
|
|||||||
@ -40,7 +40,7 @@ def cuda_sync(func, *args, **kwargs):
|
|||||||
class TestBenchNetwork:
|
class TestBenchNetwork:
|
||||||
# See 'modeldef' fixture, which provides the things to benchmark
|
# See 'modeldef' fixture, which provides the things to benchmark
|
||||||
def test_forward(self, modeldef, benchmark):
|
def test_forward(self, modeldef, benchmark):
|
||||||
forward_output = benchmark(cuda_sync, modeldef.forward, *modeldef.inputs)
|
benchmark(cuda_sync, modeldef.forward, *modeldef.inputs)
|
||||||
|
|
||||||
def test_backward(self, modeldef, benchmark):
|
def test_backward(self, modeldef, benchmark):
|
||||||
backward_input = modeldef.forward(*modeldef.inputs)
|
backward_input = modeldef.forward(*modeldef.inputs)
|
||||||
|
|||||||
@ -25,7 +25,7 @@ SUPPORTED_OPS = {"add_op"}
|
|||||||
|
|
||||||
|
|
||||||
def parse_op_args(op):
|
def parse_op_args(op):
|
||||||
op_list = op.split(",")
|
op_list = op.split(",") # noqa: F841
|
||||||
|
|
||||||
|
|
||||||
def print_results(result):
|
def print_results(result):
|
||||||
|
|||||||
@ -190,9 +190,9 @@ def run_once(model: Callable, inp: InputsType, task: str, v: VType, **kwargs) ->
|
|||||||
func = get_task_func(task)
|
func = get_task_func(task)
|
||||||
|
|
||||||
if v is not None:
|
if v is not None:
|
||||||
res = func(model, inp, v=v, strict=True)
|
func(model, inp, v=v, strict=True)
|
||||||
else:
|
else:
|
||||||
res = func(model, inp, strict=True)
|
func(model, inp, strict=True)
|
||||||
|
|
||||||
|
|
||||||
def run_once_functorch(
|
def run_once_functorch(
|
||||||
|
|||||||
@ -284,7 +284,6 @@ def run_benchmarks(operators, shapes):
|
|||||||
shapes = [globals()[k] for k in shapes.split(",")]
|
shapes = [globals()[k] for k in shapes.split(",")]
|
||||||
|
|
||||||
print("fuser,device,operator,shape,time")
|
print("fuser,device,operator,shape,time")
|
||||||
results = []
|
|
||||||
for shape, operator in itertools.product(shapes, operators):
|
for shape, operator in itertools.product(shapes, operators):
|
||||||
nargs = len(inspect.signature(operator).parameters)
|
nargs = len(inspect.signature(operator).parameters)
|
||||||
args = shape()
|
args = shape()
|
||||||
|
|||||||
@ -132,7 +132,6 @@ class WeightOnlyInt8Linear(torch.nn.Module):
|
|||||||
target_dtype=None,
|
target_dtype=None,
|
||||||
) -> None:
|
) -> None:
|
||||||
assert target_dtype is not None
|
assert target_dtype is not None
|
||||||
factory_kwargs = {"device": device, "dtype": dtype}
|
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.in_features = in_features
|
self.in_features = in_features
|
||||||
self.out_features = out_features
|
self.out_features = out_features
|
||||||
|
|||||||
@ -93,7 +93,6 @@ class WeightOnlyInt8Linear(torch.nn.Module):
|
|||||||
device=None,
|
device=None,
|
||||||
dtype=None,
|
dtype=None,
|
||||||
) -> None:
|
) -> None:
|
||||||
factory_kwargs = {"device": device, "dtype": dtype}
|
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.in_features = in_features
|
self.in_features = in_features
|
||||||
self.out_features = out_features
|
self.out_features = out_features
|
||||||
|
|||||||
@ -74,7 +74,7 @@ def parse_stmts(stmts: str) -> Tuple[str, str]:
|
|||||||
assert len(lines) >= 3, f"Invalid string:\n{stmts}"
|
assert len(lines) >= 3, f"Invalid string:\n{stmts}"
|
||||||
|
|
||||||
column_header_pattern = r"^Python\s{35}\| C\+\+(\s*)$"
|
column_header_pattern = r"^Python\s{35}\| C\+\+(\s*)$"
|
||||||
signature_pattern = r"^: f\((.*)\)( -> (.+))?\s*$"
|
signature_pattern = r"^: f\((.*)\)( -> (.+))?\s*$" # noqa: F841
|
||||||
separation_pattern = r"^[-]{40} | [-]{40}$"
|
separation_pattern = r"^[-]{40} | [-]{40}$"
|
||||||
code_pattern = r"^(.{40}) \|($| (.*)$)"
|
code_pattern = r"^(.{40}) \|($| (.*)$)"
|
||||||
|
|
||||||
|
|||||||
@ -6,14 +6,14 @@ import torch
|
|||||||
|
|
||||||
def bench(nt_a, nt_b, niter):
|
def bench(nt_a, nt_b, niter):
|
||||||
# Warmup
|
# Warmup
|
||||||
nt_c = nt_a.bmm(nt_b)
|
nt_a.bmm(nt_b)
|
||||||
|
|
||||||
torch.cuda.synchronize()
|
torch.cuda.synchronize()
|
||||||
start_event = torch.cuda.Event(enable_timing=True)
|
start_event = torch.cuda.Event(enable_timing=True)
|
||||||
end_event = torch.cuda.Event(enable_timing=True)
|
end_event = torch.cuda.Event(enable_timing=True)
|
||||||
start_event.record()
|
start_event.record()
|
||||||
for iter in range(niter):
|
for iter in range(niter):
|
||||||
nt_c = nt_a.bmm(nt_b)
|
nt_a.bmm(nt_b)
|
||||||
end_event.record()
|
end_event.record()
|
||||||
torch.cuda.synchronize()
|
torch.cuda.synchronize()
|
||||||
runtime = (start_event.elapsed_time(end_event)) / niter
|
runtime = (start_event.elapsed_time(end_event)) / niter
|
||||||
|
|||||||
@ -111,10 +111,9 @@ def _build_test(
|
|||||||
|
|
||||||
if tags is None:
|
if tags is None:
|
||||||
raise ValueError("Missing tags in configs")
|
raise ValueError("Missing tags in configs")
|
||||||
input_config = str(test_attrs)[1:-1].replace("'", "")
|
|
||||||
op = bench_op()
|
op = bench_op()
|
||||||
assert op is not None, "Can't create test"
|
assert op is not None, "Can't create test"
|
||||||
tensor_error_info = None
|
|
||||||
# op_name_function is a dictionary which has op_name and op_function.
|
# op_name_function is a dictionary which has op_name and op_function.
|
||||||
# an example of op_name_function is:
|
# an example of op_name_function is:
|
||||||
# {'op_name' : 'abs', 'op_function' : torch.abs}
|
# {'op_name' : 'abs', 'op_function' : torch.abs}
|
||||||
|
|||||||
@ -31,8 +31,6 @@ class LSTMBenchmark(op_bench.TorchBenchmarkBase):
|
|||||||
|
|
||||||
# The quantized.dynamic.LSTM has a bug. That's why we create a regular
|
# The quantized.dynamic.LSTM has a bug. That's why we create a regular
|
||||||
# LSTM, and quantize it later. See issue #31192.
|
# LSTM, and quantize it later. See issue #31192.
|
||||||
scale = 1.0 / 256
|
|
||||||
zero_point = 0
|
|
||||||
cell_nn = nn.LSTM(
|
cell_nn = nn.LSTM(
|
||||||
input_size=I,
|
input_size=I,
|
||||||
hidden_size=H,
|
hidden_size=H,
|
||||||
|
|||||||
@ -97,7 +97,7 @@ if __name__ == "__main__":
|
|||||||
with_stack=args.with_stack,
|
with_stack=args.with_stack,
|
||||||
use_kineto=args.use_kineto,
|
use_kineto=args.use_kineto,
|
||||||
use_cpu=not args.cuda_only,
|
use_cpu=not args.cuda_only,
|
||||||
) as prof:
|
):
|
||||||
x = workload(input_x)
|
x = workload(input_x)
|
||||||
return x
|
return x
|
||||||
|
|
||||||
|
|||||||
@ -13,14 +13,14 @@ class Basic(Benchmark):
|
|||||||
torch.save(x, "big_tensor.zip", _use_new_zipfile_serialization=use_new)
|
torch.save(x, "big_tensor.zip", _use_new_zipfile_serialization=use_new)
|
||||||
|
|
||||||
with Timer() as big2:
|
with Timer() as big2:
|
||||||
v = torch.load("big_tensor.zip")
|
torch.load("big_tensor.zip")
|
||||||
|
|
||||||
x = [torch.ones(10, 10) for i in range(200)]
|
x = [torch.ones(10, 10) for i in range(200)]
|
||||||
with Timer() as small1:
|
with Timer() as small1:
|
||||||
torch.save(x, "small_tensor.zip", _use_new_zipfile_serialization=use_new)
|
torch.save(x, "small_tensor.zip", _use_new_zipfile_serialization=use_new)
|
||||||
|
|
||||||
with Timer() as small2:
|
with Timer() as small2:
|
||||||
v = torch.load("small_tensor.zip")
|
torch.load("small_tensor.zip")
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"Big Tensors Save": big1.ms_duration,
|
"Big Tensors Save": big1.ms_duration,
|
||||||
|
|||||||
@ -56,16 +56,12 @@ def load_sparse_matrix(path, device):
|
|||||||
def gen_vector(path, device):
|
def gen_vector(path, device):
|
||||||
with open(path) as file:
|
with open(path) as file:
|
||||||
nrows, ncols, nnz = (int(el) for el in file.readline().split(", "))
|
nrows, ncols, nnz = (int(el) for el in file.readline().split(", "))
|
||||||
index_pointers = (int(el) for el in file.readline().split())
|
|
||||||
indices = (int(el) for el in file.readline().split())
|
|
||||||
return torch.randn(nrows, dtype=torch.double, device=device)
|
return torch.randn(nrows, dtype=torch.double, device=device)
|
||||||
|
|
||||||
|
|
||||||
def gen_matrix(path, device):
|
def gen_matrix(path, device):
|
||||||
with open(path) as file:
|
with open(path) as file:
|
||||||
nrows, ncols, nnz = (int(el) for el in file.readline().split(", "))
|
nrows, ncols, nnz = (int(el) for el in file.readline().split(", "))
|
||||||
index_pointers = (int(el) for el in file.readline().split())
|
|
||||||
indices = (int(el) for el in file.readline().split())
|
|
||||||
return torch.randn(nrows, ncols, dtype=torch.double, device=device)
|
return torch.randn(nrows, ncols, dtype=torch.double, device=device)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -374,7 +374,7 @@ if __name__ == "__main__":
|
|||||||
for r in range(args.repeat):
|
for r in range(args.repeat):
|
||||||
try:
|
try:
|
||||||
time_ms, performance_tflops = test_func(x, y, **meta)
|
time_ms, performance_tflops = test_func(x, y, **meta)
|
||||||
except triton.compiler.OutOfResources as msg:
|
except triton.compiler.OutOfResources:
|
||||||
print(
|
print(
|
||||||
f"op={op}[{meta_str}]({bsr_size},{k}x{n}) dtype={args.dtype} {sparsity=}(nnz={x._nnz()})"
|
f"op={op}[{meta_str}]({bsr_size},{k}x{n}) dtype={args.dtype} {sparsity=}(nnz={x._nnz()})"
|
||||||
f" blocksize={bm}x{bk} OutOfResources",
|
f" blocksize={bm}x{bk} OutOfResources",
|
||||||
|
|||||||
@ -208,7 +208,6 @@ class SimpleElementBench(benchmark.Benchmark):
|
|||||||
return "simple_element"
|
return "simple_element"
|
||||||
|
|
||||||
def memory_workload(self):
|
def memory_workload(self):
|
||||||
input_count = len(self.inputs)
|
|
||||||
if self.mode == "fwd":
|
if self.mode == "fwd":
|
||||||
sol_count = 2
|
sol_count = 2
|
||||||
algorithmic_count = 2
|
algorithmic_count = 2
|
||||||
|
|||||||
@ -136,7 +136,7 @@ def run(
|
|||||||
torch.testing.assert_close(
|
torch.testing.assert_close(
|
||||||
y_native_mha_fast, y_native_mha_slow, atol=1e-3, rtol=1e-3
|
y_native_mha_fast, y_native_mha_slow, atol=1e-3, rtol=1e-3
|
||||||
)
|
)
|
||||||
except AssertionError as e:
|
except AssertionError:
|
||||||
error_dict[entry_name] += 1
|
error_dict[entry_name] += 1
|
||||||
pprint(error_dict)
|
pprint(error_dict)
|
||||||
|
|
||||||
|
|||||||
@ -98,8 +98,6 @@ def generate_inputs(
|
|||||||
|
|
||||||
assert q_heads % kv_heads == 0
|
assert q_heads % kv_heads == 0
|
||||||
|
|
||||||
num_h_groups = q_heads // kv_heads
|
|
||||||
|
|
||||||
make_q = partial(
|
make_q = partial(
|
||||||
torch.rand, q_shape, device=device, dtype=dtype, requires_grad=requires_grad
|
torch.rand, q_shape, device=device, dtype=dtype, requires_grad=requires_grad
|
||||||
)
|
)
|
||||||
|
|||||||
@ -211,7 +211,7 @@ def run_single_experiment(config: ExperimentConfig) -> ExperimentResults:
|
|||||||
enable_flash=config.enable_flash,
|
enable_flash=config.enable_flash,
|
||||||
enable_mem_efficient=config.enable_mem_efficient,
|
enable_mem_efficient=config.enable_mem_efficient,
|
||||||
enable_cudnn=config.enable_cudnn,
|
enable_cudnn=config.enable_cudnn,
|
||||||
) as kernel_choice, torch.inference_mode() as inference_mode:
|
):
|
||||||
dropout_p = 0.0
|
dropout_p = 0.0
|
||||||
mask = None
|
mask = None
|
||||||
|
|
||||||
|
|||||||
@ -62,7 +62,6 @@ class DelayedMulTensor(_Tensor):
|
|||||||
|
|
||||||
plhs, levelslhs = self._lhs._tensor, self._lhs._levels
|
plhs, levelslhs = self._lhs._tensor, self._lhs._levels
|
||||||
prhs, levelsrhs = self._rhs._tensor, self._rhs._levels
|
prhs, levelsrhs = self._rhs._tensor, self._rhs._levels
|
||||||
new_dims = tuple(d for d in self.dims if d not in dims)
|
|
||||||
new_levels = [l for l in self._levels if l not in dims]
|
new_levels = [l for l in self._levels if l not in dims]
|
||||||
fmt = "".join(
|
fmt = "".join(
|
||||||
[
|
[
|
||||||
|
|||||||
@ -198,7 +198,6 @@ def __torch_function__(self, orig, cls, args, kwargs=empty_dict):
|
|||||||
|
|
||||||
if orig in pointwise:
|
if orig in pointwise:
|
||||||
result_levels = llist()
|
result_levels = llist()
|
||||||
arg_levels = llist()
|
|
||||||
to_expand = []
|
to_expand = []
|
||||||
for i, f in enumerate(flat_args):
|
for i, f in enumerate(flat_args):
|
||||||
if isinstance(f, TensorLike):
|
if isinstance(f, TensorLike):
|
||||||
@ -268,7 +267,6 @@ def positional(self, *dims):
|
|||||||
needs_view = True
|
needs_view = True
|
||||||
|
|
||||||
permute = list(range(len(levels)))
|
permute = list(range(len(levels)))
|
||||||
nflat = len(flat_dims)
|
|
||||||
for i, d in enumerate(flat_dims):
|
for i, d in enumerate(flat_dims):
|
||||||
try:
|
try:
|
||||||
idx = levels.index(d)
|
idx = levels.index(d)
|
||||||
|
|||||||
@ -214,10 +214,6 @@ def main():
|
|||||||
else:
|
else:
|
||||||
generator = None
|
generator = None
|
||||||
|
|
||||||
augmentations = [
|
|
||||||
transforms.RandomCrop(32, padding=4),
|
|
||||||
transforms.RandomHorizontalFlip(),
|
|
||||||
]
|
|
||||||
normalize = [
|
normalize = [
|
||||||
transforms.ToTensor(),
|
transforms.ToTensor(),
|
||||||
transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)),
|
transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)),
|
||||||
|
|||||||
@ -145,8 +145,6 @@ def loss_for_task(net, n_inner_iter, x_spt, y_spt, x_qry, y_qry):
|
|||||||
|
|
||||||
|
|
||||||
def train(db, net, device, meta_opt, epoch, log):
|
def train(db, net, device, meta_opt, epoch, log):
|
||||||
params = dict(net.named_parameters())
|
|
||||||
buffers = dict(net.named_buffers())
|
|
||||||
n_train_iter = db.x_train.shape[0] // db.batchsz
|
n_train_iter = db.x_train.shape[0] // db.batchsz
|
||||||
|
|
||||||
for batch_idx in range(n_train_iter):
|
for batch_idx in range(n_train_iter):
|
||||||
|
|||||||
@ -653,7 +653,6 @@ def gen_inplace_or_view_type(
|
|||||||
) -> None:
|
) -> None:
|
||||||
# NOTE: see Note [Sharded File] at the top of the VariableType.cpp
|
# NOTE: see Note [Sharded File] at the top of the VariableType.cpp
|
||||||
# template regarding sharding of the generated files.
|
# template regarding sharding of the generated files.
|
||||||
num_shards = 2
|
|
||||||
|
|
||||||
fm = FileManager(install_dir=out, template_dir=template_path, dry_run=False)
|
fm = FileManager(install_dir=out, template_dir=template_path, dry_run=False)
|
||||||
fm.write_sharded(
|
fm.write_sharded(
|
||||||
|
|||||||
@ -1319,8 +1319,6 @@ def emit_single_dispatch(
|
|||||||
else:
|
else:
|
||||||
schema_comment = f"// aten::{f.func}"
|
schema_comment = f"// aten::{f.func}"
|
||||||
|
|
||||||
deprecated = "[deprecated] " if ps.deprecated else ""
|
|
||||||
|
|
||||||
# dispatch lambda signature
|
# dispatch lambda signature
|
||||||
name = cpp.name(f.func)
|
name = cpp.name(f.func)
|
||||||
lambda_formals = ", ".join(
|
lambda_formals = ", ".join(
|
||||||
|
|||||||
@ -46,7 +46,6 @@ from torchgen.api.types import (
|
|||||||
BaseCppType,
|
BaseCppType,
|
||||||
BaseCType,
|
BaseCType,
|
||||||
Binding,
|
Binding,
|
||||||
DispatcherSignature,
|
|
||||||
intArrayRefT,
|
intArrayRefT,
|
||||||
iTensorListRefT,
|
iTensorListRefT,
|
||||||
ListCType,
|
ListCType,
|
||||||
@ -1535,9 +1534,6 @@ def emit_body(
|
|||||||
f: NativeFunction, input_base: str, unpacked_args: Sequence[str]
|
f: NativeFunction, input_base: str, unpacked_args: Sequence[str]
|
||||||
) -> str:
|
) -> str:
|
||||||
"""Dispatch call via function in a namespace or method on Tensor."""
|
"""Dispatch call via function in a namespace or method on Tensor."""
|
||||||
dispatcher_sig = DispatcherSignature.from_schema(f.func)
|
|
||||||
dispatcher_exprs = dispatcher_sig.exprs()
|
|
||||||
|
|
||||||
# code-generated autograd kernels plumb and recompute dispatch keys directly through the kernel for performance.
|
# code-generated autograd kernels plumb and recompute dispatch keys directly through the kernel for performance.
|
||||||
# Ops also always have a function variant of the redispatch API.
|
# Ops also always have a function variant of the redispatch API.
|
||||||
# See Note [Plumbing Keys Through The Dispatcher] for details.
|
# See Note [Plumbing Keys Through The Dispatcher] for details.
|
||||||
|
|||||||
@ -269,7 +269,7 @@ def main(args: list[str]) -> None:
|
|||||||
native_yaml_path = os.path.join(options.source_path, "native/native_functions.yaml")
|
native_yaml_path = os.path.join(options.source_path, "native/native_functions.yaml")
|
||||||
tags_yaml_path = os.path.join(options.source_path, "native/tags.yaml")
|
tags_yaml_path = os.path.join(options.source_path, "native/tags.yaml")
|
||||||
parsed_yaml = parse_native_yaml(native_yaml_path, tags_yaml_path)
|
parsed_yaml = parse_native_yaml(native_yaml_path, tags_yaml_path)
|
||||||
native_functions, backend_indices = (
|
native_functions, _backend_indices = (
|
||||||
parsed_yaml.native_functions,
|
parsed_yaml.native_functions,
|
||||||
parsed_yaml.backend_indices,
|
parsed_yaml.backend_indices,
|
||||||
)
|
)
|
||||||
|
|||||||
@ -95,7 +95,7 @@ class CMake:
|
|||||||
print(" ".join(command))
|
print(" ".join(command))
|
||||||
try:
|
try:
|
||||||
check_call(command, cwd=self.build_dir, env=env)
|
check_call(command, cwd=self.build_dir, env=env)
|
||||||
except (CalledProcessError, KeyboardInterrupt) as e:
|
except (CalledProcessError, KeyboardInterrupt):
|
||||||
# This error indicates that there was a problem with cmake, the
|
# This error indicates that there was a problem with cmake, the
|
||||||
# Python backtrace adds no signal here so skip over it by catching
|
# Python backtrace adds no signal here so skip over it by catching
|
||||||
# the error and exiting manually
|
# the error and exiting manually
|
||||||
|
|||||||
@ -235,12 +235,12 @@ class UsageLogger:
|
|||||||
if self._has_amdsmi:
|
if self._has_amdsmi:
|
||||||
try:
|
try:
|
||||||
amdsmi.amdsmi_shut_down()
|
amdsmi.amdsmi_shut_down()
|
||||||
except amdsmi.AmdSmiException as e:
|
except amdsmi.AmdSmiException:
|
||||||
pass
|
pass
|
||||||
if self._has_pynvml:
|
if self._has_pynvml:
|
||||||
try:
|
try:
|
||||||
pynvml.nvmlShutdown()
|
pynvml.nvmlShutdown()
|
||||||
except pynvml.NVMLError as e:
|
except pynvml.NVMLError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def _get_per_process_gpu_info(self, handle: Any) -> list[dict[str, Any]]:
|
def _get_per_process_gpu_info(self, handle: Any) -> list[dict[str, Any]]:
|
||||||
@ -306,7 +306,7 @@ class UsageLogger:
|
|||||||
if "pss" in memory_full_info:
|
if "pss" in memory_full_info:
|
||||||
# only availiable in linux
|
# only availiable in linux
|
||||||
info["pss_memory"] = f"{memory_full_info.pss / (1024 * 1024):.2f}"
|
info["pss_memory"] = f"{memory_full_info.pss / (1024 * 1024):.2f}"
|
||||||
except psutil.AccessDenied as e:
|
except psutil.AccessDenied:
|
||||||
# It's ok to skip this
|
# It's ok to skip this
|
||||||
pass
|
pass
|
||||||
per_process_info.append(info)
|
per_process_info.append(info)
|
||||||
|
|||||||
@ -50,7 +50,7 @@ class MentionedInPR(HeuristicInterface):
|
|||||||
) + self._search_for_linked_issues(pr_body):
|
) + self._search_for_linked_issues(pr_body):
|
||||||
try:
|
try:
|
||||||
linked_issue_bodies.append(get_issue_or_pr_body(int(issue)))
|
linked_issue_bodies.append(get_issue_or_pr_body(int(issue)))
|
||||||
except Exception as e:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
mentioned = []
|
mentioned = []
|
||||||
|
|||||||
@ -42,7 +42,7 @@ if IS_ROCM and not IS_MEM_LEAK_CHECK:
|
|||||||
assert count > 0 # there must be at least 1 GPU
|
assert count > 0 # there must be at least 1 GPU
|
||||||
# Limiting to 8 GPUs(PROCS)
|
# Limiting to 8 GPUs(PROCS)
|
||||||
NUM_PROCS = min(count, 8)
|
NUM_PROCS = min(count, 8)
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError:
|
||||||
# The safe default for ROCm GHA runners is to run tests serially.
|
# The safe default for ROCm GHA runners is to run tests serially.
|
||||||
NUM_PROCS = 1
|
NUM_PROCS = 1
|
||||||
|
|
||||||
|
|||||||
@ -64,7 +64,6 @@ class AHTrainDecisionTree(AHTrain):
|
|||||||
Given a trained decision tree, and a dataframe containing the training data, returns a list of unsafe leaves.
|
Given a trained decision tree, and a dataframe containing the training data, returns a list of unsafe leaves.
|
||||||
"""
|
"""
|
||||||
X = df[feature_columns]
|
X = df[feature_columns]
|
||||||
y = df["winner"]
|
|
||||||
leaf_ids = model.apply(X)
|
leaf_ids = model.apply(X)
|
||||||
unique_leaves = np.unique(leaf_ids)
|
unique_leaves = np.unique(leaf_ids)
|
||||||
|
|
||||||
@ -136,7 +135,6 @@ class AHTrainDecisionTree(AHTrain):
|
|||||||
best_model = None
|
best_model = None
|
||||||
best_model_safe_proba = 0
|
best_model_safe_proba = 0
|
||||||
best_model_num_correct = 0
|
best_model_num_correct = 0
|
||||||
best_model_num_wrong = 0
|
|
||||||
best_model_unsafe_leaves = []
|
best_model_unsafe_leaves = []
|
||||||
columns = ["set", "crit", "max_depth", "min_samples_leaf"]
|
columns = ["set", "crit", "max_depth", "min_samples_leaf"]
|
||||||
metrics_columns = []
|
metrics_columns = []
|
||||||
@ -223,7 +221,6 @@ class AHTrainDecisionTree(AHTrain):
|
|||||||
)
|
)
|
||||||
best_model = model
|
best_model = model
|
||||||
best_model_num_correct = num_correct
|
best_model_num_correct = num_correct
|
||||||
best_model_num_wrong = num_wrong
|
|
||||||
best_model_safe_proba = safe_proba
|
best_model_safe_proba = safe_proba
|
||||||
best_model_unsafe_leaves = unsafe_leaves
|
best_model_unsafe_leaves = unsafe_leaves
|
||||||
|
|
||||||
@ -786,7 +783,6 @@ class DecisionEvaluator:
|
|||||||
def top_k_classes(self, model, probas, k, avail_choices):
|
def top_k_classes(self, model, probas, k, avail_choices):
|
||||||
# Get classes and their corresponding probabilities
|
# Get classes and their corresponding probabilities
|
||||||
classes = model.classes_
|
classes = model.classes_
|
||||||
class_proba_pairs = list(zip(classes, probas))
|
|
||||||
|
|
||||||
# Sort by probability (descending) and filter out zero probabilities
|
# Sort by probability (descending) and filter out zero probabilities
|
||||||
sorted_classes = [
|
sorted_classes = [
|
||||||
|
|||||||
@ -399,7 +399,6 @@ class AHTrainRegressionTree(AHTrain):
|
|||||||
|
|
||||||
def dt_to_python(node, depth):
|
def dt_to_python(node, depth):
|
||||||
indent = " " * (depth + 1)
|
indent = " " * (depth + 1)
|
||||||
false_predicate = ""
|
|
||||||
if tree_.feature[node] != -2:
|
if tree_.feature[node] != -2:
|
||||||
name = feature_name[node]
|
name = feature_name[node]
|
||||||
threshold = tree_.threshold[node]
|
threshold = tree_.threshold[node]
|
||||||
|
|||||||
@ -488,9 +488,6 @@ extern "C" {{
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
else:
|
else:
|
||||||
c_shim_include = (
|
|
||||||
f"#include <torch/csrc/inductor/aoti_torch/generated/c_shim_{device}.h>"
|
|
||||||
)
|
|
||||||
return f"""
|
return f"""
|
||||||
{warning}
|
{warning}
|
||||||
|
|
||||||
|
|||||||
@ -693,7 +693,7 @@ def emit_inplace_functionalization_body(
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
mutable_input_post_processing = "\n".join(
|
mutable_input_post_processing = "\n".join( # noqa: F841
|
||||||
[
|
[
|
||||||
f"""
|
f"""
|
||||||
at::functionalization::impl::replace_({a.name}, tmp_output);
|
at::functionalization::impl::replace_({a.name}, tmp_output);
|
||||||
|
|||||||
@ -317,7 +317,6 @@ def get_upgrader_bytecode_function_to_index_map(
|
|||||||
|
|
||||||
|
|
||||||
def write_cpp(cpp_path: str, upgrader_dict: list[dict[str, Any]]) -> None:
|
def write_cpp(cpp_path: str, upgrader_dict: list[dict[str, Any]]) -> None:
|
||||||
body_parts = []
|
|
||||||
upgrader_bytecode_function_to_index_map = (
|
upgrader_bytecode_function_to_index_map = (
|
||||||
get_upgrader_bytecode_function_to_index_map(upgrader_dict)
|
get_upgrader_bytecode_function_to_index_map(upgrader_dict)
|
||||||
)
|
)
|
||||||
@ -335,7 +334,6 @@ def write_cpp(cpp_path: str, upgrader_dict: list[dict[str, Any]]) -> None:
|
|||||||
operator_list_str = ""
|
operator_list_str = ""
|
||||||
for table_name, contents in bytecode.items():
|
for table_name, contents in bytecode.items():
|
||||||
element = ByteCode[table_name]
|
element = ByteCode[table_name]
|
||||||
body_string = ""
|
|
||||||
if element is ByteCode.instructions:
|
if element is ByteCode.instructions:
|
||||||
instruction_list_str = construct_instruction(contents)
|
instruction_list_str = construct_instruction(contents)
|
||||||
elif element is ByteCode.constants:
|
elif element is ByteCode.constants:
|
||||||
@ -364,10 +362,8 @@ def write_cpp(cpp_path: str, upgrader_dict: list[dict[str, Any]]) -> None:
|
|||||||
operator_version_map=version_map_src,
|
operator_version_map=version_map_src,
|
||||||
upgrader_bytecode="".join(all_upgrader_src_string).lstrip("\n"),
|
upgrader_bytecode="".join(all_upgrader_src_string).lstrip("\n"),
|
||||||
)
|
)
|
||||||
body_parts.append(upgrader_file_content)
|
|
||||||
print("writing file to : ", cpp_path + "/" + UPGRADER_MOBILE_FILE_NAME)
|
print("writing file to : ", cpp_path + "/" + UPGRADER_MOBILE_FILE_NAME)
|
||||||
with open(os.path.join(cpp_path, UPGRADER_MOBILE_FILE_NAME), "wb") as out_file:
|
with open(os.path.join(cpp_path, UPGRADER_MOBILE_FILE_NAME), "wb") as out_file:
|
||||||
final_output = "".join(body_parts)
|
|
||||||
out_file.write(upgrader_file_content.encode("utf-8"))
|
out_file.write(upgrader_file_content.encode("utf-8"))
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user