def replay(request): """ Returns: Tuple[FakeAlgorithmContext, Algorithm, FakeAlgorithm, Union[str, TacticReplayData], Union[str, TacticReplayData]]: This fixture returns 5 things: 1. A fake TensorRT algorithm context 2. A Polygraphy Algorithm instance 3. A fake TensorRT algorithm (with the same information as (2)) 4. An input tactic replay data, populated with the Polygraphy Algorithm (2), either as a ``TacticReplayData`` instance, or a path. 5. An output tactic replay data, empty, either as a ``TacticReplayData`` instance, or a path. """ jsonify = request.param name = "node_of_y" context = fake_context(name) trt_algo = fake_algo() poly_algo = Algorithm.from_trt(context, trt_algo) in_replay_data = TacticReplayData().add(name, poly_algo) out_replay_data = TacticReplayData() if jsonify: inpath = util.NamedTemporaryFile("w") in_replay_data.save(inpath.name) in_replay_data = inpath.name outpath = util.NamedTemporaryFile("r") out_replay_data = outpath.name yield context, poly_algo, trt_algo, in_replay_data, out_replay_data
def test_cannot_save_load_to_different_types(self): run_result = JSONABLE_CASES[0] encoded = run_result.to_json() with pytest.raises(PolygraphyException, match="JSON cannot be decoded into"): TacticReplayData.from_json(encoded)
def test_tactics(self, trt_config_args, opt, cls): with util.NamedTemporaryFile("w+", suffix=".json") as f: if opt == "--load-tactics": TacticReplayData().save(f) trt_config_args.parse_args([opt, f.name]) builder, network = create_network() with builder, network, trt_config_args.create_config(builder, network=network) as config: recorder = config.algorithm_selector assert recorder.make_func == cls assert recorder.path == f.name
def make_iter_result(): return IterationResult( runtime=4.5, runner_name="test", outputs={ "out0": np.random.random_sample((1, 2, 1)), "out1": np.ones((1, 2), dtype=np.float32), }, ) JSONABLE_CASES = [ RunResults([("runner0", [make_iter_result()]), ("runner0", [make_iter_result()])]), TacticReplayData().add("hi", algorithm=make_algo()), ] class TestImplementations(object): @pytest.mark.parametrize( "obj", [ Algorithm( implementation=4, tactic=5, inputs=[(trt.TensorFormat.LINEAR, trt.float32)], outputs=[(trt.TensorFormat.LINEAR, trt.float32)], ), Algorithm( implementation=4,
def make_replay(tactic): return TacticReplayData().add( "layer0", Algorithm.from_trt(fake_context("layer0"), fake_algo(0, tactic)))