This is a large issue, so will be addressed in multiple parts
High priority:
Reimplement DotMP.Parallel.Sections to take an arbitrary number of Actions instead of using DotMP.Parallel.Section. This diverges from OpenMP, but this is okay. The current implementation encroaches on what a tasking system would provide.
Implement DotMP.Parallel.Task(Action). We can reuse some existing code that the current Sections construct uses.
Implement DotMP.Parallel.Taskwait. This will be necessary for synchronization.
Medium priority:
Implement dependency chains. This will require an implementation of a dependency graph and ways to optimize/traverse the graph. I have some ideas, but would appreciate anyone chiming in with recommendations.
Implement DotMP.Parallel.Taskloop. These will be handy to have as an alternative to DotMP.Parallel.For.
Low priority:
Implement DotMP.Parallel.ParallelMaster. This is simply a combination of DotMP.Parallel.ParallelRegion and DotMP.Parallel.Master.
Implement DotMP.Parallel.MasterTaskloop. This is simply a combination of DotMP.Parallel.Master and DotMP.Parallel.Taskloop.
Implement DotMP.Parallel.ParallelMasterTaskloop. This is simply a combination of DotMP.Parallel.ParallelRegion, DotMP.Parallel.Master, and DotMP.Parallel.Taskloop.
This is a large issue, so will be addressed in multiple parts
High priority:
DotMP.Parallel.Sections
to take an arbitrary number ofAction
s instead of usingDotMP.Parallel.Section
. This diverges from OpenMP, but this is okay. The current implementation encroaches on what a tasking system would provide.DotMP.Parallel.Task(Action)
. We can reuse some existing code that the currentSections
construct uses.DotMP.Parallel.Taskwait
. This will be necessary for synchronization.Medium priority:
DotMP.Parallel.Taskloop
. These will be handy to have as an alternative toDotMP.Parallel.For
.Low priority:
DotMP.Parallel.ParallelMaster
. This is simply a combination ofDotMP.Parallel.ParallelRegion
andDotMP.Parallel.Master
.DotMP.Parallel.MasterTaskloop
. This is simply a combination ofDotMP.Parallel.Master
andDotMP.Parallel.Taskloop
.DotMP.Parallel.ParallelMasterTaskloop
. This is simply a combination ofDotMP.Parallel.ParallelRegion
,DotMP.Parallel.Master
, andDotMP.Parallel.Taskloop
.