ReemaAlzaid commented on PR #12471: URL: https://github.com/apache/gluten/pull/12471#issuecomment-5191664095
> Thanks for working on this issue. Adding check and conversion from CudfVector to RowVector do avoid runtime failure. > > However, in my opinion, it's expected that the output from gpu pipeline should always be converted into `RowVector` when the pipeline ends or the next operator is not a `CudfOperator` (such as shuffle write, file write, c2r, etc), so I wonder why the input of the c2r for q15 is not being converted. Is there any findings on the cause? Or please point me out if I miss understood something. > > I also wonder if making this change general (adding guard on every RowVector retrieval) may burry some real issues. your right about the design inside a Velox pipeline, but in Gluten, batches also cross the JNI boundary through channels the auto inserter can't see, and their CPU/GPU is only known at runtime we verified GPU vectors reaching C2R (q15) and CPU vectors reaching GPU ops (q18), plus GPU vectors being silently serialized as 0 rows (the empty-broadcast-join root cause). The guards sit only at those boundary consumers, not everywhere. To avoid hiding real bugs, I'll add a warning log when a guard actually fires, and I can post the q15 operator dump if you want to chase the exact insertion gap -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
