def METHOD_NAME(executor_kind, target, dev, val_dtype):
    target = tvm.target.Target(target)
    if target.kind.name == "vulkan" and val_dtype == "float64":
        # GLSL.std.450's Log implementation only takes 16/32-bit floats.
        pytest.xfail("Known failing test case for vulkan runtime")
    x = relay.var("x", shape=(2, 5), dtype=val_dtype)
    y = relay.var("y", shape=(2, 5), dtype=val_dtype)
    check_grad(
        relay.Function([x, y], relay.op.nn.cross_entropy(x, y)),
        eps=0.01,
        scale=0.1,
        mean=1,
        target_devices=[(target, dev)],
        executor_kind=executor_kind,
    )