I have a question about dependency tracking in kmp_taskdeps.cpp.
I see that dependency edges are created between nodes based on the base address (base_addr) of the dependency. However, I don’t see the length (len) being taken into consideration to determine node connections.
Am I missing something or is this a feature not yet implemented?
one restriction of “2.13.9 depend Clause” says:
“List items used in depend clauses of the same task or sibling tasks must indicate identical storage locations or disjoint storage locations.”
I think this means that array sections in the depend clauses must not overlap unless they are completely the same. So it is an optimization to only compare the base address because if the lengths don’t match, the program is non-conforming anyway.
What you are missing is that the way that task dependencies are defined in OpenMP means that the only thing that matters is the base address. Therefore there is no need to consider the length at runtime. (In effect the address is just a unique identifier which is easy to create, it has no real semantic content beyond that).
James Cownie firstname.lastname@example.org
SSG/DPD/TCAR (Technical Computing, Analyzers and Runtimes)
Tel: +44 117 9071438
Thanks for the answers!
I was planning on implementing support for array lengths, but it seems not necessary since the current library is following the specification correctly.