From patchwork Thu Aug 8 16:53:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julian Brown X-Patchwork-Id: 1144122 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-506531-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="lOv1t69u"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 464DxM3Wtkz9sBF for ; Fri, 9 Aug 2019 02:54:31 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; q=dns; s= default; b=kDKTtxewYAiZbCy8m7soImuRfK/LmCezSD2sWS6jpn8jgZjNsULs6 dSJ9yVOQPCGBZYoY1DOsMAAP6y5CxT+5RZidjpXtYDLAxKyojrvDkjMHYGR6Du5L QrJha2b5TxLedqjzY02bwWYOeEqtjhhava1nkLUL87w6XmfLT2R7ow= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; s=default; bh=S/v/evNnWF+Mr677OhdRlf6kitU=; b=lOv1t69uZyYop1/DwbG9a4gP2MbX CKV77nReQbISWJm0hycCcQByNY5XUH+iPz+YhQI8hCO8swMqJZ2K/jfo3DK/TtER L/Drxz8WT50xR/ITG4kR/zkxTQ5lXVx1fiLiY3BBBB3G8z5u/Vk0vS9AyrFJXfGO lwQvZ+HvocRKHdc= Received: (qmail 72101 invoked by alias); 8 Aug 2019 16:53:50 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 72049 invoked by uid 89); 8 Aug 2019 16:53:49 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-15.8 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: esa2.mentor.iphmx.com Received: from esa2.mentor.iphmx.com (HELO esa2.mentor.iphmx.com) (68.232.141.98) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 08 Aug 2019 16:53:47 +0000 IronPort-SDR: OshzVc9pWeDTCN7h8h7tCFSkpbdnzaRs5NefmpwmogsUaOw3gRfeRPl1MJcSXWLMbTd+GIvvzc JjXQaFl8oeeiCx1DKFDwlRZUpIBbXiXoMt1ZDdwEkZb6YYkuPjebFCEjQ7S+J/LjgoKDTSYtu7 L4ck2WpOIgA1ib6LUZGJtSj9inuiLQbYOrpAzKPUJj8gIwaVJu1BPF04sp1aNl6NfTcTLOE8wj rMSSgqPw4ag4FgoQb01RigJozYjENtlMVgwBAbChKfJGOqrODsovQSsT11/4bbXaWA747Zao2j gJ4= Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa2.mentor.iphmx.com with ESMTP; 08 Aug 2019 08:53:30 -0800 IronPort-SDR: 9wa+PADmcRu+JXzFA6FkMgpp7ZiH0rRT0u31tVSCj/EKdmGZs6vRKrpESpj8rqnztsMSEAUYt/ EI2igzyXKxEDIAh+gtYI3NOKCkCh/S5ZLRGKsHEUk2bjJEKZHW0vbaWgFg6aG2QOKqyqtxlEEk BZN3m0/qKEV16OVU4dKUXK2VYyQ0h6RcGpvWQYVdDcSPZBEEA32b7cOEApgBtXwQPGLONkXWAs NddVAL0Gtvo7in97TEdPYKwt4xlPxUCRN9QQuFzRjxD+w7frieQ5yvsVgIHSoKF0fJneUHSpfB G70= From: Julian Brown To: CC: Andrew Stubbs , Jakub Jelinek Subject: [PATCH 3/3] [og9] Use a single worker for OpenACC on AMD GCN Date: Thu, 8 Aug 2019 09:53:07 -0700 Message-ID: <20190808165307.56375-4-julian@codesourcery.com> In-Reply-To: <20190808165307.56375-1-julian@codesourcery.com> References: <20190808165307.56375-1-julian@codesourcery.com> MIME-Version: 1.0 X-IsSubscribed: yes This patch sets the number of workers (per-gang) to 1 for AMD GCN, as a stop-gap measure until the middle-end transformations to enable multiple workers have been applied. Julian ChangeLog gcc/ * config/gcn/gcn.c (gcn_goacc_validate_dims): Ensure flag_worker_partitioning is not set. (TARGET_GOACC_WORKER_PARTITIONING): Remove target hook definition. * config/gcn/gcn.opt (macc-experimental-workers): Default to off. libgomp/ * plugin/plugin-gcn.c (gcn_exec): Use 1 for the default number of workers. --- gcc/ChangeLog.openacc | 7 +++++++ gcc/config/gcn/gcn.c | 4 ++-- gcc/config/gcn/gcn.opt | 2 +- libgomp/ChangeLog.openacc | 5 +++++ libgomp/plugin/plugin-gcn.c | 4 +++- 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog.openacc b/gcc/ChangeLog.openacc index 0caa1cd1401..84d80511603 100644 --- a/gcc/ChangeLog.openacc +++ b/gcc/ChangeLog.openacc @@ -1,3 +1,10 @@ +2019-08-08 Julian Brown + + * config/gcn/gcn.c (gcn_goacc_validate_dims): Ensure + flag_worker_partitioning is not set. + (TARGET_GOACC_WORKER_PARTITIONING): Remove target hook definition. + * config/gcn/gcn.opt (macc-experimental-workers): Default to off. + 2019-07-31 Julian Brown * builtin-types.def (BT_FN_VOID_INT_INT_OMPFN_SIZE_PTR_PTR_PTR_VAR): diff --git a/gcc/config/gcn/gcn.c b/gcc/config/gcn/gcn.c index 9f73fc8161a..f3f112d95a9 100644 --- a/gcc/config/gcn/gcn.c +++ b/gcc/config/gcn/gcn.c @@ -4662,6 +4662,8 @@ gcn_goacc_validate_dims (tree decl, int dims[], int fn_level, /* FIXME: remove -facc-experimental-workers when they're ready. */ int max_workers = flag_worker_partitioning ? 16 : 1; + gcc_assert (!flag_worker_partitioning); + /* The vector size must appear to be 64, to the user, unless this is a SEQ routine. The real, internal value is always 1, which means use autovectorization, but the user should not see that. */ @@ -6038,8 +6040,6 @@ print_operand (FILE *file, rtx x, int code) #define TARGET_GOACC_REDUCTION gcn_goacc_reduction #undef TARGET_GOACC_VALIDATE_DIMS #define TARGET_GOACC_VALIDATE_DIMS gcn_goacc_validate_dims -#undef TARGET_GOACC_WORKER_PARTITIONING -#define TARGET_GOACC_WORKER_PARTITIONING true #undef TARGET_HARD_REGNO_MODE_OK #define TARGET_HARD_REGNO_MODE_OK gcn_hard_regno_mode_ok #undef TARGET_HARD_REGNO_NREGS diff --git a/gcc/config/gcn/gcn.opt b/gcc/config/gcn/gcn.opt index 2fd3996edba..90d35f42e57 100644 --- a/gcc/config/gcn/gcn.opt +++ b/gcc/config/gcn/gcn.opt @@ -62,7 +62,7 @@ Target Report RejectNegative Var(flag_bypass_init_error) bool flag_worker_partitioning = false macc-experimental-workers -Target Report Var(flag_worker_partitioning) Init(1) +Target Report Var(flag_worker_partitioning) Init(0) int stack_size_opt = -1 diff --git a/libgomp/ChangeLog.openacc b/libgomp/ChangeLog.openacc index 62c56e3bf92..2279545f361 100644 --- a/libgomp/ChangeLog.openacc +++ b/libgomp/ChangeLog.openacc @@ -1,3 +1,8 @@ +2019-08-08 Julian Brown + + * plugin/plugin-gcn.c (gcn_exec): Use 1 for the default number of + workers. + 2019-08-08 Julian Brown * plugin/configfrag.ac (amdgcn): Set tgt_plugin. diff --git a/libgomp/plugin/plugin-gcn.c b/libgomp/plugin/plugin-gcn.c index 6eaae66c1a9..a41568b3306 100644 --- a/libgomp/plugin/plugin-gcn.c +++ b/libgomp/plugin/plugin-gcn.c @@ -3233,8 +3233,10 @@ gcn_exec (struct kernel_info *kernel, size_t mapnum, void **hostaddrs, problem size, so let's do a reasonable number of single-worker gangs. 64 gangs matches a typical Fiji device. */ + /* NOTE: Until support for middle-end worker partitioning is merged, use 1 + for the default number of workers. */ if (dims[0] == 0) dims[0] = 64; /* Gangs. */ - if (dims[1] == 0) dims[1] = 16; /* Workers. */ + if (dims[1] == 0) dims[1] = 1; /* Workers. */ /* The incoming dimensions are expressed in terms of gangs, workers, and vectors. The HSA dimensions are expressed in terms of "work-items",