def test_mark_custom_outputs(self, identity_identity_network): builder, network, parser = func.invoke( ModifyNetwork(identity_identity_network, outputs=["identity_out_0"])) with builder, network, parser: assert network.num_outputs == 1 assert network.get_output(0).name == "identity_out_0"
def test_unmark_shape_outputs(self, reshape_network): builder, network, parser = func.invoke( ModifyNetwork(reshape_network, outputs=constants.MARK_ALL, exclude_outputs=["reduce_prod_out_gs_2"])) with builder, network, parser: assert network.num_outputs == 1
def test_layerwise(self, load_identity_identity): load_network = ModifyNetwork(load_identity_identity, outputs=constants.MARK_ALL) builder, network, parser = load_network() with builder, network, parser: for layer in network: for index in range(layer.num_outputs): assert layer.get_output(index).is_network_output
def test_mark_shape_outputs(self, reshape_network): builder, network, parser = func.invoke( ModifyNetwork(reshape_network, outputs=["output", "reduce_prod_out_gs_2"])) with builder, network, parser: assert network.num_outputs == 2 assert network.get_output(0).name == "reduce_prod_out_gs_2" assert network.get_output(0).is_shape_tensor
def check_network(self, suffix): """ Checks whether the provided network is accurate compared to golden values. Returns: OrderedDict[str, OutputCompareResult]: A mapping of output names to an object describing whether they matched, and what the required tolerances were. """ from polygraphy.comparator import Comparator, CompareFunc, DataLoader from polygraphy.backend.trt import EngineFromNetwork, TrtRunner, ModifyNetwork, SaveEngine with G_LOGGER.verbosity(severity=G_LOGGER.severity if self.args. show_output else G_LOGGER.CRITICAL): data_loader = tool_util.get_data_loader(self.args) self.args.strict_types = True # HACK: Override strict types so things actually run in the right precision. config = tool_util.get_trt_config_loader(self.args, data_loader)(self.builder, self.network) suffix = "-{:}-{:}".format(suffix, self.precision) engine_path = misc.insert_suffix(self.args.save_engine, suffix) self.builder, self.network, self.parser = ModifyNetwork( (self.builder, self.network, self.parser), outputs=self.args.trt_outputs)() engine_loader = SaveEngine(EngineFromNetwork( (self.builder, self.network, self.parser), config), path=engine_path) runners = [TrtRunner(engine_loader)] results = Comparator.run(runners, data_loader=data_loader) if self.args.validate: Comparator.validate(results) results.update(self.golden) compare_func = CompareFunc.basic_compare_func( atol=self.args.atol, rtol=self.args.rtol, check_shapes=not self.args.no_shape_check) accuracy_result = Comparator.compare_accuracy( results, compare_func=compare_func) tolerances = list(accuracy_result.values())[0][ 0] # First iteration of first runner pair for name, req_tol in tolerances.items(): if bool(req_tol): G_LOGGER.success( "PASSED | Output: {:} | Required Tolerances: {:}".format( name, req_tol)) else: G_LOGGER.error( "FAILED | Output: {:} | Required Tolerances: {:}".format( name, req_tol)) return accuracy_result
def test_exclude_outputs_with_mark_layerwise(self, identity_identity_network): builder, network, parser = func.invoke( ModifyNetwork(identity_identity_network, outputs=constants.MARK_ALL, exclude_outputs=["identity_out_2"])) with builder, network, parser: assert network.num_outputs == 1 assert network.get_output(0).name == "identity_out_0"
def test_modify_network(self): from polygraphy.backend.trt import ModifyNetwork ModifyNetwork(None)
def test_exclude_outputs_with_layerwise(self, load_identity_identity): builder, network, parser = ModifyNetwork(load_identity_identity, outputs=constants.MARK_ALL, exclude_outputs=["identity_out_2"])() with builder, network, parser: assert network.num_outputs == 1 assert network.get_output(0).name == "identity_out_0"
def test_custom_outputs(self, load_identity_identity): builder, network, parser = ModifyNetwork(load_identity_identity, outputs=["identity_out_0"])() with builder, network, parser: assert network.num_outputs == 1 assert network.get_output(0).name == "identity_out_0"