-
Notifications
You must be signed in to change notification settings - Fork 429
Rendezvous Protocol threshold for multilane mode
Assumptions:
- Sender & receiver are configured by same manner & using same HW (latency, registration costs, etc. on both sides are equal).
- Eager & RNDV protocols use different lanes
- Cost of transfer single message is latency + overhead
Definitions:
- ecost/rcost – eager/rndv registration cost
- egro/rgro – eager/rndv registration growth
- ebw/rbw – eager/rndv bandwidth
- eover/rover – eager/rndv overhead
- elat/rlat – eager/rndv latency
- etime/rtime – eager/rndv delivery time
- d - differentiate factor (bit less 1)
bw=∑n0lanei→bandwidth
cost=∑n0mdi→registration cost
gro=∑n0mdi→registration grow
Eager protocol (zcopy):
-
Registration (eager reg cost + size * eager reg grow)
-
Transfer (size/bw + eager overhead + eager latency)
EAGER:etime = ecost + size • egro + size⁄ebw+eover
RNDV AM protocol (zcopy):
-
Registration on sender size (rndv reg cost + size * rndv reg grow)
-
RTS (rndv latency + rndv overhead)
-
RTR (rndv latency + rndv overhead)
-
Transfer (size/bw + rndv latency + rndv overhead + rndv latency)
AM:rtime=d(rcost + size • rgro + 4rlat + 3rover + size⁄rbw)
RNDV RMA protocol (get):
-
Registration on sender size (rndv reg cost + size * rndv reg grow)
-
RTS (rndv latency + rndv overhead)
-
Registration on receiver size (rndv reg cost + size * rndv reg grow)
-
Transfer (size/bw + rndv latency + rndv overhead + rndv latency)
-
ACK (rndv latency + rndv overhead)
RMA:rtime=d(2(rcost + size • rgro) + 4rlat + 3rover + size⁄rbw)
To unify RNDV formulas let’s add one more argument: rrc – receive registration cost, which is 0 for AM RNDV and 1 for RMA RNDV, then RNDV time may be calculated as:
RNDV:rtime=d((1+rrc)(rcost + size • rgro) + 4rlat + 3rover + size⁄rbw)
Transformations:
EAGER:etime = ecost + size • egro + size⁄ebw+ eover = size(egro+1⁄ebw)+ ecost + eover
RNDV:rtime=d((1 + rrc)(rcost + size • rgro) + 4rlat + 3rover + size⁄rbw) = d(size•rgro(1 + rrc)+rcost(1 + rrc) + 4rlat + 3rover + size⁄rbw) = d(size(rgro(1 + rrc) + 1⁄rbw) + rcost(1 + rrc) + 4rlat + 3rover) = size • d(rgro(1 + rrc) + 1⁄rbw) + d(rcost(1 + rrc) + 4rlat + 3rover)
Have equation:etime == rtime
size(egro + 1⁄ebw) + ecost + eover = size • d(rgro(1 + rrc) + 1⁄rbw) + d(rcost(1 + rrc) + 4rlat + 3rover)
size(egro + 1⁄ebw) - size • d(rgro(1 + rrc) + 1⁄rbw) = d(rcost(1 + rrc) + 4rlat + 3rover) - ecost - eover
size(egro + 1⁄ebw - d(rgro(1 + rrc) + 1⁄rbw)) = d(rcost(1 + rrc) + 4rlat + 3rover) - ecost - eover
size = d(rcost(1 + rrc) + 4rlat + 3rover) - ecost - eover⁄egro + 1⁄ebw - d(rgro(1 + rrc) + 1⁄rbw)