Programming massively parallel processors