From ed4a9e1bc37ad5b9c799cca736bcabaff87ea801 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 25 Jan 2021 17:54:24 +0100 Subject: [PATCH] Add branch diagram --- garlic/doc/Makefile | 3 +- garlic/doc/branch.ms | 22 ++++++ garlic/doc/gitbranch.pic | 152 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 176 insertions(+), 1 deletion(-) create mode 100644 garlic/doc/branch.ms create mode 100644 garlic/doc/gitbranch.pic diff --git a/garlic/doc/Makefile b/garlic/doc/Makefile index a6270bb..d6f72f9 100644 --- a/garlic/doc/Makefile +++ b/garlic/doc/Makefile @@ -1,4 +1,5 @@ -all: execution.pdf execution.utf8 execution.ascii pp.pdf pp.utf8 pp.ascii +all: execution.pdf execution.utf8 execution.ascii pp.pdf pp.utf8 pp.ascii\ + branch.pdf TTYOPT=-rPO=4m -rLL=72m PDFOPT=-dpaper=a4 -rPO=4c -rLL=13c diff --git a/garlic/doc/branch.ms b/garlic/doc/branch.ms new file mode 100644 index 0000000..b4e6216 --- /dev/null +++ b/garlic/doc/branch.ms @@ -0,0 +1,22 @@ +.\".fam CMU +.\".TL +.\"Garlic: git branch name +.\".AU +.\"Rodrigo Arias Mallo +.\".AI +.\"Barcelona Supercomputing Center +.\"##################################################################### +.nr GROWPS 3 +.nr PSINCR 1.5p +.\".nr PD 0.5m +.nr PI 2m +\".2C +.\"##################################################################### +\".NH 1 +\"Instructions +\".LP +\"To name a branch of a program, please follow the flowchart below. +.ps -2 +.PS 5/25.4 +copy "gitbranch.pic" +.PE diff --git a/garlic/doc/gitbranch.pic b/garlic/doc/gitbranch.pic new file mode 100644 index 0000000..939e926 --- /dev/null +++ b/garlic/doc/gitbranch.pic @@ -0,0 +1,152 @@ +#.ps -3 +#.fam CMU +#.PS 4.5/25.4 # Scale drawing to 20/25.4 in = +# = 20/25.4[in]/25.4[mm/in] = 20 mm +# FLOWCHART - Basic flow chart blocks. +scale=25.4 #Scale units from inches to mm +csize=2.0 #Cell size in mm +pstricks=0 +dx=0; dy=2; +define process +{[ + box $1; +]} +# decision(): rhomboid -> if block +define decision {[ + boxwid=boxwid*1.2 + boxht=boxht*1.2 + B: box invis $1; + line from B.n to B.e to B.s to B.w to B.n; +]} + +#--- END OF MACROS --- +boxwid=30 +fillval=1 +circlerad=10 +down +START: circle "Start" +arrow +D_MPIB: decision("MPI-based?") +arrow " Yes" ljust +D_TAMPI: decision("TAMPI?") +arrow " Yes" ljust +TAMPI: process("\fB+tampi\fP") +right +move to D_TAMPI.e +arrow "No" above +D_MPI: decision("MPI?") +down +move to D_MPI.s +arrow " Yes" ljust +MPI: process("\fB+mpi\fP") +move to TAMPI.s +A_TAMPI: arrow linewid +line from MPI.s to MPI.c - (0,boxht) \ + to A_TAMPI.c +circle at A_TAMPI.c rad 0.7 filled +move at A_TAMPI +D_ISEND: decision("MPI_Isend()?") +arrow " Yes" ljust +ISEND: process("\fB+isend\fP") +A_ISEND: arrow +right +move to D_ISEND.e +arrow "No" above +D_SEND: decision("MPI_Send()?") +down +move to D_SEND.s +arrow " Yes" ljust +SEND: process("\fB+send\fP") +right +move to D_SEND.e +arrow "No" above +D_RMA: decision("MPI_Get()?") +down +move to D_RMA.s +arrow " Yes" ljust +RMA: process("\fB+rma\fP") +line "No" above from D_MPIB.w to D_MPIB.w - (boxwid,0) +line to (D_MPIB.w.x-boxwid, A_ISEND.c.y) \ + to A_ISEND.c +line from SEND.s to SEND.c - (0,boxht) \ + to A_ISEND.c +line from RMA.s to RMA.c - (0,boxht) \ + to SEND.c - (0,boxht) +circle at A_ISEND.c rad 0.7 filled +move at A_ISEND +D_MT: decision("multithread?") +arrow " Yes" ljust +D_OMP: decision("OpenMP?") +arrow " Yes" ljust +OMP: process("\fB+omp\fP") +right +move to D_OMP.e +arrow "No" above +D_OSS: decision("OmpSs-2?") +down +move to D_OSS.s +arrow " Yes" ljust +OSS: process("\fB+oss\fP") +down +move to OMP.s +A_OMP: arrow +circle at A_OMP.c rad 0.7 filled +line from OSS.s to OSS.c - (0,boxht) \ + to A_OMP.c +move to A_OMP.s +D_FJ: decision("fork-join?") +arrow " Yes" ljust +FJ: process("\fB+fork\fP") +right +move to D_FJ.e +arrow "No" above +D_TASKFOR: decision("task for?") +arrow "No" above +down +move to D_TASKFOR.s +arrow " Yes" ljust +TASKFOR: process("\fB+taskfor\fP") +right +move to D_TASKFOR.e +arrow "No" above +D_TASK: decision("task model?") +down +move to D_TASK.s +arrow " Yes" ljust +TASK: process("\fB+task\fP") +move to FJ.s +A_FJ: arrow +circle at A_FJ.c rad 0.7 filled +line from TASKFOR.s to TASKFOR.c - (0,boxht) \ + to A_FJ.c +line from TASK.s to TASK.c - (0,boxht) \ + to TASKFOR.c - (0,boxht) +left +move to OMP.c - (boxwid,0) +SEQ: process("\fB+seq\fP") +line "No" above from D_MT.w to (SEQ.x, D_MT.w.y) +arrow to SEQ.n +line from SEQ.s to (SEQ.s.x, A_FJ.c.y) to A_FJ.c +down +move to A_FJ.s +D_SIMD: decision("SIMD opt.?") +move to D_SIMD.e +right +arrow "Yes" above +SIMD: process("\fB+simd\fP") +down +move to D_SIMD.s +arrow " No" ljust +END: circle "End" +circle radius circlerad*0.9 at END +arrow from SIMD.s to (SIMD.x, END.y) to END.e + +# Error lines +ERR: circle "Error" at (TASK.x+boxwid, END.y) +circle radius circlerad*0.9 at ERR +line "No" above from D_TASK.e to (ERR.n.x,D_TASK.e.y) +line "No" above from D_OSS.e to (ERR.n.x,D_OSS.e.y) +line "No" above from D_RMA.e to (ERR.n.x,D_RMA.e.y) +line "No" above from D_MPI.e to (ERR.n.x,D_MPI.e.y) +arrow to ERR.n +#.PE