Inconsistency in XLA Compilation with `tf.split` and Additional Outputs on GPU
Hi @GwiHwan-Go ,

I have replicated the reported behaviour with colab using TF v2.14, 2.15 and nightly. Please find the [gist](https://colab.research.google.com/gist/Venkat6871/d4f3c7dfcd17d92e7584c14def2777df/62547_2-14_2-15_nightly-v.ipynb) here for reference.

Thank you! Hi,

Providing additional outputs does not result in matching outputs. This behavior is expected. This issue is stale because it has been open for 7 days with no activity. It will be closed if no further activity occurs. Thank you. This issue was closed because it has been inactive for 7 days since being marked as stale. Please reopen if you'd like to work on this further. Are you satisfied with the resolution of your issue?
<a href="https://docs.google.com/forms/d/e/1FAIpQLSfaP12TRhd9xSxjXZjcZFNXPGk4kc1-qMdv3gc6bEP90vY1ew/viewform?entry.85265664=Yes&entry.2137816233=https://github.com/tensorflow/tensorflow/issues/62547">Yes</a>
<a href="https://docs.google.com/forms/d/e/1FAIpQLSfaP12TRhd9xSxjXZjcZFNXPGk4kc1-qMdv3gc6bEP90vY1ew/viewform?entry.85265664=No&entry.2137816233=https://github.com/tensorflow/tensorflow/issues/62547">No</a>

### Issue type

Bug

### Have you reproduced the bug with TensorFlow Nightly?

Yes

### Source

source

### TensorFlow version

2.15.0

### Custom code

Yes

### OS platform and distribution

Ubuntu 22.04.3 LTS

### Mobile device

_No response_

### Python version

3.10.0

### Bazel version

_No response_

### GCC/compiler version

_No response_

### CUDA/cuDNN version

cuda : 12.2 / cudnn 8.9.04

### GPU model and memory

Tesla V100S-PCIE-32GB

### Current behavior?

An inconsistency has been observed in TensorFlow's XLA compilation when using `tf.split` in conjunction with additional output nodes.
This behavior is only seen on **GPU**.

#### Testing and Observations: 
   - Removing any one of the operations (`tf.reverse`, `tf.add`, or `tf.transpose`) from the model's dataflow does not lead to the inconsistency, indicating that the combined effect of these operations might be a factor in triggering the error.
   - Altering the order of operands in the `tf.add` operation prevents the inconsistency, suggesting that operand order plays a role in the observed behavior.
   - Notably, returning only one output from `tf.split` in Model2 also avoids the error, highlighting a potential issue with how additional outputs are handled under XLA compilation.


### Standalone code to reproduce the issue

```shell
import tensorflow as tf
import numpy as np

class Model1(tf.keras.Model):
    @tf.function(jit_compile=True)
    def __call__(self, inp):
        trans = tf.transpose(inp, perm=[4, 1, 2, 3, 0])
        rev = tf.reverse(trans, axis=[0, 2, 3, 4])
        add = tf.add(rev, trans)
        split1, split2 = tf.split(add, 2, axis=1)
        return split1, 

class Model2(tf.keras.Model):
    @tf.function(jit_compile=True)
    def __call__(self, inp):
        trans = tf.transpose(inp, perm=[4, 1, 2, 3, 0])
        trans_output = tf.transpose(tf.concat([trans, trans], axis=0), perm=[1, 0, 2, 3, 4])
        rev = tf.reverse(trans, axis=[0, 2, 3, 4])
        add = tf.add(trans, rev)
        split1, split2 = tf.split(add, 2, axis=1)
        return split1, split2, trans_output, 

inputs = [
tf.random.uniform([1, 40, 1, 31, 49], dtype=tf.float64)
]
model1 = Model1()
model2 = Model2()
device = "gpu"
with tf.device(device):
    tf.config.run_functions_eagerly(True)
    out1 = model1(*inputs)
    out2 = model2(*inputs)
    print(f'=========eager_output(version:{tf.__version__})================')
    try :
        for i in range(min(len(out1),len(out2))):
            np.testing.assert_allclose(out1[i].numpy(), out2[i].numpy(), rtol=0.001, atol=0.001, err_msg=f'at checking {i}th')
        print("XLA_eager does not trigger assertion")
    except AssertionError as e:
        print("XLA_eager triggers assertion")
        print(e)
    tf.config.run_functions_eagerly(False)
    out1 = model1(*inputs)
    out2 = model2(*inputs)
    print(f'=========compiled_output(version:{tf.__version__})================')
    try :
        for i in range(min(len(out1),len(out2))):
            np.testing.assert_allclose(out1[i].numpy(), out2[i].numpy(), rtol=0.001, atol=0.001, err_msg=f'at checking {i}th')
        print("XLA_complie does not trigger assertion")
    except AssertionError as e:
        print("XLA_complie triggers assertion")
        print(e)
```


### Relevant log output

```shell
=========eager_output(version:2.15.0)================
XLA_eager does not trigger assertion
=========compiled_output(version:2.15.0)================
XLA_complie triggers assertion

Not equal to tolerance rtol=0.001, atol=0.001
at checking 0th
Mismatched elements: 30332 / 30380 (99.8%)
Max absolute difference: 198.11893463
Max relative difference: 2174.86236609
 x: array([[[[[  67.104973+0.j],
          [-166.796616+0.j],
          [  99.377243+0.j],...
 y: array([[[[[ 114.813599+0.j],
          [-178.685852+0.j],
          [ 184.664337+0.j],...
```
