GPUSPH vs DualSPHysics

I’m now well aware that there are many SPH-like models in existence (see for example https://spheric-sph.org/sph-projects-and-codes ), but I’m wondering what makes GPUSPH different from DualSPHysics? I can see that both codes are “forked” from SPHysics, each utilizing the GPU, but they seem very similar (if not, the same?) in their goals and objectives.

Can someone please summarize or bullet point the key differences? In general, I’m new to SPH models and GPUSPH is the first of its kind that I’m experimenting with. It would be nice to understand what makes GPUSPH unique. If there are no major differences, why not merge efforts with DualSPHysics? It seems a lot of their features are applicable to GPUSPH (vice-versa).