How could I change GPU Niagara Particle's individual locations in runtime through Blueprint?

Hi fellow developers! I been tried to control the location of each GPU particle in a niagara system runtime, but I ran into something weird, here’s what I have done so far.

I output 3 float arrays with x, y, and z position each for the particles from the blueprint to niagara 3 user parameters in float array form. It successfully give the arrays to niagara, and niagara returns correct value with the Niagara Get Float Array node.

However, the particles didn’t change their positions, neither in viewport or gameplay. Their position updated, but the particle won’t move at all. But once I press the Reset button in the Niagara Utilities that you could found in the Details panel in viewport, the particle position finally updated “visually”. It looks like the rendering or something didn’t refresh when I change their positions.

Also, I discover that when I changed from GPU sim to CPU sim for the particle, the positions can be updated as expected. Is this the limitation, or perhaps I did something wrong or overlook something? Please help me, thank you in advance.