Hi! On 2022-07-07T23:18:03+0100, Andrew Stubbs <a...@codesourcery.com> wrote: > On 07/07/2022 12:54, Tobias Burnus wrote: >> On 07.07.22 12:34, Andrew Stubbs wrote: >>> Implement the -foffload-memory=pinned option such that libgomp is >>> instructed to enable fully-pinned memory at start-up. The option is >>> intended to provide a performance boost to certain offload programs >>> without >>> modifying the code. >> ... >>> gcc/ChangeLog: >>> >>> * omp-builtins.def (BUILT_IN_GOMP_ENABLE_PINNED_MODE): New. >>> * omp-low.cc (omp_enable_pinned_mode): New function. >>> (execute_lower_omp): Call omp_enable_pinned_mode. >>> >>> libgomp/ChangeLog: >>> >>> * config/linux/allocator.c (always_pinned_mode): New variable. >>> (GOMP_enable_pinned_mode): New function. >>> (linux_memspace_alloc): Disable pinning when always_pinned_mode set. >>> (linux_memspace_calloc): Likewise. >>> (linux_memspace_free): Likewise. >>> (linux_memspace_realloc): Likewise. >>> * libgomp.map: Add GOMP_enable_pinned_mode. >>> * testsuite/libgomp.c/alloc-pinned-7.c: New test. >>> ... >> ... >>> --- a/gcc/omp-low.cc >>> +++ b/gcc/omp-low.cc >>> @@ -14620,6 +14620,68 @@ lower_omp (gimple_seq *body, omp_context *ctx) >>> input_location = saved_location; >>> } >>> +/* Emit a constructor function to enable -foffload-memory=pinned >>> + at runtime. Libgomp handles the OS mode setting, but we need to >>> trigger >>> + it by calling GOMP_enable_pinned mode before the program proper >>> runs. */ >>> + >>> +static void >>> +omp_enable_pinned_mode () >> >> Is there a reason not to use the mechanism of OpenMP's 'requires' >> directive for this?
I agree. (But I'm not working on that, for avoidance of doubt.) >> (Okay, I have to admit that the final patch was only committed on >> Monday. But still ...) > > Possibly, I had most of this done before then. I'll have a look next > time I visit this patch. Until then, let's at least document/verify 'GOMP_enable_pinned_mode'; I've pushed to devel/omp/gcc-12 commit 9657d906869e098340c23118c2eb8592d9e77ac5 "Prototype 'GOMP_enable_pinned_mode'", see attached. Grüße Thomas ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
>From 9657d906869e098340c23118c2eb8592d9e77ac5 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge <tho...@codesourcery.com> Date: Mon, 20 Feb 2023 15:29:44 +0100 Subject: [PATCH] Prototype 'GOMP_enable_pinned_mode' Fix-up for og12 commit 842df187487f5b16ae29bbe7e9acd79661a9df48 "openmp: -foffload-memory=pinned". No functional change. libgomp/ * libgomp_g.h (GOMP_enable_pinned_mode): New. --- libgomp/ChangeLog.omp | 2 ++ libgomp/libgomp_g.h | 1 + 2 files changed, 3 insertions(+) diff --git a/libgomp/ChangeLog.omp b/libgomp/ChangeLog.omp index c5a7860478e..e4475093055 100644 --- a/libgomp/ChangeLog.omp +++ b/libgomp/ChangeLog.omp @@ -1,5 +1,7 @@ 2023-02-20 Thomas Schwinge <tho...@codesourcery.com> + * libgomp_g.h (GOMP_enable_pinned_mode): New. + * config/linux/allocator.c (linux_memspace_alloc): Add 'init0' formal parameter. Adjust all users. (linux_memspace_alloc, linux_memspace_free): Attempt to allocate diff --git a/libgomp/libgomp_g.h b/libgomp/libgomp_g.h index ece1f97a61f..fe66a53d94a 100644 --- a/libgomp/libgomp_g.h +++ b/libgomp/libgomp_g.h @@ -375,6 +375,7 @@ extern void GOMP_teams_reg (void (*) (void *), void *, unsigned, unsigned, extern void *GOMP_alloc (size_t, size_t, uintptr_t); extern void GOMP_free (void *, uintptr_t); +extern void GOMP_enable_pinned_mode (void); /* error.c */ -- 2.25.1