GPU computing has become an attractive choice in many application domains, as illustrated throughout this book. Occasionally, however, applications that should lend themselves well to GPU computing pose implementation challenges of a purely practical nature. For example:
• How can we maximize developer productivity for both expert CUDA C developers as well as those less experienced with GPU programming?
• How can high-performance code be written using higher-level scripting or meta-languages?
• How can we use the CPU and GPU cooperatively in a manner that best suits the architectural strengths of each to solve a problem as efficiently as possible?
• How can we effectively parallelize ...