Message Driven Programming with S-Net Methodology and Performance Frank ¡Penczek ¡ S.A. ¡Herhut, ¡S.-‑B. ¡Scholz, ¡A. ¡Shafarenko, ¡J. ¡Yang, ¡C.Y. ¡Chen, ¡N. ¡Bagherzadeh, ¡C. ¡Grelck ¡
What is S-Net Coordination & Concurrency Engineering
What is S-Net Applications as Streaming Networks
What is S-Net Basic Building Blocks
What is S-Net Basic Building Blocks { A, ¡B, ¡ ¡… } ¡ α β { X, ¡Y, ¡ ¡… } ¡ net ¡myNet ¡{ ¡ ¡ ¡ ¡ ¡box ¡MyBox( ¡(A,B) ¡-‑> ¡(X,Y)); ¡ } ¡connect ¡MyBox; ¡
Raytracing Application The Principle
Raytracing Application ...in S-Net Read ¡ Gen ¡ Solve ¡ Scene ¡ Image ¡
Raytracing Application ...in S-Net {scn_name} ¡ {scene} ¡ {raster} ¡ {img} ¡ Read ¡ Gen ¡ Solve ¡ Scene ¡ Image ¡
Raytracing Application ...in S-Net {scn_name} ¡ {scene} ¡ {raster} ¡ {img} ¡ Read ¡ Gen ¡ Solve ¡ Scene ¡ Image ¡ net net raytrace raytrace { { box box ReadScene ReadScene( ( ( (scn_name scn_name) -> (scene)); ) -> (scene)); box Solve( (scene) -> (raster)); box Solve( (scene) -> (raster)); box box GenImage GenImage( (raster) -> ( ( (raster) -> (img img)); )); } connect } connect ReadScene ReadScene .. Solve .. .. Solve .. GenImage GenImage; ;
Raytracing Application Parallelised Approach
Raytracing Application Parallelised Approach in S-Net Solve ¡ Read ¡ Gen ¡ Solve ¡ Merge ¡ Scene ¡ Image ¡ Solve ¡
S-Net Combinators Split Combinator net ¡split ¡{ ¡ ¡ ¡box ¡Solve( ¡(scene) ¡-‑> ¡(raster)); ¡ Solve ¡ } ¡connect ¡Solve; ¡ Solve ¡ Solve ¡ Solve ¡ net ¡split ¡{ ¡ ¡ ¡box ¡Solve( ¡(scene) ¡-‑> ¡(raster)); ¡ } ¡connect ¡Solve !<task> ; ¡
Raytracing Application Parallelised Approach Solve ¡ Read ¡ Gen ¡ Solve ¡ Merge ¡ Scene ¡ Image ¡ Solve ¡
Raytracing Application Extended Read Scene {scene} ¡ {raster} ¡ {scn_name, ¡ <num_tasks>} ¡ Solve ¡ Read ¡ Gen ¡ Solve ¡ Merge ¡ Scene ¡ Image ¡ Solve ¡ ¡ ¡{raster, ¡<task>, ¡<num_tasks>} ¡ ¡ ¡ ¡{scene, ¡<task>, ¡<num_tasks>} ¡
S-Net Features Flow Inheritance ¡ ¡{scene, ¡<task>, ¡<num_tasks>} ¡ ¡{raster, ¡<task>, ¡<num_tasks>} ¡ {scene} ¡ {raster} ¡ Read ¡ Gen ¡ Solve ¡ Merge ¡ Scene ¡ Image ¡ ¡{<task>, ¡<num_tasks>} ¡
Raytracing Application Parallelised Approach Solve ¡ Read ¡ Gen ¡ Solve ¡ Merge ¡ Scene ¡ Image ¡ Solve ¡
S-Net Combinators Iteration {accu} ¡ {sub_res} ¡ {result} ¡ Merge ¡
S-Net Combinators Star Combinator {accu} ¡ {sub_res} ¡ {result} ¡ Merge ¡ net ¡merge ¡{ ¡ ¡ ¡box ¡Merge( ¡(accu, ¡sub_res) ¡-‑> ¡ ¡ ¡ ¡(accu) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡| ¡(result)); ¡ ¡ ¡ } ¡connect ¡Merge*{result}; ¡
S-Net Features Synchronisation {accu} ¡ Merge ¡ {accu} ¡ {sub} ¡ net ¡merge ¡{ ¡ ¡ ¡box ¡Merge( ¡(accu, ¡sub_res) ¡-‑> ¡ ¡ ¡ ¡(accu) ¡| ¡(result)); ¡ } ¡connect ¡( ¡[|{accu}, ¡{sub_res} ¡|] ¡.. ¡Merge)*{result}; ¡
Raytracing Application Runtime on Shared Memory Solve ¡ Solve ¡ Merge ¡ Read ¡ Gen ¡ Scene ¡ Image ¡ Solve ¡ 500 ¡ 450 ¡ RunQme ¡in ¡Seconds ¡ 400 ¡ 350 ¡ 300 ¡ 250 ¡ 200 ¡ 150 ¡ 100 ¡ 50 ¡ 0 ¡ 1 ¡ 2 ¡ 4 ¡ 8 ¡ 16 ¡ 32 ¡ Number ¡of ¡Cores ¡
Raytracing Application Speed-Up vs. original C Code Solve ¡ Solve ¡ Merge ¡ Read ¡ Gen ¡ Scene ¡ Image ¡ Solve ¡ 32 ¡ Number ¡of ¡Cores ¡ 16 ¡ 8 ¡ 4 ¡ 2 ¡ 1 ¡ 0.00 ¡ 2.00 ¡ 4.00 ¡ 6.00 ¡ 8.00 ¡ 10.00 ¡ 12.00 ¡ 14.00 ¡ 1 ¡ 2 ¡ 4 ¡ 8 ¡ 16 ¡ 32 ¡ SpeedUp ¡ 0.97 ¡ 1.27 ¡ 2.13 ¡ 3.62 ¡ 6.22 ¡ 12.11 ¡ Speed-‑Up ¡
S-Net Features Splitting using Distributed Memory Solve ¡ Solve ¡ Solve ¡ Solve ¡ Solve ¡ Solve ¡ net ¡split ¡{ ¡ net ¡split ¡{ ¡ ¡ ¡box ¡Solve( ¡(scene) ¡-‑> ¡(raster)); ¡ ¡ ¡box ¡Solve( ¡(scene) ¡-‑> ¡(raster)); ¡ } ¡connect ¡Solve !<task> ; ¡ } ¡connect ¡Solve !@<task> ; ¡
Raytracing Application Runtime on Cluster Solve ¡ Solve ¡ Merge ¡ Read ¡ Gen ¡ Scene ¡ Image ¡ Solve ¡ 450 ¡ 400 ¡ RunQme ¡in ¡Seconds ¡ 350 ¡ 300 ¡ 250 ¡ 200 ¡ 150 ¡ 100 ¡ 50 ¡ 0 ¡ 1 ¡ 2 ¡ 4 ¡ 6 ¡ 8 ¡ 10 ¡ 12 ¡ Number ¡of ¡Nodes ¡
Raytracing Application Speed-Up vs. original C Code and MPI Solve ¡ Solve ¡ Merge ¡ Read ¡ Gen ¡ Scene ¡ Image ¡ Solve ¡ 12 ¡ Number ¡of ¡Nodes ¡ 8 ¡ 4 ¡ 1 ¡ 0.00 ¡ 1.00 ¡ 2.00 ¡ 3.00 ¡ 4.00 ¡ 5.00 ¡ 6.00 ¡ 1 ¡ 2 ¡ 4 ¡ 6 ¡ 8 ¡ 10 ¡ 12 ¡ MPI/SN ¡ 0.99 ¡ 1.04 ¡ 1.06 ¡ 1.04 ¡ 1.05 ¡ 1.06 ¡ 1.06 ¡ Seq/SN ¡ 0.98 ¡ 1.23 ¡ 2.06 ¡ 3.19 ¡ 3.57 ¡ 4.13 ¡ 4.79 ¡ Speed-‑Up ¡
Utilising Resources Efficiently Dynamic Load Scheduling Sub-‑ ¡ Sub-‑ ¡ Prob ¡ Prob ¡ Problem ¡ Sub-‑ ¡ Prob ¡ Sub-‑ ¡ Prob ¡ Sub-‑ ¡ Prob ¡
Utilising Resources Efficiently Dynamic Load Scheduling Sub-‑ ¡ Prob ¡ Problem ¡ Sub-‑ ¡ Prob ¡ Sub-‑ ¡ Prob ¡ Sub-‑ ¡ Prob ¡ Sub-‑ ¡ Prob ¡
Utilising Resources Efficiently Dynamic Load Scheduling Sub-‑ ¡ Prob ¡ Problem ¡ Sub-‑ ¡ Prob ¡ Sub-‑ ¡ Prob ¡ Sub-‑ ¡ Prob ¡ Sub-‑ ¡ Result ¡
Utilising Resources Efficiently Dynamic Load Scheduling Problem ¡ Sub-‑ ¡ Sub-‑ ¡ Result ¡ Result ¡ Sub-‑ ¡ Result ¡ Result ¡ Sub-‑ ¡ Sub-‑ ¡ Result ¡ Result ¡
Utilising Resources Efficiently Dynamic Load Scheduling in S-Net {<cpu>} ¡ Solve ¡ Read ¡ Merge ¡ Scene ¡ {cpu} ¡ {cpu} ¡ {sub} ¡ {sub} ¡ {cpu} ¡ {sub} ¡ {cpu} ¡ {sub} ¡
Utilising Resources Efficiently Dynamic Load Scheduling in S-Net {<cpu>} ¡ {scn_name, ¡ <num_tasks>, ¡ <num_cpus>} ¡ Solve ¡ Read ¡ Merge ¡ Scene ¡ {cpu} ¡ {cpu} ¡ {sub} ¡ {sub} ¡ {cpu} ¡ {sub} ¡ {cpu} ¡ {sub} ¡ ¡ ¡ ¡{scene, ¡<task>, ¡<num_tasks>, ¡<cpu>} ¡ | ¡{scene, ¡<task>, ¡<num_tasks>} ¡
S-Net Combinators Choice ¡ ¡ ¡{raster, ¡<task>} ¡ ¡ ¡ ¡{scene, ¡<task>,<cpu>} ¡ | ¡{<cpu>} ¡ Solve ¡ {cpu} ¡ {cpu} ¡ {sub} ¡ {sub} ¡ {cpu} ¡ {sub} ¡ {cpu} ¡ {scn} ¡ ¡ ¡ ¡{<cpu>} ¡ ¡ ¡ ¡{<cpu>, ¡scene} ¡ | ¡{scene, ¡<task>} ¡ net ¡solving ¡{ ¡ ¡ ¡ ¡... ¡ } ¡connect ¡(Solve ¡| ¡[|{cpu},{scene}|]) ¡*{raster}; ¡
Raytracing Application Parallelised Approach {<cpu>} ¡ Solve ¡ Solve ¡ Read ¡ Solve ¡ Merge ¡ Scene ¡ {cpu} ¡ {cpu} ¡ {sub} ¡ {sub} ¡ {cpu} ¡ {sub} ¡ {cpu} ¡ {sub} ¡
Raytracing Application Runtime in Shared Memory {<cpu>} ¡ Solve ¡ Solve ¡ Merge ¡ Solve ¡ Read ¡ Scene ¡ {cpu} ¡ {cpu} ¡ {sub} ¡ {sub} ¡ {cpu} ¡ {sub} ¡ {cpu} ¡ {sub} ¡ 500 ¡ RunQme ¡in ¡Seconds ¡ 400 ¡ 300 ¡ 200 ¡ 100 ¡ 0 ¡ 1 ¡ 2 ¡ 4 ¡ 8 ¡ 16 ¡ 32 ¡ Number ¡of ¡Cores ¡
Raytracing Application Runtime on Cluster + Shared Memory {<cpu>} ¡ Solve ¡ Solve ¡ Merge ¡ Solve ¡ Read ¡ Scene ¡ {cpu} ¡ {cpu} ¡ {sub} ¡ {sub} ¡ {cpu} ¡ {sub} ¡ {cpu} ¡ {sub} ¡ 450 ¡ 400 ¡ RunQme ¡in ¡Seconds ¡ 350 ¡ 300 ¡ 250 ¡ 200 ¡ 150 ¡ 100 ¡ 50 ¡ 0 ¡ 1 ¡ 2 ¡ 4 ¡ 8 ¡ 12 ¡ Number ¡of ¡Nodes ¡
S-Net on one Slide Combinators A A ¡ B ¡ B A .. B A | B A A A ¡ … A*{p} A!<t> A
Thank you! End.
S-Net Tool-Chain Overview S-‑Net ¡ Box ¡ Box ¡ Compiler ¡ Compiler ¡ Interface ¡ S-‑Net ¡ RunQme ¡ S-‑Net ¡ Library ¡/ ¡ Module ¡ Objects ¡ Executable ¡
Recommend
More recommend