Dynamic memory management in massively parallel systems: a case on GPUs