Sponge: portable stream programming on graphics engines
Optimization principles and application performance evaluation of a multithreaded GPU using CUDA