Optimizing Memory-Bound Numerical Kernels on GPU Hardware Accelerators