BatchQueue: Efficient core-to-core communication for pipeline parallelism