From 149c2dc71bb44a9365ea3c360304f75cb9056084 Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <tschwinge@baylibre.com>
Date: Tue, 16 Jul 2024 17:09:38 +0200
Subject: [PATCH] libgomp: Document 'GOMP_teams4'
For reference:
- <https://inbox.sourceware.org/20211111190313.GV2710@tucnak> "[PATCH] openmp: Honor OpenMP 5.1 num_teams lower bound"
- <https://inbox.sourceware.org/20211112132023.GC2710@tucnak> "[PATCH] libgomp, nvptx: Honor OpenMP 5.1 num_teams lower bound"
libgomp/
* config/gcn/target.c (GOMP_teams4): Document.
* config/nvptx/target.c (GOMP_teams4): Likewise.
* target.c (GOMP_teams4): Likewise.
---
libgomp/config/gcn/target.c | 8 ++++++++
libgomp/config/nvptx/target.c | 8 ++++++++
libgomp/target.c | 9 +++++++++
3 files changed, 25 insertions(+)
@@ -29,6 +29,14 @@
extern volatile struct gomp_offload_icvs GOMP_ADDITIONAL_ICVS;
+/* Implement OpenMP 'teams' construct.
+
+ Initialize upon FIRST call. Return whether this invocation is active.
+ Depending on whether NUM_TEAMS_LOWER asks for more teams than are provided
+ in hardware, we may need to loop multiple times; in that case make sure to
+ update the team-level variable used by 'omp_get_team_num', as we then can't
+ just use '__builtin_gcn_dim_pos (0)'. */
+
bool
GOMP_teams4 (unsigned int num_teams_lower, unsigned int num_teams_upper,
unsigned int thread_limit, bool first)
@@ -31,6 +31,14 @@ extern int __gomp_team_num __attribute__((shared));
extern volatile struct gomp_offload_icvs GOMP_ADDITIONAL_ICVS;
volatile struct rev_offload *GOMP_REV_OFFLOAD_VAR;
+/* Implement OpenMP 'teams' construct.
+
+ Initialize upon FIRST call. Return whether this invocation is active.
+ Depending on whether NUM_TEAMS_LOWER asks for more teams than are provided
+ in hardware, we may need to loop multiple times; in that case make sure to
+ update the team-level variable used by 'omp_get_team_num', as we then can't
+ just use '%ctaid.x'. */
+
bool
GOMP_teams4 (unsigned int num_teams_lower, unsigned int num_teams_upper,
unsigned int thread_limit, bool first)
@@ -4355,6 +4355,8 @@ gomp_target_task_fn (void *data)
return false;
}
+/* Implement OpenMP 'teams' construct, legacy entry point. */
+
void
GOMP_teams (unsigned int num_teams, unsigned int thread_limit)
{
@@ -4367,6 +4369,13 @@ GOMP_teams (unsigned int num_teams, unsigned int thread_limit)
(void) num_teams;
}
+/* Implement OpenMP 'teams' construct.
+
+ Initialize upon FIRST call. Return whether this invocation is active.
+ Depending on whether NUM_TEAMS_LOW asks for more teams than are provided
+ in hardware, we may need to loop multiple times; in that case make sure to
+ update the team-level variable used by 'omp_get_team_num'. */
+
bool
GOMP_teams4 (unsigned int num_teams_low, unsigned int num_teams_high,
unsigned int thread_limit, bool first)
--
2.34.1