Effectiveness of program transformations and compilers for directive-based GPU programming models