SIMPL: a pattern language for writing efficient kernels on GPGPU