Optimizing Tensor Contractions On Gpus