[PATCH] D114413: [OpenMPIRBuilder] Implement static-chunked workshare-loop schedules.

Michael Kruse via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Sat Jan 29 13:31:16 PST 2022


Meinersbur added a comment.

@peixin Thanks for testing edge cases. You hit multiple issues:

1. Chunksize was i32, combining it with a i64 induction variable caused an error. Fixed the latest update of this patch.
2. OpenMPIRBuilder currently doesn't work really with exceptions. See D115216 <https://reviews.llvm.org/D115216> for a start of a discussion with `#pragma omp parallel`. Support for irregular exits (exceptions, cancellation, destructors) out of CanonicalLoopInfo is what I was working on recently. Use `-fno-exceptions` to work around.
3. There is an off-by-one error that I already fixed in my development branch. Upstream patch here: D118542 <https://reviews.llvm.org/D118542>

Result with these fixes for me is:

  lb: 18446744073709551615
  ub: 1844674407370955161
  step: 1844674407370955161
  18446744073709551615
  16602069666338596454
  14757395258967641293
  12912720851596686132
  11068046444225730971
  9223372036854775810
  7378697629483820649
  5534023222112865488
  3689348814741910327
  1844674407370955166

Note that this does involve `__kmpc_doacross_init` code in libomp you pointed-to in D116292 <https://reviews.llvm.org/D116292>. This uses `__kmpc_for_static_init` calls of which there are 4 variants for (signed/unsigned x 32/64 bits). To do `__kmpc_doacross_init` correctly, it would also need at least have variants for signed/unsigned (or one working internally with signed 128 bits).


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D114413/new/

https://reviews.llvm.org/D114413



More information about the cfe-commits mailing list