Balancing ¡Specula-ve ¡Loads ¡in ¡ Parallel ¡Discrete ¡Event ¡Simula-on ¡ Eric ¡Mikida ¡
Brief ¡PDES ¡Descrip-on ¡ • Simula-on ¡made ¡up ¡of ¡Logical ¡Processes ¡(LPs) ¡ • LPs ¡process ¡events ¡in ¡-mestamp ¡order ¡ • Synchroniza-on ¡is ¡conserva-ve ¡or ¡op-mis-c ¡ • Periodically ¡compute ¡global ¡virtual ¡-me ¡(GVT) ¡ 2 ¡
Op-mis-c ¡Execu-on ¡ LP ¡ Processed ¡events ¡ Pending ¡events ¡ 1 ¡ 3 ¡ 6 ¡ 7 ¡ 9 ¡ 10 ¡ 3 ¡
Op-mis-c ¡Execu-on ¡ LP ¡ 1 ¡ 3 ¡ 6 ¡ 7 ¡ 9 ¡ 10 ¡ 4 ¡
Op-mis-c ¡Execu-on ¡ LP ¡ 1 ¡ 3 ¡ 6 ¡ 7 ¡ 9 ¡ 10 ¡ 4 ¡ 5 ¡
Op-mis-c ¡Execu-on ¡ LP ¡ 1 ¡ 3 ¡ 6 ¡ 7 ¡ 9 ¡ 10 ¡ 4 ¡ 6 ¡
Op-mis-c ¡Execu-on ¡ LP ¡ 1 ¡ 3 ¡ 4 ¡ 6 ¡ 7 ¡ 9 ¡ 10 ¡ 7 ¡
Op-mis-c ¡Execu-on ¡ LP ¡ 1 ¡ 3 ¡ 4 ¡ 6 ¡ 7 ¡ 9 ¡ 10 ¡ GVT ¡ 8 ¡
Performance ¡Metrics ¡ Event ¡Rate ¡= ¡ E commiTed ¡/ ¡s ¡ Event ¡Efficiency ¡= ¡ E commiTed ¡/ ¡E total ¡ Load ¡Balance ¡= ¡ ?? ¡ 9 ¡
What ¡is ¡“load”? ¡ • Charm++ ¡automa-cally ¡measures ¡CPU ¡-me ¡ – Makes ¡sense ¡when ¡all ¡work ¡is ¡useful ¡work ¡ – Relies ¡on ¡principle ¡of ¡persistence ¡ – Balances ¡CPU ¡-me ¡per ¡PE ¡ 10 ¡
What ¡is ¡“load”? ¡ • Charm++ ¡automa-cally ¡measures ¡CPU ¡-me ¡ – Makes ¡sense ¡when ¡all ¡work ¡is ¡useful ¡work ¡ – Relies ¡on ¡principle ¡of ¡persistence ¡ – Balances ¡CPU ¡-me ¡per ¡PE ¡ Does ¡this ¡make ¡sense ¡in ¡a ¡specula-ve ¡se^ng? ¡ 11 ¡
Example ¡ LP ¡1 ¡ LP ¡2 ¡ LP ¡3 ¡ Executed: ¡5 ¡ Executed: ¡5 ¡ Executed: ¡5 ¡ CommiTed: ¡4 ¡ CommiTed: ¡0 ¡ CommiTed: ¡0 ¡ Rolled ¡Back: ¡0 ¡ Rolled ¡Back: ¡4 ¡ Rolled ¡Back: ¡0 ¡ 12 ¡
Example ¡ LP ¡1 ¡ LP ¡2 ¡ LP ¡3 ¡ Executed: ¡5 ¡ Executed: ¡5 ¡ Executed: ¡5 ¡ CommiTed: ¡4 ¡ CommiTed: ¡0 ¡ CommiTed: ¡0 ¡ Rolled ¡Back: ¡0 ¡ Rolled ¡Back: ¡4 ¡ Rolled ¡Back: ¡0 ¡ 13 ¡
Example ¡ LP ¡1 ¡ LP ¡2 ¡ LP ¡3 ¡ Executed: ¡5 ¡ Executed: ¡5 ¡ Executed: ¡5 ¡ CommiTed: ¡4 ¡ CommiTed: ¡0 ¡ CommiTed: ¡0 ¡ Rolled ¡Back: ¡0 ¡ Rolled ¡Back: ¡4 ¡ Rolled ¡Back: ¡0 ¡ 14 ¡
Example ¡ LP ¡1 ¡ LP ¡2 ¡ LP ¡3 ¡ Executed: ¡5 ¡ Executed: ¡5 ¡ Executed: ¡5 ¡ CommiTed: ¡4 ¡ CommiTed: ¡0 ¡ CommiTed: ¡0 ¡ Rolled ¡Back: ¡0 ¡ Rolled ¡Back: ¡4 ¡ Rolled ¡Back: ¡0 ¡ 15 ¡
Example ¡ LP ¡1 ¡ LP ¡2 ¡ LP ¡3 ¡ Executed: ¡5 ¡ Executed: ¡5 ¡ Executed: ¡5 ¡ CommiTed: ¡4 ¡ CommiTed: ¡0 ¡ CommiTed: ¡0 ¡ Rolled ¡Back: ¡0 ¡ Rolled ¡Back: ¡4 ¡ Rolled ¡Back: ¡0 ¡ Roughly ¡the ¡same ¡CPU ¡-me ¡spent ¡execu-ng ¡events ¡ 16 ¡
Example ¡ LP ¡1 ¡ LP ¡2 ¡ LP ¡3 ¡ Executed: ¡5 ¡ Executed: ¡5 ¡ Executed: ¡5 ¡ CommiTed: ¡4 ¡ CommiTed: ¡0 ¡ CommiTed: ¡0 ¡ Rolled ¡Back: ¡0 ¡ Rolled ¡Back: ¡4 ¡ Rolled ¡Back: ¡0 ¡ Roughly ¡the ¡same ¡CPU ¡-me ¡spent ¡execu-ng ¡events ¡ How ¡does ¡the ¡load ¡balancer ¡differen-ate? ¡ 17 ¡
How ¡does ¡GVT ¡affect ¡balance? ¡ Count-‑Based ¡GVT ¡ Leash-‑Based ¡GVT ¡ • GVT ¡computed ¡every ¡X ¡ • GVT ¡computed ¡every ¡X ¡units ¡ events ¡ of ¡virtual ¡-me ¡ • Doesn’t ¡aTempt ¡to ¡bound ¡ • Keeps ¡virtual ¡-mes ¡ op-mism ¡ balanced ¡across ¡PEs ¡ • Can ¡lead ¡to ¡poor ¡event ¡ • Can ¡lead ¡to ¡poor ¡CPU ¡ efficiency ¡ balance ¡across ¡PEs ¡ 18 ¡
Benchmarks ¡ PHOLD ¡ Traffic ¡ • Common ¡PDES ¡benchmark ¡ • Simulates ¡a ¡grid ¡of ¡ intersec-ons ¡ • Execu-ng ¡an ¡event ¡causes ¡a ¡ • Events ¡are ¡cars ¡arriving, ¡ new ¡event ¡for ¡a ¡random ¡LP ¡ leaving, ¡and ¡changing ¡lanes ¡ • Changing ¡event ¡distribu-on ¡ • Cars ¡travel ¡from ¡source ¡to ¡ causes ¡imbalance ¡ des-na-on ¡ 19 ¡
GVT ¡Trigger ¡Event ¡Rates ¡ 40 ¡ 64 ¡nodes ¡of ¡Vesta ¡(BG/Q) ¡ 35 ¡ Event ¡Rate ¡(millions/s) ¡ PHOLD: ¡ 30 ¡ -‑ 32 ¡LPs ¡per ¡rank ¡ 25 ¡ -‑ 50% ¡remote ¡events ¡ Count ¡ 20 ¡ Traffic: ¡ Leash ¡ 15 ¡ -‑ 64K ¡intersec-ons ¡ 10 ¡ -‑ 1M ¡cars ¡ 5 ¡ 0 ¡ PHOLD ¡ Traffic ¡ 20 ¡
GVT ¡Trigger ¡Comparison ¡ 100 ¡ 90 ¡ 64 ¡nodes ¡of ¡Vesta ¡(BG/Q) ¡ 80 ¡ PHOLD: ¡ -‑ 32 ¡LPs ¡per ¡rank ¡ 70 ¡ Efficiency ¡(%) ¡ -‑ 50% ¡remote ¡events ¡ 60 ¡ Count ¡ 50 ¡ Traffic: ¡ 40 ¡ Leash ¡ -‑ 64K ¡intersec-ons ¡ 30 ¡ -‑ 1M ¡cars ¡ 20 ¡ 10 ¡ 0 ¡ PHOLD ¡ Traffic ¡ 21 ¡
Our ¡Load ¡Balancing ¡Goal ¡ • Make ¡sure ¡all ¡PEs ¡have ¡useful ¡work ¡ – Balance ¡the ¡CPU ¡load ¡ – Only ¡count ¡useful ¡work ¡ • Maintain ¡a ¡high ¡event ¡efficiency ¡ – Balance ¡rate ¡of ¡progress ¡ – Leads ¡to ¡less ¡overall ¡work ¡ 22 ¡
Redefine ¡“Load” ¡for ¡PDES ¡ Past-‑Looking ¡Metrics ¡ Future-‑Looking ¡Metrics ¡ • CPU ¡Time ¡ • Next ¡Timestamp ¡ • Current ¡Timestamp ¡ • Pending ¡Events ¡ • CommiTed ¡Timestamp ¡ • Weighted ¡Pending ¡Events ¡ • CommiTed ¡Events ¡ • “Ac-ve” ¡Events ¡ • Poten-al ¡CommiTed ¡Events ¡ 23 ¡
PHOLD ¡Event ¡Rate ¡ 100 ¡ 2.5x ¡Speedup ¡ 90 ¡ No ¡LB ¡ Event ¡Rate ¡(millions/s) ¡ 80 ¡ CPU ¡Time ¡ 70 ¡ 4.5x ¡Speedup ¡ CommiTed ¡TS ¡ 60 ¡ ¡Current ¡TS ¡ 50 ¡ 40 ¡ Next ¡TS ¡ 30 ¡ CommiTed ¡Events ¡ 20 ¡ Pending ¡Events ¡ 10 ¡ Ac-ve ¡Events ¡ 0 ¡ Count ¡ Leash ¡ 24 ¡
PHOLD ¡Efficiency ¡ 100 ¡ 90 ¡ No ¡LB ¡ 80 ¡ CPU ¡Time ¡ 70 ¡ Efficiency ¡(%) ¡ CommiTed ¡TS ¡ 60 ¡ ¡Current ¡TS ¡ 50 ¡ 40 ¡ Next ¡TS ¡ 30 ¡ CommiTed ¡Events ¡ 20 ¡ Pending ¡Events ¡ 10 ¡ Ac-ve ¡Events ¡ 0 ¡ Count ¡ Leash ¡ 25 ¡
Traffic ¡Event ¡Rate ¡ 35 ¡ 3x ¡Speedup ¡ 30 ¡ No ¡LB ¡ Event ¡Rate ¡(millions/s) ¡ CPU ¡Time ¡ 25 ¡ CommiTed ¡TS ¡ 20 ¡ ¡Current ¡TS ¡ 15 ¡ Next ¡TS ¡ 3x ¡Speedup ¡ CommiTed ¡Events ¡ 10 ¡ Pending ¡Events ¡ 5 ¡ Ac-ve ¡Events ¡ 0 ¡ Count ¡ Leash ¡ 26 ¡
Traffic ¡Efficiency ¡ 100 ¡ 90 ¡ No ¡LB ¡ 80 ¡ CPU ¡Time ¡ 70 ¡ Efficiency ¡(%) ¡ CommiTed ¡TS ¡ 60 ¡ ¡Current ¡TS ¡ 50 ¡ 40 ¡ Next ¡TS ¡ 30 ¡ CommiTed ¡Events ¡ 20 ¡ Pending ¡Events ¡ 10 ¡ Ac-ve ¡Events ¡ 0 ¡ Count ¡ Leash ¡ 27 ¡
What’s ¡next? ¡ • BeTer ¡visualiza-on/analysis ¡tools ¡ • More ¡diverse ¡set ¡of ¡models ¡ • Conserva-ve ¡synchroniza-on ¡ • Vector ¡load ¡balancing ¡strategies ¡ • Adap-ve ¡load ¡balancer ¡ • Combine ¡with ¡GVT ¡work ¡ 28 ¡
Recommend
More recommend