i thought only sinkhorn methods enables gradient calculation due to iterative evaluation. how could EMD also support gradient calculation?