Add new single-kernel implementation of sparse to ragged index conversion
Hi @vysarge Can you please resolve conflicts? Thank you! This PR is stale because it has been open for 14 days with no activity. It will be closed if no further activity occurs. Thank you. Conflicts have been resolved. Hi @JXRiver Can you please review this PR ? Thank you! Hi @JXRiver Can you please review this PR ? Thank you! Hi @JXRiver Can you please review this PR ? Thank you! @JXRiver you self assigned here.  Can you PTAL or reassign to someone with better context.  Closed the prerequisite of this PR github.com/tensorflow/tensorflow/pull/59508. Going to close this one as well.
Adds a new op, SparseIndicesToRaggedRowSplits, and modifies `RaggedTensor.from_sparse` to use this op in place of the previous implementation. On a single A100-40GB GPU, my tests showed a speedup of 5x up to 150x depending on the input SparseTensor.  The op is also implemented for CPU.

This op accepts SparseTensor indices as input and returns a tensor of row_splits which can be used to create a RaggedTensor. If argument `validate_ragged_right` is set to true, the op will additionally check that the input indices represent a ragged-right SparseTensor.

Because this change modifies `RaggedTensor.from_sparse` to create the new RaggedTensor with the `from_row_splits` constructor instead of `from_value_rowids` as before, PR #59508 or another such change will be necessary to avoid regression for existing code that repeatedly calls `row_lengths()` or `value_rowids()` on a RaggedTensor created with `from_sparse`.