def test_vm(target, dev): mod, params = mlp.get_workload(1) exe = relay.vm.compile(mod, target, params=params) vm = profiler_vm.VirtualMachineProfiler(exe, dev) data = np.random.rand(1, 1, 28, 28).astype("float32") report = vm.profile(data, func_name="main") assert "fused_nn_softmax" in report assert "Total time" in report
def test_basic(dev, target): mod, params = mlp.get_workload(batch_size=1) if not profiler_vm.enabled(): return exe = relay.vm.compile(mod, target, params=params) vm = profiler_vm.VirtualMachineProfiler(exe, dev) data = np.random.rand(1, 1, 28, 28).astype("float32") res = vm.profile(tvm.nd.array(data), func_name="main") assert "softmax" in str(res)
def test_report_serialization(): mod, params = mlp.get_workload(1) exe = relay.vm.compile(mod, "llvm", params=params) vm = profiler_vm.VirtualMachineProfiler(exe, tvm.cpu()) data = np.random.rand(1, 1, 28, 28).astype("float32") report = vm.profile(data, func_name="main") report2 = Report.from_json(report.json()) # equality on reports compares pointers, so we compare the printed results instead. assert str(report) == str(report2)
def test_vm(target, dev): mod, params = mlp.get_workload(1) exe = relay.vm.compile(mod, target, params=params) vm = profiler_vm.VirtualMachineProfiler(exe, dev) data = np.random.rand(1, 1, 28, 28).astype("float32") report = vm.profile(data, func_name="main") assert "fused_nn_softmax" in str(report) assert "Total" in str(report) csv = read_csv(report) assert "Hash" in csv.keys() assert all([float(x) > 0 for x in csv["Duration (us)"]])
def test_rpc_vm(): server = rpc.Server(key="profiling") remote = rpc.connect("127.0.0.1", server.port, key="profiling") mod, params = mlp.get_workload(1) exe = relay.vm.compile(mod, "llvm", params=params) temp = utils.tempdir() path = temp.relpath("lib.tar") exe.mod.export_library(path) remote.upload(path) rexec = remote.load_module("lib.tar") vm = profiler_vm.VirtualMachineProfiler(rexec, remote.cpu()) report = vm.profile(tvm.nd.array(np.ones((1, 1, 28, 28), dtype="float32"), device=remote.cpu())) assert len(report.calls) > 0
def test_vm(target, dev): mod, params = mlp.get_workload(1) exe = relay.vm.compile(mod, target, params=params) vm = profiler_vm.VirtualMachineProfiler(exe, dev) data = np.random.rand(1, 1, 28, 28).astype("float32") report = vm.profile(data, func_name="main") assert "fused_nn_softmax" in str(report) assert "Total" in str(report) f = StringIO(report.csv()) reader = csv.reader(f, delimiter=",") # force parsing for row in reader: pass
def test_benchmark_end_to_end_rpc(): server = rpc.Server("127.0.0.1") remote = rpc.connect(server.host, server.port) mod, params = mlp.get_workload(1) lib = vm.compile(mod, target="llvm", params=params) temp = utils.tempdir() path = temp.relpath("vm_library.so") lib.mod.export_library(path) remote.upload(path) rlib = remote.load_module("vm_library.so") exe = runtime.vm.VirtualMachine(rlib, remote.cpu()) data = tvm.nd.array(np.random.rand(1, 1, 28, 28).astype("float32"), device=remote.cpu()) result = exe.benchmark( remote.cpu(), data=data, func_name="main", repeat=2, number=1, end_to_end=True ) assert result.mean > 0