Interactive Program Debugging and Optimization for Directive-Based, Efficient GPU Computing