Implementing Finite Difference Schemes on Graphics Processing Units