def METHOD_NAME(target):
    num_step = n_num_step
    flstm = tvm.build(s, [Xi2h, Wh2h, scan_h, scan_c], target)
    dev = tvm.cuda(0) if target == "cuda" else tvm.cl(0)
    # launch the kernel.
    scan_h_np = np.zeros((num_step, batch_size, num_hidden)).astype("float32")
    scan_c_np = np.zeros((num_step, batch_size, num_hidden)).astype("float32")
    Xi2h_np = np.random.normal(size=(num_step, batch_size, 4, num_hidden)).astype("float32")
    Wh2h_np = np.random.normal(size=(4, num_hidden, num_hidden)).astype("float32")
    scan_h_a = tvm.nd.array(scan_h_np, dev)
    scan_c_a = tvm.nd.array(scan_c_np, dev)
    Xi2h_a = tvm.nd.array(Xi2h_np, dev)
    Wh2h_a = tvm.nd.array(Wh2h_np, dev)
    flstm(Xi2h_a, Wh2h_a, scan_h_a, scan_c_a)
    dev.sync()
    # measure time cost of second step.
    evaluator = flstm.time_evaluator(flstm.entry_name, dev, 1, repeat=1000)
    eval_result = evaluator(Xi2h_a, Wh2h_a, scan_h_a, scan_c_a)
    print("Time cost=%g" % eval_result.mean)