[all-commits] [llvm/llvm-project] 8fe11a: [Flang][OpenMP] Lowering of host-evaluated clauses...

Sergio Afonso via All-commits all-commits at lists.llvm.org
Tue Jan 14 05:55:39 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 8fe11a26ae8f12622ddec83a7b80637080843a8b
      https://github.com/llvm/llvm-project/commit/8fe11a26ae8f12622ddec83a7b80637080843a8b
  Author: Sergio Afonso <safonsof at amd.com>
  Date:   2025-01-14 (Tue, 14 Jan 2025)

  Changed paths:
    M flang/include/flang/Common/OpenMP-utils.h
    M flang/lib/Common/OpenMP-utils.cpp
    M flang/lib/Lower/OpenMP/OpenMP.cpp
    A flang/test/Lower/OpenMP/host-eval.f90
    A flang/test/Lower/OpenMP/target-spmd.f90
    M mlir/include/mlir/Dialect/OpenMP/OpenMPClauseOperands.h

  Log Message:
  -----------
  [Flang][OpenMP] Lowering of host-evaluated clauses (#116219)

This patch adds support for lowering OpenMP clauses and expressions
attached to constructs nested inside of a target region that need to be
evaluated in the host device. This is done through the use of the
`OpenMP_HostEvalClause` `omp.target` set of operands and entry block
arguments.

When lowering clauses for a target construct, a more involved
`processHostEvalClauses()` function is called, which looks at the
current and potentially other nested constructs in order to find and
lower clauses that need to be processed outside of the `omp.target`
operation under construction. This populates an instance of a global
structure with the resulting MLIR values.

The resulting list of host-evaluated values is used to initialize the
`host_eval` operands when constructing the `omp.target` operation, and
then replaced with the corresponding block arguments after creating that
operation's region.

Afterwards, while lowering nested operations, those that might
potentially be evaluated on the host (i.e. `num_teams`, `thread_limit`,
`num_threads` and `collapse`) check first whether there is an active
global host-evaluated information structure and whether it holds values
referring to these clauses. If that is the case, the stored values
(`omp.target` entry block arguments at that stage) are used instead of
lowering these clauses again.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list