Spatial: a language and compiler for application accelerators