programming massively parallel processors a hands on approach 4th ed pdf