1.23
2.0
main
test-branch
| Line | |
|---|
| 1 | Key concept is one of independence of code executed in "omp parallel" scopes
|
|---|
| 2 | - "for" can be independent if loop is dependence-free
|
|---|
| 3 | - "single" is implicitly independent, but what about inside/outside?
|
|---|
| 4 | - "critical" is implicitly independent
|
|---|
| 5 | - "barrier" ?
|
|---|
| 6 | - "parallel" is independent if ALL subconstructs are independent
|
|---|
| 7 |
|
|---|
| 8 | Strategies for computing independence
|
|---|
| 9 | - overapproximate dependence - if there is none then its independent
|
|---|
| 10 | - precise dependence tracking, e.g., symbolic execution
|
|---|
| 11 | - note that this really should be demand-driven and targetted at
|
|---|
| 12 | shared data
|
|---|
| 13 |
|
|---|
| 14 | Systematic analysis of constructs
|
|---|
| 15 | - "omp for"
|
|---|
| 16 | - sync -> breaks regions into before and after
|
|---|
| 17 | - "omp for nowait"
|
|---|
| 18 | - "omp master", "omp single", "omp atomic"
|
|---|
| 19 | - a single thread executes within block
|
|---|
| 20 | - no sync on entry or exit
|
|---|
| 21 | - atomic has a very restricted form
|
|---|
| 22 | - "omp critical"
|
|---|
| 23 | - one thread at a time in the block
|
|---|
| 24 | - no sync on entry or exit
|
|---|
| 25 | - "omp barrier"
|
|---|
| 26 | - sync -> breaks regions into before and after
|
|---|
| 27 | - "omp sections"
|
|---|
| 28 | - "omp section"
|
|---|
| 29 |
|
|---|
| 30 | Clauses
|
|---|
| 31 | - "if", "num_threads"
|
|---|
| 32 | - these can be ignored, we check unconditional independence of workshares
|
|---|
| 33 | - privacy-related
|
|---|
| 34 | - must be processed to accurately compute dependences
|
|---|
| 35 |
|
|---|
| 36 | Deferred until later
|
|---|
| 37 | - "omp taskwait"
|
|---|
| 38 | - "omp taskgroup"
|
|---|
| 39 | - "omp flush"
|
|---|
| 40 | - "omp ordered"
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.