def METHOD_NAME(implementation: str, vector_length: int):
    vtype = dace.vector(dace.typeclass(DTYPE), vector_length) if vector_length > 1 else DTYPE
    sdfg = dace.SDFG(f"stencil_node_test_2d_w{vector_length}")
    _, a_desc = sdfg.add_array("a", (ROWS, COLS / vector_length), dtype=vtype)
    _, b_desc = sdfg.add_array("b", (ROWS, ), dtype=DTYPE)
    sdfg.add_symbol("c", DTYPE)
    _, d_desc = sdfg.add_array("d", (ROWS, COLS / vector_length), dtype=vtype)
    _, res_desc = sdfg.add_array("res", (ROWS, COLS / vector_length), dtype=vtype)
    state = sdfg.add_state("stencil_node_test_2d")
    a = state.add_read("a")
    b = state.add_read("b")
    d = state.add_read("d")
    res = state.add_write("res")
    stencil_node = Stencil("stencil_test",
                           "res[0, 0] = c * b[0] * (a[-1, 0] + a[1, 0] + a[0, -1] + a[0, 1]) + d[0, -1] + d[0, 1]",
                           iterator_mapping={"b": (True, False)})
    stencil_node.implementation = implementation
    state.add_node(stencil_node)
    state.add_memlet_path(a, stencil_node, dst_conn="a", memlet=dace.Memlet.from_array("a", a_desc))
    state.add_memlet_path(b, stencil_node, dst_conn="b", memlet=dace.Memlet.from_array("b", b_desc))
    state.add_memlet_path(d, stencil_node, dst_conn="d", memlet=dace.Memlet.from_array("d", d_desc))
    state.add_memlet_path(stencil_node, res, src_conn="res", memlet=dace.Memlet.from_array("res", res_desc))
    return sdfg