Question 1: Short answer
mediumAI-checkedDeep Learning FrameworksFour GPUs each hold a 160 MB gradient. Every GPU has its own 16 GB/s link to a PCIe switch, all links run at full speed at the same time, and sending 160 MB over one link takes 10 ms. Summing everything on GPU 0 and sending the result back takes ms, because GPU 0's link carries all the traffic. If you instead split the gradient into four 40 MB parts and let each GPU aggregate and redistribute one part, how many milliseconds does the synchronization take?