public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Andrew Stubbs <ams@codesourcery.com>
To: Tobias Burnus <tobias@codesourcery.com>, <gcc-patches@gcc.gnu.org>
Subject: Re: [PATCH 08/17] openmp: -foffload-memory=pinned
Date: Thu, 7 Jul 2022 23:18:03 +0100	[thread overview]
Message-ID: <397f6b84-9d45-379a-5402-76a8ac11f08e@codesourcery.com> (raw)
In-Reply-To: <bcd0309d-7cce-3ced-4170-5ffe2ac405ac@codesourcery.com>

On 07/07/2022 12:54, Tobias Burnus wrote:
> Hi Andrew,
> 
> 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?
> 
> (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.

The Cuda-specific solution can't work this way anyway, because there's 
no mlockall equivalent, so I will make conditional adjustments anyway.

> Likewise, the 'requires' mechanism could then also be used in '[PATCH 
> 16/17] amdgcn, openmp: Auto-detect USM mode and set HSA_XNACK'.

No, I don't think so; that environment variable needs to be set before 
the libraries are loaded or it's too late.  There are other ways to 
achieve the same thing, by leaving messages for the libgomp plugin to 
pick up, perhaps, but it's all extra complexity for no real gain.

Andrew

  reply	other threads:[~2022-07-07 22:18 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-07 10:34 [PATCH 00/17] openmp, nvptx, amdgcn: 5.0 Memory Allocators Andrew Stubbs
2022-07-07 10:34 ` [PATCH 01/17] libgomp, nvptx: low-latency memory allocator Andrew Stubbs
2022-12-08 11:40   ` Jakub Jelinek
2022-07-07 10:34 ` [PATCH 02/17] libgomp: pinned memory Andrew Stubbs
2022-12-08 12:11   ` Jakub Jelinek
2022-12-08 12:51     ` Andrew Stubbs
2022-12-08 14:02       ` Tobias Burnus
2022-12-08 14:35         ` Andrew Stubbs
2022-12-08 15:02           ` Tobias Burnus
2022-07-07 10:34 ` [PATCH 03/17] libgomp, openmp: Add ompx_pinned_mem_alloc Andrew Stubbs
2022-07-07 10:34 ` [PATCH 04/17] openmp, nvptx: low-lat memory access traits Andrew Stubbs
2022-07-07 10:34 ` [PATCH 05/17] openmp, nvptx: ompx_unified_shared_mem_alloc Andrew Stubbs
2022-07-07 10:34 ` [PATCH 06/17] openmp: Add -foffload-memory Andrew Stubbs
2022-07-07 10:34 ` [PATCH 07/17] openmp: allow requires unified_shared_memory Andrew Stubbs
2022-07-07 10:34 ` [PATCH 08/17] openmp: -foffload-memory=pinned Andrew Stubbs
2022-07-07 11:54   ` Tobias Burnus
2022-07-07 22:18     ` Andrew Stubbs [this message]
2022-07-08  9:00       ` Tobias Burnus
2022-07-08  9:55         ` Andrew Stubbs
2022-07-08  9:57           ` Tobias Burnus
2023-02-20 14:59       ` Prototype 'GOMP_enable_pinned_mode' (was: [PATCH 08/17] openmp: -foffload-memory=pinned) Thomas Schwinge
2022-07-07 10:34 ` [PATCH 09/17] openmp: Use libgomp memory allocation functions with unified shared memory Andrew Stubbs
2022-07-07 10:34 ` [PATCH 10/17] Add parsing support for allocate directive (OpenMP 5.0) Andrew Stubbs
2022-07-07 10:34 ` [PATCH 11/17] Translate " Andrew Stubbs
2022-07-07 10:34 ` [PATCH 12/17] Handle cleanup of omp allocated variables " Andrew Stubbs
2022-07-07 10:34 ` [PATCH 13/17] Gimplify allocate directive " Andrew Stubbs
2022-07-07 10:34 ` [PATCH 14/17] Lower " Andrew Stubbs
2022-07-07 10:34 ` [PATCH 15/17] amdgcn: Support XNACK mode Andrew Stubbs
2022-07-07 10:34 ` [PATCH 16/17] amdgcn, openmp: Auto-detect USM mode and set HSA_XNACK Andrew Stubbs
2022-07-07 10:34 ` [PATCH 17/17] amdgcn: libgomp plugin USM implementation Andrew Stubbs

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=397f6b84-9d45-379a-5402-76a8ac11f08e@codesourcery.com \
    --to=ams@codesourcery.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=tobias@codesourcery.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).