A survey on parallel training algorithms for deep neural networks