def METHOD_NAME():
    try:
        q = dpctl.SyclQueue("opencl")
    except dpctl.SyclQueueCreationError:
        pytest.skip("OpenCL queue could not be created")
    oclSrc = (
        "kernel void kern1(global unsigned int *res, unsigned int mod) {"
        "   size_t unused_sum = 0;"
        "   size_t i = 0; "
        "   for (i = 0; i < 4000; i++) { "
        "       unused_sum += i;"
        "   } "
        "   size_t index = get_global_id(0);"
        "   int ri = (index % mod);"
        "   res[index] = (ri * ri) % mod;"
        "}"
        " "
        "kernel void kern2(global unsigned int *res, unsigned int mod) {"
        "   size_t unused_sum = 0;"
        "   size_t i = 0; "
        "   for (i = 0; i < 4000; i++) { "
        "       unused_sum += i;"
        "   } "
        "   size_t index = get_global_id(0);"
        "   int ri = (index % mod);"
        "   int ri2 = (ri * ri) % mod;"
        "   res[index] = (ri2 * ri) % mod;"
        "}"
        " "
        "kernel void kern3("
        "   global unsigned int *res, global unsigned int *arg1, "
        "   global unsigned int *arg2)"
        "{"
        "   size_t index = get_global_id(0);"
        "   size_t i = 0; "
        "   size_t unused_sum = 0;"
        "   for (i = 0; i < 4000; i++) { "
        "       unused_sum += i;"
        "   } "
        "   res[index] = "
        "      (arg1[index] < arg2[index]) ? arg1[index] : arg2[index];"
        "}"
    )
    prog = dpctl_prog.create_program_from_source(q, oclSrc)
    kern1Kernel = prog.get_sycl_kernel("kern1")
    kern2Kernel = prog.get_sycl_kernel("kern2")
    kern3Kernel = prog.get_sycl_kernel("kern3")
    assert isinstance(kern1Kernel, dpctl_prog.SyclKernel)
    assert isinstance(kern2Kernel, dpctl_prog.SyclKernel)
    assert isinstance(kern2Kernel, dpctl_prog.SyclKernel)
    status_complete = dpctl.event_status_type.complete
    # choose input size based on capability of the device
    f = q.sycl_device.max_work_group_size
    n = f * 1024
    n_alloc = 4 * n
    X = dpt.empty((3, n_alloc), dtype="u4", usm_type="device", sycl_queue=q)
    first_row = dpctl_mem.as_usm_memory(X[0])
    second_row = dpctl_mem.as_usm_memory(X[1])
    third_row = dpctl_mem.as_usm_memory(X[2])
    p1, p2 = 17, 27
    async_detected = False
    for attempt in range(5):
        e1 = q.submit(
            kern1Kernel,
            [
                first_row,
                ctypes.c_uint(p1),
            ],
            [
                n,
            ],
        )
        e2 = q.submit(
            kern2Kernel,
            [
                second_row,
                ctypes.c_uint(p2),
            ],
            [
                n,
            ],
        )
        e3 = q.submit(
            kern3Kernel,
            [third_row, first_row, second_row],
            [
                n,
            ],
            None,
            [e1, e2],
        )
        e3_st = e3.execution_status
        e2_st = e2.execution_status
        e1_st = e1.execution_status
        are_complete = [
            e == status_complete
            for e in (
                e1_st,
                e2_st,
                e3_st,
            )
        ]
        e3.wait()
        if not all(are_complete):
            async_detected = True
            break
        else:
            n = n * (1 if attempt % 2 == 0 else 2)
            if n > n_alloc:
                break
    assert async_detected, "No evidence of async submission detected, unlucky?"
    Xnp = dpt.asnumpy(X)
    Xref = np.empty((3, n), dtype="u4")
    for i in range(n):
        Xref[0, i] = (i * i) % p1
        Xref[1, i] = (i * i * i) % p2
        Xref[2, i] = min(Xref[0, i], Xref[1, i])
    assert np.array_equal(Xnp[:, :n], Xref[:, :n])