* [PATCH] openmp: Add support for omp_get_supported_active_levels
@ 2020-10-13 18:05 Kwok Cheung Yeung
2020-10-13 18:36 ` Jakub Jelinek
2020-10-14 8:20 ` Jakub Jelinek
0 siblings, 2 replies; 8+ messages in thread
From: Kwok Cheung Yeung @ 2020-10-13 18:05 UTC (permalink / raw)
To: GCC Patches, Jakub Jelinek, Tobias Burnus
[-- Attachment #1: Type: text/plain, Size: 857 bytes --]
Hello
This adds support for the omp_get_supported_active_levels OpenMP runtime
routine, first introduced in the 5.0 standard. This routine returns the maximum
level of nested active parallel regions supported on a particular implementation
of OpenMP, and the current maximum number cannot be set higher than this.
The maximum number in libgomp was initialized to INT_MAX (effectively uncapped),
so I set the corresponding ICV for omp_get_supported_active_levels to INT_MAX
too. Attempts to set the maximum to higher than this using
omp_set_max_active_levels or by setting OMP_MAX_ACTIVE_LEVELS will result in the
max active levels silently being set to the maximum supported (although since
omp_set_max_active_levels takes an int and the maximum supported is INT_MAX,
this is effectively impossible at the moment).
Okay for trunk?
Thanks
Kwok
[-- Attachment #2: omp_get_supported_active_levels.patch --]
[-- Type: text/plain, Size: 10543 bytes --]
commit aa519103d7eeaeed825fd358e9532bf51f4be0a9
Author: Kwok Cheung Yeung <kcy@codesourcery.com>
Date: Wed Oct 7 09:34:32 2020 -0700
openmp: Add support for the omp_get_supported_active_levels runtime library routine
This patch implements the omp_get_supported_active_levels runtime routine
from the OpenMP 5.0 specification, which returns the maximum number of
active nested parallel regions supported by this implementation. The
current maximum (set using the omp_set_max_active_levels routine or the
OMP_MAX_ACTIVE_LEVELS environment variable) cannot exceed this number.
2020-10-13 Kwok Cheung Yeung <kcy@codesourcery.com>
libgomp/
* env.c (gomp_supported_active_levels): New global variable.
(gomp_max_active_levels_var): Initialize to
gomp_supported_active_levels.
(initialize_env): Limit gomp_max_active_levels_var to be at most
equal to gomp_supported_active_levels.
* fortran.c (omp_get_supported_active_levels): Add ialias_redirect.
(omp_get_supported_active_levels_): New.
* icv.c (omp_set_max_active_levels): Limit gomp_max_active_levels_var
to at most equal to gomp_supported_active_levels.
(omp_get_supported_active_levels): New.
* libgomp.h (gomp_supported_active_levels): New.
* libgomp.map (OMP_5.0): Add omp_get_supported_active_levels and
omp_get_supported_active_levels_.
* libgomp.texi (omp_get_supported_active_levels): New.
(omp_set_max_active_levels): Update. Add reference to
omp_get_supported_active_levels.
* omp.h.in (omp_get_supported_active_levels): New.
* omp_lib.f90.in (omp_get_supported_active_levels): New.
* omp_lib.h.in (omp_get_supported_active_levels): New.
* testsuite/libgomp.c/lib-2.c (main): Check omp_get_max_active_levels
against omp_get_supported_active_levels.
* testsuite/libgomp.fortran/lib4.f90 (lib4): Likewise.
diff --git a/libgomp/env.c b/libgomp/env.c
index c0c4730..539d7a9 100644
--- a/libgomp/env.c
+++ b/libgomp/env.c
@@ -73,7 +73,8 @@ struct gomp_task_icv gomp_global_icv = {
.target_data = NULL
};
-unsigned long gomp_max_active_levels_var = INT_MAX;
+const unsigned long gomp_supported_active_levels = INT_MAX;
+unsigned long gomp_max_active_levels_var = gomp_supported_active_levels;
bool gomp_cancel_var = false;
int gomp_max_task_priority_var = 0;
#ifndef HAVE_SYNC_BUILTINS
@@ -1369,6 +1370,8 @@ initialize_env (void)
parse_int ("OMP_MAX_TASK_PRIORITY", &gomp_max_task_priority_var, true);
parse_unsigned_long ("OMP_MAX_ACTIVE_LEVELS", &gomp_max_active_levels_var,
true);
+ if (gomp_max_active_levels_var > gomp_supported_active_levels)
+ gomp_max_active_levels_var = gomp_supported_active_levels;
gomp_def_allocator = parse_allocator ();
if (parse_unsigned_long ("OMP_THREAD_LIMIT", &thread_limit_var, false))
{
diff --git a/libgomp/fortran.c b/libgomp/fortran.c
index 9d838b3..029dec1 100644
--- a/libgomp/fortran.c
+++ b/libgomp/fortran.c
@@ -63,6 +63,7 @@ ialias_redirect (omp_get_schedule)
ialias_redirect (omp_get_thread_limit)
ialias_redirect (omp_set_max_active_levels)
ialias_redirect (omp_get_max_active_levels)
+ialias_redirect (omp_get_supported_active_levels)
ialias_redirect (omp_get_level)
ialias_redirect (omp_get_ancestor_thread_num)
ialias_redirect (omp_get_team_size)
@@ -418,6 +419,12 @@ omp_get_max_active_levels_ (void)
}
int32_t
+omp_get_supported_active_levels_ (void)
+{
+ return omp_get_supported_active_levels ();
+}
+
+int32_t
omp_get_level_ (void)
{
return omp_get_level ();
diff --git a/libgomp/icv.c b/libgomp/icv.c
index 3c16abb..1bb46ab 100644
--- a/libgomp/icv.c
+++ b/libgomp/icv.c
@@ -116,7 +116,12 @@ void
omp_set_max_active_levels (int max_levels)
{
if (max_levels >= 0)
- gomp_max_active_levels_var = max_levels;
+ {
+ if (max_levels <= gomp_supported_active_levels)
+ gomp_max_active_levels_var = max_levels;
+ else
+ gomp_max_active_levels_var = gomp_supported_active_levels;
+ }
}
int
@@ -126,6 +131,12 @@ omp_get_max_active_levels (void)
}
int
+omp_get_supported_active_levels (void)
+{
+ return gomp_supported_active_levels;
+}
+
+int
omp_get_cancellation (void)
{
return gomp_cancel_var;
@@ -227,6 +238,7 @@ ialias (omp_get_max_threads)
ialias (omp_get_thread_limit)
ialias (omp_set_max_active_levels)
ialias (omp_get_max_active_levels)
+ialias (omp_get_supported_active_levels)
ialias (omp_get_cancellation)
ialias (omp_get_proc_bind)
ialias (omp_get_initial_device)
diff --git a/libgomp/libgomp.h b/libgomp/libgomp.h
index 87f939a..aa945bb 100644
--- a/libgomp/libgomp.h
+++ b/libgomp/libgomp.h
@@ -438,6 +438,7 @@ extern struct gomp_task_icv gomp_global_icv;
#ifndef HAVE_SYNC_BUILTINS
extern gomp_mutex_t gomp_managed_threads_lock;
#endif
+extern const unsigned long gomp_supported_active_levels;
extern unsigned long gomp_max_active_levels_var;
extern bool gomp_cancel_var;
extern int gomp_max_task_priority_var;
diff --git a/libgomp/libgomp.map b/libgomp/libgomp.map
index c808e810..a4ee968 100644
--- a/libgomp/libgomp.map
+++ b/libgomp/libgomp.map
@@ -172,6 +172,8 @@ OMP_5.0 {
omp_display_affinity_;
omp_get_affinity_format;
omp_get_affinity_format_;
+ omp_get_supported_active_levels;
+ omp_get_supported_active_levels_;
omp_set_affinity_format;
omp_set_affinity_format_;
omp_pause_resource;
diff --git a/libgomp/libgomp.texi b/libgomp/libgomp.texi
index 5331230..1b7710c 100644
--- a/libgomp/libgomp.texi
+++ b/libgomp/libgomp.texi
@@ -177,6 +177,7 @@ linkage, and do not throw exceptions.
* omp_get_num_threads:: Size of the active team
* omp_get_proc_bind:: Whether theads may be moved between CPUs
* omp_get_schedule:: Obtain the runtime scheduling method
+* omp_get_supported_active_levels:: Maxiumum number of active levels supported
* omp_get_team_num:: Get team number
* omp_get_team_size:: Number of threads in a team
* omp_get_thread_limit:: Maximum number of threads
@@ -638,6 +639,31 @@ set to the value @code{omp_sched_static}, @code{omp_sched_dynamic},
@end table
+@node omp_get_supported_active_levels
+@section @code{omp_get_supported_active_levels} -- Maximum number of active regions supported
+@table @asis
+@item @emph{Description}:
+This function returns the maximum number of nested, active parallel regions
+supported by this implementation.
+
+@item @emph{C/C++}
+@multitable @columnfractions .20 .80
+@item @emph{Prototype}: @tab @code{int omp_get_supported_active_levels(void);}
+@end multitable
+
+@item @emph{Fortran}:
+@multitable @columnfractions .20 .80
+@item @emph{Interface}: @tab @code{integer function omp_get_supported_active_levels()}
+@end multitable
+
+@item @emph{See also}:
+@ref{omp_get_max_active_levels}, @ref{omp_set_max_active_levels}
+
+@item @emph{Reference}:
+@uref{https://www.openmp.org, OpenMP specification v5.0}, Section 3.2.15.
+@end table
+
+
@node omp_get_team_num
@section @code{omp_get_team_num} -- Get team number
@@ -877,7 +903,8 @@ adjustment of team sizes and @code{false} disables it.
@table @asis
@item @emph{Description}:
This function limits the maximum allowed number of nested, active
-parallel regions.
+parallel regions. @var{max_levels} must be less or equal to
+the value returned by @code{omp_get_supported_active_levels}.
@item @emph{C/C++}
@multitable @columnfractions .20 .80
@@ -891,7 +918,8 @@ parallel regions.
@end multitable
@item @emph{See also}:
-@ref{omp_get_max_active_levels}, @ref{omp_get_active_level}
+@ref{omp_get_max_active_levels}, @ref{omp_get_active_level},
+@ref{omp_get_supported_active_levels}
@item @emph{Reference}:
@uref{https://www.openmp.org, OpenMP specification v4.5}, Section 3.2.15.
diff --git a/libgomp/omp.h.in b/libgomp/omp.h.in
index 57af737..a9e6c44 100644
--- a/libgomp/omp.h.in
+++ b/libgomp/omp.h.in
@@ -211,6 +211,7 @@ extern void omp_get_schedule (omp_sched_t *, int *) __GOMP_NOTHROW;
extern int omp_get_thread_limit (void) __GOMP_NOTHROW;
extern void omp_set_max_active_levels (int) __GOMP_NOTHROW;
extern int omp_get_max_active_levels (void) __GOMP_NOTHROW;
+extern int omp_get_supported_active_levels (void) __GOMP_NOTHROW;
extern int omp_get_level (void) __GOMP_NOTHROW;
extern int omp_get_ancestor_thread_num (int) __GOMP_NOTHROW;
extern int omp_get_team_size (int) __GOMP_NOTHROW;
diff --git a/libgomp/omp_lib.f90.in b/libgomp/omp_lib.f90.in
index 3ec31ac..2fae57b 100644
--- a/libgomp/omp_lib.f90.in
+++ b/libgomp/omp_lib.f90.in
@@ -394,6 +394,12 @@
end interface
interface
+ function omp_get_supported_active_levels ()
+ integer (4) :: omp_get_supported_active_levels
+ end function omp_get_supported_active_levels
+ end interface
+
+ interface
function omp_get_level ()
integer (4) :: omp_get_level
end function omp_get_level
diff --git a/libgomp/omp_lib.h.in b/libgomp/omp_lib.h.in
index 26dbe03..eb1dcc4 100644
--- a/libgomp/omp_lib.h.in
+++ b/libgomp/omp_lib.h.in
@@ -205,9 +205,11 @@
external omp_get_max_active_levels, omp_get_level
external omp_get_ancestor_thread_num, omp_get_team_size
external omp_get_active_level
+ external omp_get_supported_active_levels
integer(4) omp_get_thread_limit, omp_get_max_active_levels
integer(4) omp_get_level, omp_get_ancestor_thread_num
integer(4) omp_get_team_size, omp_get_active_level
+ integer(4) omp_get_supported_active_levels
external omp_in_final
logical(4) omp_in_final
diff --git a/libgomp/testsuite/libgomp.c/lib-2.c b/libgomp/testsuite/libgomp.c/lib-2.c
index 3a3b3f6..ea7a719 100644
--- a/libgomp/testsuite/libgomp.c/lib-2.c
+++ b/libgomp/testsuite/libgomp.c/lib-2.c
@@ -20,6 +20,8 @@ main (void)
omp_set_max_active_levels (6);
if (omp_get_max_active_levels () != 6)
abort ();
+ if (omp_get_max_active_levels () > omp_get_supported_active_levels ())
+ abort ();
return 0;
}
diff --git a/libgomp/testsuite/libgomp.fortran/lib4.f90 b/libgomp/testsuite/libgomp.fortran/lib4.f90
index d551cde..5259b3b 100644
--- a/libgomp/testsuite/libgomp.fortran/lib4.f90
+++ b/libgomp/testsuite/libgomp.fortran/lib4.f90
@@ -13,4 +13,6 @@ program lib4
if (omp_get_thread_limit ().lt.0) stop 3
call omp_set_max_active_levels (6)
if (omp_get_max_active_levels ().ne.6) stop 4
+ if (omp_get_max_active_levels () &
+ .gt.omp_get_supported_active_levels ()) stop 5
end program lib4
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] openmp: Add support for omp_get_supported_active_levels
2020-10-13 18:05 [PATCH] openmp: Add support for omp_get_supported_active_levels Kwok Cheung Yeung
@ 2020-10-13 18:36 ` Jakub Jelinek
2020-10-13 20:26 ` Kwok Cheung Yeung
2020-10-14 8:20 ` Jakub Jelinek
1 sibling, 1 reply; 8+ messages in thread
From: Jakub Jelinek @ 2020-10-13 18:36 UTC (permalink / raw)
To: Kwok Cheung Yeung; +Cc: GCC Patches, Tobias Burnus
On Tue, Oct 13, 2020 at 07:05:10PM +0100, Kwok Cheung Yeung wrote:
> --- a/libgomp/env.c
> +++ b/libgomp/env.c
> @@ -73,7 +73,8 @@ struct gomp_task_icv gomp_global_icv = {
> .target_data = NULL
> };
>
> -unsigned long gomp_max_active_levels_var = INT_MAX;
> +const unsigned long gomp_supported_active_levels = INT_MAX;
> +unsigned long gomp_max_active_levels_var = gomp_supported_active_levels;
This is not valid C, and while gcc currently in GNU mode accepts it (I think
with optimization only?), we shouldn't use that.
It is valid C++ though.
I'd suggest to
#define gomp_supported_active_levels INT_MAX
in libgomp.h and leave out the const variable. Another possibility is an
enumerator, but we don't include limits.h in libgomp.h.
> --- a/libgomp/libgomp.map
> +++ b/libgomp/libgomp.map
> @@ -172,6 +172,8 @@ OMP_5.0 {
> omp_display_affinity_;
> omp_get_affinity_format;
> omp_get_affinity_format_;
> + omp_get_supported_active_levels;
> + omp_get_supported_active_levels_;
OMP_5.0 symbol version has been shipped already in GCC 9. So we should
never add any further symbols to it.
Thus it needs to be added to OMP_5.0.1 symbol version instead (which is new
in GCC 11).
Otherwise LGTM.
Jakub
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] openmp: Add support for omp_get_supported_active_levels
2020-10-13 18:36 ` Jakub Jelinek
@ 2020-10-13 20:26 ` Kwok Cheung Yeung
0 siblings, 0 replies; 8+ messages in thread
From: Kwok Cheung Yeung @ 2020-10-13 20:26 UTC (permalink / raw)
To: Jakub Jelinek; +Cc: GCC Patches, Tobias Burnus
Now committed to trunk with the suggested fixes. Thanks for the quick review.
Kwok
On 13/10/2020 7:36 pm, Jakub Jelinek wrote:
> I'd suggest to
> #define gomp_supported_active_levels INT_MAX
> in libgomp.h and leave out the const variable. Another possibility is an
> enumerator, but we don't include limits.h in libgomp.h.
>
> OMP_5.0 symbol version has been shipped already in GCC 9. So we should
> never add any further symbols to it.
> Thus it needs to be added to OMP_5.0.1 symbol version instead (which is new
> in GCC 11).
>
> Otherwise LGTM.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] openmp: Add support for omp_get_supported_active_levels
2020-10-13 18:05 [PATCH] openmp: Add support for omp_get_supported_active_levels Kwok Cheung Yeung
2020-10-13 18:36 ` Jakub Jelinek
@ 2020-10-14 8:20 ` Jakub Jelinek
2020-10-15 9:38 ` Kwok Cheung Yeung
1 sibling, 1 reply; 8+ messages in thread
From: Jakub Jelinek @ 2020-10-14 8:20 UTC (permalink / raw)
To: Kwok Cheung Yeung; +Cc: GCC Patches, Tobias Burnus
On Tue, Oct 13, 2020 at 07:05:10PM +0100, Kwok Cheung Yeung wrote:
> +* omp_get_supported_active_levels:: Maxiumum number of active levels supported
Sorry for not catching it during review, but there is a typo above. Fixed
with patch below, committed to trunk.
> +@node omp_get_supported_active_levels
> +@section @code{omp_get_supported_active_levels} -- Maximum number of active regions supported
I also wonder about the different wording between the above two places,
don't you want the same wording as earlier here?
> +@table @asis
> +@item @emph{Description}:
> +This function returns the maximum number of nested, active parallel regions
> +supported by this implementation.
2020-10-14 Jakub Jelinek <jakub@redhat.com>
* libgomp.texi (omp_get_supported_active_levels): Fix a typo.
--- libgomp/libgomp.texi.jj 2020-10-13 22:29:22.215958176 +0200
+++ libgomp/libgomp.texi 2020-10-13 22:29:52.816516414 +0200
@@ -177,7 +177,7 @@ linkage, and do not throw exceptions.
* omp_get_num_threads:: Size of the active team
* omp_get_proc_bind:: Whether theads may be moved between CPUs
* omp_get_schedule:: Obtain the runtime scheduling method
-* omp_get_supported_active_levels:: Maxiumum number of active levels supported
+* omp_get_supported_active_levels:: Maximum number of active levels supported
* omp_get_team_num:: Get team number
* omp_get_team_size:: Number of threads in a team
* omp_get_thread_limit:: Maximum number of threads
Jakub
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] openmp: Add support for omp_get_supported_active_levels
2020-10-14 8:20 ` Jakub Jelinek
@ 2020-10-15 9:38 ` Kwok Cheung Yeung
2020-10-15 9:40 ` Jakub Jelinek
0 siblings, 1 reply; 8+ messages in thread
From: Kwok Cheung Yeung @ 2020-10-15 9:38 UTC (permalink / raw)
To: Jakub Jelinek; +Cc: GCC Patches, Tobias Burnus
[-- Attachment #1: Type: text/plain, Size: 1129 bytes --]
On 14/10/2020 9:20 am, Jakub Jelinek wrote:
> On Tue, Oct 13, 2020 at 07:05:10PM +0100, Kwok Cheung Yeung wrote:
>> +* omp_get_supported_active_levels:: Maxiumum number of active levels supported
>
> Sorry for not catching it during review, but there is a typo above. Fixed
> with patch below, committed to trunk.
>
Thanks.
>> +@node omp_get_supported_active_levels
>> +@section @code{omp_get_supported_active_levels} -- Maximum number of active regions supported
>
> I also wonder about the different wording between the above two places,
> don't you want the same wording as earlier here?
>
Yes, they should be the same... I think I was playing around with wording (since
the description for omp_get_max_active_levels is 'Maximum number of active
regions' - different by one extra word!), and forgot to make them consistent.
Maybe we should change the description of omp_get_max_active_levels to 'Current
maximum number of active regions', to make it more obvious that it can be
changed? 'omp_get_supported_active_levels' can then be 'Maximum number of active
regions supported'.
Okay to apply this patch?
Kwok
[-- Attachment #2: active_levels_doc.patch --]
[-- Type: text/plain, Size: 2159 bytes --]
commit 3f6f8808f74598e274bfb8245c08a5428ee1b3fd
Author: Kwok Cheung Yeung <kcy@codesourcery.com>
Date: Thu Oct 15 02:32:09 2020 -0700
Amend documentation for omp_get_max_active_levels and omp_get_supported_active_levels
2020-10-15 Kwok Cheung Yeung <kcy@codesourcery.com>
libgomp/
* libgomp.texi (omp_get_max_active_levels): Modify description.
(omp_get_supported_active_levels): Make descriptions consistent.
diff --git a/libgomp/libgomp.texi b/libgomp/libgomp.texi
index 4a5e56f..7c6d5fd 100644
--- a/libgomp/libgomp.texi
+++ b/libgomp/libgomp.texi
@@ -167,7 +167,7 @@ linkage, and do not throw exceptions.
* omp_get_default_device:: Get the default device for target regions
* omp_get_dynamic:: Dynamic teams setting
* omp_get_level:: Number of parallel regions
-* omp_get_max_active_levels:: Maximum number of active regions
+* omp_get_max_active_levels:: Current maximum number of active regions
* omp_get_max_task_priority:: Maximum task priority value that can be set
* omp_get_max_threads:: Maximum number of threads of parallel region
* omp_get_nested:: Nested parallel regions
@@ -177,7 +177,7 @@ linkage, and do not throw exceptions.
* omp_get_num_threads:: Size of the active team
* omp_get_proc_bind:: Whether theads may be moved between CPUs
* omp_get_schedule:: Obtain the runtime scheduling method
-* omp_get_supported_active_levels:: Maximum number of active levels supported
+* omp_get_supported_active_levels:: Maximum number of active regions supported
* omp_get_team_num:: Get team number
* omp_get_team_size:: Number of threads in a team
* omp_get_thread_limit:: Maximum number of threads
@@ -380,7 +380,7 @@ which enclose the calling call.
@node omp_get_max_active_levels
-@section @code{omp_get_max_active_levels} -- Maximum number of active regions
+@section @code{omp_get_max_active_levels} -- Current maximum number of active regions
@table @asis
@item @emph{Description}:
This function obtains the maximum allowed number of nested, active parallel regions.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] openmp: Add support for omp_get_supported_active_levels
2020-10-15 9:38 ` Kwok Cheung Yeung
@ 2020-10-15 9:40 ` Jakub Jelinek
0 siblings, 0 replies; 8+ messages in thread
From: Jakub Jelinek @ 2020-10-15 9:40 UTC (permalink / raw)
To: Kwok Cheung Yeung; +Cc: Tobias Burnus, GCC Patches
On Thu, Oct 15, 2020 at 10:38:56AM +0100, Kwok Cheung Yeung wrote:
> Okay to apply this patch?
Ok, thanks.
> commit 3f6f8808f74598e274bfb8245c08a5428ee1b3fd
> Author: Kwok Cheung Yeung <kcy@codesourcery.com>
> Date: Thu Oct 15 02:32:09 2020 -0700
>
> Amend documentation for omp_get_max_active_levels and omp_get_supported_active_levels
>
> 2020-10-15 Kwok Cheung Yeung <kcy@codesourcery.com>
>
> libgomp/
> * libgomp.texi (omp_get_max_active_levels): Modify description.
> (omp_get_supported_active_levels): Make descriptions consistent.
>
> diff --git a/libgomp/libgomp.texi b/libgomp/libgomp.texi
> index 4a5e56f..7c6d5fd 100644
> --- a/libgomp/libgomp.texi
> +++ b/libgomp/libgomp.texi
> @@ -167,7 +167,7 @@ linkage, and do not throw exceptions.
> * omp_get_default_device:: Get the default device for target regions
> * omp_get_dynamic:: Dynamic teams setting
> * omp_get_level:: Number of parallel regions
> -* omp_get_max_active_levels:: Maximum number of active regions
> +* omp_get_max_active_levels:: Current maximum number of active regions
> * omp_get_max_task_priority:: Maximum task priority value that can be set
> * omp_get_max_threads:: Maximum number of threads of parallel region
> * omp_get_nested:: Nested parallel regions
> @@ -177,7 +177,7 @@ linkage, and do not throw exceptions.
> * omp_get_num_threads:: Size of the active team
> * omp_get_proc_bind:: Whether theads may be moved between CPUs
> * omp_get_schedule:: Obtain the runtime scheduling method
> -* omp_get_supported_active_levels:: Maximum number of active levels supported
> +* omp_get_supported_active_levels:: Maximum number of active regions supported
> * omp_get_team_num:: Get team number
> * omp_get_team_size:: Number of threads in a team
> * omp_get_thread_limit:: Maximum number of threads
> @@ -380,7 +380,7 @@ which enclose the calling call.
>
>
> @node omp_get_max_active_levels
> -@section @code{omp_get_max_active_levels} -- Maximum number of active regions
> +@section @code{omp_get_max_active_levels} -- Current maximum number of active regions
> @table @asis
> @item @emph{Description}:
> This function obtains the maximum allowed number of nested, active parallel regions.
Jakub
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] openmp: Add support for omp_get_supported_active_levels
2020-10-20 13:51 David Edelsohn
@ 2020-10-20 13:55 ` Tobias Burnus
0 siblings, 0 replies; 8+ messages in thread
From: Tobias Burnus @ 2020-10-20 13:55 UTC (permalink / raw)
To: David Edelsohn, Kwok Cheung Yeung, Jakub Jelinek; +Cc: GCC Patches
See patch and thread at
https://gcc.gnu.org/pipermail/gcc-patches/2020-October/556570.html
Tobias
On 10/20/20 3:51 PM, David Edelsohn via Gcc-patches wrote:
> This patch broke bootstrap on AIX.
>
> /nasfarm/edelsohn/src/src/libgomp/target.c: In function
> 'gomp_target_init.part.':
> /nasfarm/edelsohn/src/src/libgomp/target.c:3367:45: error: array
> subscript [-19877956975980120, 19877956975980120] is outside array
> bounds of 'struct gomp_device_descr[0]' [-Werror=array-bounds]
> 3367 | devices_s[num_devices_after_openmp++] = devices[i];
> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
> /nasfarm/edelsohn/src/src/libgomp/target.c:3353:7: note: referencing
> an object of size 0 allocated by 'malloc'
> 3353 | = malloc (num_devices * sizeof (struct gomp_device_descr));
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /nasfarm/edelsohn/src/src/libgomp/target.c:3363:39: error: array
> subscript [-19877956975980120, 19877956975980120] is outside array
> bounds of 'struct gomp_device_descr[0]' [-Werror=array-bounds]
> 3363 | devices_s[num_devices_openmp++] = devices[i];
> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
> /nasfarm/edelsohn/src/src/libgomp/target.c:3353:7: note: referencing
> an object of size 0 allocated by 'malloc'
> 3353 | = malloc (num_devices * sizeof (struct gomp_device_descr));
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-----------------
Mentor Graphics (Deutschland) GmbH, Arnulfstraße 201, 80634 München / Germany
Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Alexander Walter
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] openmp: Add support for omp_get_supported_active_levels
@ 2020-10-20 13:51 David Edelsohn
2020-10-20 13:55 ` Tobias Burnus
0 siblings, 1 reply; 8+ messages in thread
From: David Edelsohn @ 2020-10-20 13:51 UTC (permalink / raw)
To: Kwok Cheung Yeung, Jakub Jelinek; +Cc: GCC Patches
This patch broke bootstrap on AIX.
/nasfarm/edelsohn/src/src/libgomp/target.c: In function
'gomp_target_init.part.':
/nasfarm/edelsohn/src/src/libgomp/target.c:3367:45: error: array
subscript [-19877956975980120, 19877956975980120] is outside array
bounds of 'struct gomp_device_descr[0]' [-Werror=array-bounds]
3367 | devices_s[num_devices_after_openmp++] = devices[i];
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/nasfarm/edelsohn/src/src/libgomp/target.c:3353:7: note: referencing
an object of size 0 allocated by 'malloc'
3353 | = malloc (num_devices * sizeof (struct gomp_device_descr));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/nasfarm/edelsohn/src/src/libgomp/target.c:3363:39: error: array
subscript [-19877956975980120, 19877956975980120] is outside array
bounds of 'struct gomp_device_descr[0]' [-Werror=array-bounds]
3363 | devices_s[num_devices_openmp++] = devices[i];
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/nasfarm/edelsohn/src/src/libgomp/target.c:3353:7: note: referencing
an object of size 0 allocated by 'malloc'
3353 | = malloc (num_devices * sizeof (struct gomp_device_descr));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-10-20 13:56 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-13 18:05 [PATCH] openmp: Add support for omp_get_supported_active_levels Kwok Cheung Yeung
2020-10-13 18:36 ` Jakub Jelinek
2020-10-13 20:26 ` Kwok Cheung Yeung
2020-10-14 8:20 ` Jakub Jelinek
2020-10-15 9:38 ` Kwok Cheung Yeung
2020-10-15 9:40 ` Jakub Jelinek
2020-10-20 13:51 David Edelsohn
2020-10-20 13:55 ` Tobias Burnus
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).