Solving the massively-parallel software problem