)]}' { "commit": "55041405c79baff7cabb9b57f9db04d07b480abd", "tree": "f3e605fec6ef8978560b921603644b7084fb8226", "parents": [ "d0cbccf1bfbadbf8cfa3573e8dc50d6f7f32e967" ], "author": { "name": "Peyton, Jonathan L", "email": "jonathan.l.peyton@intel.com", "time": "Mon Mar 15 14:02:34 2021 -0500" }, "committer": { "name": "Copybara-Service", "email": "copybara-worker@google.com", "time": "Sat Apr 17 21:36:26 2021 -0700" }, "message": "[OpenMP] Implement GOMP task reductions\n\nImplement the remaining GOMP_* functions to support task reductions\nin taskgroup, parallel, loop, and taskloop constructs. The unused mem\nargument to many of the work-sharing constructs has to do with the\nscan() directive/ inscan() modifier. If mem is set, each function\nwill call KMP_FATAL() and tell the user scan/inscan is unsupported. The\nGOMP reduction implementation is kept separate from our implementation\nbecause of how GOMP presents reduction data and computes the reductions.\nGOMP expects the privatized copies to be present even after a #pragma\nomp parallel reduction(task:...) region has ended so the data is stored\ninside GOMP\u0027s uintptr_t* data pseudo-structure. This style is tightly\ncoupled with GCC compiler codegen. There also isn\u0027t any init(),\ncombiner(), fini() functions in GOMP\u0027s codegen so the two\nimplementations were to disparate to try to wrap GOMP\u0027s around our own.\n\nDifferential Revision: https://reviews.llvm.org/D98806\n\nGitOrigin-RevId: 4457565757ea91207b7e5f2ce7b7bf173bfd2c0c\n", "tree_diff": [ { "type": "modify", "old_id": "c37e1d9feb57d4b288345f0f9ce4d365bdd9fa70", "old_mode": 33188, "old_path": "runtime/src/kmp.h", "new_id": "5084640cae82e55b2d27b209212e4bc8572250a3", "new_mode": 33188, "new_path": "runtime/src/kmp.h" }, { "type": "modify", "old_id": "c122dce47d5d0e9c43969e6bf7324f6d3379b79d", "old_mode": 33188, "old_path": "runtime/src/kmp_ftn_os.h", "new_id": "5b9e396e3dd91ef404937ceca24b7c7af78b4014", "new_mode": 33188, "new_path": "runtime/src/kmp_ftn_os.h" }, { "type": "modify", "old_id": "e57641351a043c558300f86240101f8ca3cf8a7e", "old_mode": 33188, "old_path": "runtime/src/kmp_gsupport.cpp", "new_id": "d4e0c5b18b1bf13aa2d79bdb40e4a02994c5fa0d", "new_mode": 33188, "new_path": "runtime/src/kmp_gsupport.cpp" }, { "type": "modify", "old_id": "d6409f7b7d470d1b9d8b39bdd0eb2730c2a33b69", "old_mode": 33188, "old_path": "runtime/src/kmp_tasking.cpp", "new_id": "8964decfb1ce3eea2746d5d16e0db82e62c3928b", "new_mode": 33188, "new_path": "runtime/src/kmp_tasking.cpp" }, { "type": "modify", "old_id": "6683ab682591280461f24f46d4fad42f3f734288", "old_mode": 33188, "old_path": "runtime/test/tasking/omp_task_red_taskloop.c", "new_id": "17130f4c54805c8adad3c8973cc5328ff3271138", "new_mode": 33188, "new_path": "runtime/test/tasking/omp_task_red_taskloop.c" }, { "type": "add", "old_id": "0000000000000000000000000000000000000000", "old_mode": 0, "old_path": "/dev/null", "new_id": "39712ea8f48c4004f7ae3d6d0e20a8bc887d63a5", "new_mode": 33188, "new_path": "runtime/test/tasking/task_reduction1.c" }, { "type": "add", "old_id": "0000000000000000000000000000000000000000", "old_mode": 0, "old_path": "/dev/null", "new_id": "06a93b44dff14b7bf8dc5f439c34e8502eb9b809", "new_mode": 33188, "new_path": "runtime/test/tasking/task_reduction2.c" }, { "type": "add", "old_id": "0000000000000000000000000000000000000000", "old_mode": 0, "old_path": "/dev/null", "new_id": "b125e3f6b38536e68e64d7979e3da1d8770bcf43", "new_mode": 33188, "new_path": "runtime/test/tasking/task_reduction3.c" }, { "type": "add", "old_id": "0000000000000000000000000000000000000000", "old_mode": 0, "old_path": "/dev/null", "new_id": "9b686ab9f4b9b03551afd393b245b1b6b1a34e6f", "new_mode": 33188, "new_path": "runtime/test/tasking/task_reduction4.c" } ] }