I can only give recommendations. Finding the intersections in a regular grid of axis aligned boxes is the least of the problems in a pure density volume based rendering algorithm.
I don’t know what would work best for your specific use case. As said, if there is more geometry than just the volume data boxes in the scene, maybe in the future of your application, using a ray tracer will come in handy.
You could also go hybrid and determine the intersection with a ray tracer and once you have the ray segments to march, do that processing in CUDA. There are so many possibilities.
If your scene isn’t the typical medical data case but uses irregular geometry, then you’d need a ray tracer anyway. In that case the volume absorption or volume scattering calculations can happen inside the ray generation program or with some more overhead maybe even in the closest hit program when entering a volume, but that adds recursions you possibly want to avoid. Volume scattering is also not really ray marching. That is more like a random walk through the scattering volume according to a volume distribution function, if that is your use case. But there are many different algorithms to do that as well.