in benchmarks/segmentation_layers.py [0:0]
def run(self):
params = itertools.product(
self.args.cuda,
self.args.N,
self.args.C,
self.args.H,
self.args.W,
self.args.seed,
)
if self.args.V:
var_params = [(v, v) for v in self.args.V]
else:
var_params = itertools.product(self.args.HV, self.args.WV)
params = [[p + v for v in var_params] for p in params]
params = sum(params, [])
writer = None
i = 0
for cuda, n, c, h, w, seed, h_var, w_var in params:
# generate inputs before iterating layers to have the same imput per layer
self.inputs, self.targets = self.get_input(cuda, n, c, h, w, h_var, w_var, seed)
benchmarks = [(layer, self.get_benchmark(c, layer, cuda)) for layer in self.args.layers]
for layer, benchmark in benchmarks:
result = utils.benchmark_fn(benchmark, run_time=self.args.run_time, warmup=self.args.warmup, cuda=cuda)
result["#"] = str(i) + "/" + str(len(benchmarks) * len(params))
result["N"] = n
result["C"] = c
result["H"] = h
result["W"] = w
result["h_var"] = h_var
result["w_var"] = w_var
result["seed"] = seed
result["avg_us"] = int(result["avg_us"])
result["std_us"] = int(result["std_us"])
result["name"] = layer
result["cuda"] = cuda
result["numel"] = sum(x.numel() for x in self.inputs)
if writer is None and self.args.csv_log:
writer = csv.DictWriter(open(self.args.csv_log, 'w'), fieldnames=result.keys())
writer.writeheader()
if writer is not None:
writer.writerow(result)
print(",".join(str((str(key), result[key])) for key in sorted(result.keys())))
i += 1