In addition, the results are similar on GPU.
For GPU version, bmm invokes separate CUDA kernels for each matrix multiplication, which in this case, 10000 kernel launches. Then the function calling overhead dominates the total computation time.