Bisection does not do what it should!
The bisection does not actually do what it should. It should send a message from one half to the other and time that. Currently it just splits the testing set into two halves and does the default pingpong test between them without ensuring that communication between halves happens synchronously. This means we could get different tasks in halves sending and receiving at the same time. This is not what we want. I think we need to put barriers in and time each message-sending step individually. Then average the whole thing. Maybe remove the stopwatch start-stop latency by timing it and then subtracting it out. This is something we definitely need to discuss.