GPU doesn't render the image with many moving particles
The reason why it struggles so much is the motion blur. since it has to know where the particle was to make the blur effect. and with so many particles looks like GPU just cant keep up. simply turning off the Motion blur helped, but if you need motion blur, you probably need to use CPU Only render. Why CPU only? because if you use GPU render with CPU acceleration the tile that supposed to be rendered with GPU won't let the CPU finish the job.
I hope it will help someone :)