import deep500 as d5 from deep500.frameworks import tensorflow as d5tf # Uses the ONNX Test Parser to run a test if __name__ == '__main__': if len(sys.argv) > 2: print('USAGE: onnxtest.py [TESTNAME]') print('If TESTNAME is not specified, chooses and runs a random test') sys.exit(1) parser = d5.OnnxTestParser() if len(sys.argv) == 1: testname = random.choice(parser.all_tests['Node']) print('Chose test "%s"' % testname) else: testname = sys.argv[1] test = parser.get_test(testname) if test is None: print('ERROR: Test "%s" not found' % testname) sys.exit(2) model = d5.parser.load_and_parse_model(test.model) executor = d5tf.from_model(model) d5.test_executor_inference(executor, inputs=test.data_sets[0].inputs, reference_outputs=test.data_sets[0].outputs, metrics=[d5.L2Error()])
# Create Pytorch "model" that only receives two variables def model(A, B): if test.a_trans: Amul = A.transpose(0, 1) else: Amul = A if test.b_trans: Bmul = B.transpose(0, 1) else: Bmul = B return torch.matmul(Amul, Bmul) # Run Deep500 test l2err, maxerr, times = \ d5pt.test_nativeop_forward(model, [var_A, var_B], [Amult @ Bmult], metrics=[d5.L2Error(), d5.MaxError(), d5.WallclockTime(RUNS*AVG_OVER, AVG_OVER)]) except Exception as ex: print('Exception:', ex) l2err = -1.0 maxerr = -1.0 times = [-1.0] with open('0_d5pt_gemm_deepbench.log', 'a') as fp: fp.writelines([ '{test.m},{test.n},{test.k},' '{test.a_trans},{test.b_trans},' '{time:.15f},{l2err},{maxerr}\n'.format(test=test, time=time, l2err=l2err, maxerr=maxerr)
def DefaultOptimizerMetrics(): return [d5.L2Error(), d5.WallclockTime()]