You’re kicking off the send/recv operations, but don’t synchronize on completion. You’ll have to add calls to req.wait() to ensure the send/recv operations have actually completed. If you’re looking for synchronous send/recv instead, replace calls to isend/irecv by calls to send/recv (without the i).