From patchwork Tue Mar 8 11:30:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abid Qadeer X-Patchwork-Id: 51779 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4716B385AC3E for ; Tue, 8 Mar 2022 11:31:51 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id 0DFB2385B83C; Tue, 8 Mar 2022 11:31:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0DFB2385B83C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.90,164,1643702400"; d="scan'208";a="72843960" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa4.mentor.iphmx.com with ESMTP; 08 Mar 2022 03:31:17 -0800 IronPort-SDR: 3GbAGWVPnnwuoe5RnKlgX5NYds0TG6HQqD+t+IH4jSWVqG/D4MyWsQ7CEfSK0epjd/7tpmJG5G j1RvTD3xB9Krsl1EoH/Z+TyvKypSKIIK5QjY0cfhZAal9LqpA0BPmTtDJjbUrq/E5I3sE/sMjY +QNurD4Hayf+2t+yQrz0qytEs1kWRwyrS9WkwnVwePRLCnjjLba30cV+V4iTrKy2OeMd2Z6Cky 9bZJ+BqeLZJ+K9jof/XA46TSOAZXConSQnAnzZOHb8bFAXm8S1tiSkRhOayDVs/tgbJI8JJ84J aJU= From: Hafiz Abid Qadeer To: , Subject: [PATCH 0/5] openmp: Handle pinned and unified shared memory. Date: Tue, 8 Mar 2022 11:30:54 +0000 Message-ID: <20220308113059.688551-1-abidh@codesourcery.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: SVR-IES-MBX-07.mgc.mentorg.com (139.181.222.7) To SVR-IES-MBX-03.mgc.mentorg.com (139.181.222.3) X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: jakub@redhat.com, ams@codesourcery.com, joseph@codesourcery.com Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" This patch series add support for unified shared memory (USM) and pinned memory. The support in libgomp is for nvptx offloading only. A new command line option -foffload-memory allows user to choose either USM or pinned memory. The USM can also be enabled using requires construct. When USM us in use, calls to memory allocation function like malloc are changed to omp_alloc with appropriate allocator. No transformations are required for the pinned memory which is implemented using mlockall so is only available on Linux. Andrew Stubbs (4): openmp: Add -foffload-memory openmp: allow requires unified_shared_memory openmp, nvptx: ompx_unified_shared_mem_alloc openmp: -foffload-memory=pinned Hafiz Abid Qadeer (1): openmp: Use libgomp memory allocation functions with unified shared memory. gcc/c/c-parser.cc | 13 +- gcc/common.opt | 16 ++ gcc/coretypes.h | 7 + gcc/cp/parser.cc | 13 +- gcc/doc/invoke.texi | 16 +- gcc/fortran/openmp.cc | 10 +- gcc/omp-low.cc | 220 ++++++++++++++++++ gcc/passes.def | 1 + .../c-c++-common/gomp/alloc-pinned-1.c | 28 +++ gcc/testsuite/c-c++-common/gomp/usm-1.c | 4 + gcc/testsuite/c-c++-common/gomp/usm-2.c | 34 +++ gcc/testsuite/c-c++-common/gomp/usm-3.c | 32 +++ gcc/testsuite/g++.dg/gomp/usm-1.C | 32 +++ gcc/testsuite/g++.dg/gomp/usm-2.C | 30 +++ gcc/testsuite/g++.dg/gomp/usm-3.C | 38 +++ gcc/testsuite/gfortran.dg/gomp/usm-1.f90 | 6 + gcc/testsuite/gfortran.dg/gomp/usm-2.f90 | 16 ++ gcc/testsuite/gfortran.dg/gomp/usm-3.f90 | 13 ++ gcc/tree-pass.h | 1 + libgomp/allocator.c | 13 +- libgomp/config/linux/allocator.c | 70 ++++-- libgomp/config/nvptx/allocator.c | 6 + libgomp/libgomp-plugin.h | 3 + libgomp/libgomp.h | 6 + libgomp/libgomp.map | 5 + libgomp/omp.h.in | 4 + libgomp/omp_lib.f90.in | 8 + libgomp/plugin/plugin-nvptx.c | 45 +++- libgomp/target.c | 70 ++++++ libgomp/testsuite/libgomp.c++/usm-1.C | 54 +++++ libgomp/testsuite/libgomp.c/alloc-pinned-7.c | 66 ++++++ libgomp/testsuite/libgomp.c/usm-1.c | 24 ++ libgomp/testsuite/libgomp.c/usm-2.c | 32 +++ libgomp/testsuite/libgomp.c/usm-3.c | 35 +++ libgomp/testsuite/libgomp.c/usm-4.c | 36 +++ libgomp/testsuite/libgomp.c/usm-5.c | 28 +++ libgomp/testsuite/libgomp.c/usm-6.c | 70 ++++++ 37 files changed, 1075 insertions(+), 30 deletions(-) create mode 100644 gcc/testsuite/c-c++-common/gomp/alloc-pinned-1.c create mode 100644 gcc/testsuite/c-c++-common/gomp/usm-1.c create mode 100644 gcc/testsuite/c-c++-common/gomp/usm-2.c create mode 100644 gcc/testsuite/c-c++-common/gomp/usm-3.c create mode 100644 gcc/testsuite/g++.dg/gomp/usm-1.C create mode 100644 gcc/testsuite/g++.dg/gomp/usm-2.C create mode 100644 gcc/testsuite/g++.dg/gomp/usm-3.C create mode 100644 gcc/testsuite/gfortran.dg/gomp/usm-1.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/usm-2.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/usm-3.f90 create mode 100644 libgomp/testsuite/libgomp.c++/usm-1.C create mode 100644 libgomp/testsuite/libgomp.c/alloc-pinned-7.c create mode 100644 libgomp/testsuite/libgomp.c/usm-1.c create mode 100644 libgomp/testsuite/libgomp.c/usm-2.c create mode 100644 libgomp/testsuite/libgomp.c/usm-3.c create mode 100644 libgomp/testsuite/libgomp.c/usm-4.c create mode 100644 libgomp/testsuite/libgomp.c/usm-5.c create mode 100644 libgomp/testsuite/libgomp.c/usm-6.c