programming massively parallel processors complete solutions