forked from rarias/bscpkgs
		
	
		
			
				
	
	
		
			153 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #.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
 |