From patchwork Mon Jun 29 20:16:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julian Brown X-Patchwork-Id: 1319161 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=gcc-patches-bounces@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 49wf111cnGz9sX6 for ; Tue, 30 Jun 2020 06:17:23 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 52F34383E814; Mon, 29 Jun 2020 20:17:18 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from esa2.mentor.iphmx.com (esa2.mentor.iphmx.com [68.232.141.98]) by sourceware.org (Postfix) with ESMTPS id 725383851C03 for ; Mon, 29 Jun 2020 20:17:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 725383851C03 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Julian_Brown@mentor.com IronPort-SDR: 0LGs7FfczUGfhcSCjE4eSTVdT+9ZUOjQgI/Aue6fiWdKF1VfseuI1TCHPt3aZevdAH/g4WsP/5 r9lkTDCrMX3YYNhJ+IMqc65LziJ/0YPHxj6YmYFqhDXKshLL2v3ZPzy0dt2ePPrLEIzsjzEaZ0 uFLvUnmurEsHzuWK2qzPLO6e0pjFJRF0OsdK0AzD9P3m+AheV7LUTf7NSv2zl7A0thsExE2EOe EiAllNcL70W05CMYBJ6FeO1QUmX0y2fAAjjaPnZ3eGVQS+I0NSyRXrW/FajG6xytvgKoocz/h/ YsQ= X-IronPort-AV: E=Sophos;i="5.75,295,1589270400"; d="scan'208";a="50429874" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa2.mentor.iphmx.com with ESMTP; 29 Jun 2020 12:17:12 -0800 IronPort-SDR: GgXvOoNvjpZUriTSjirMggmMVed9VtwKSQz8EFsK/D+96IVFWlB6bwaRI0gFJvY6be5qRJX+8c relhAKhy4Xv2DVUzfHfSATSQ5U6TXCg6WHKSst28vzW4Uq4ily6L3ra794trDuA7JRaMskQMcz dEh+IBzOE+Y2xKA6Loxt4MtUwDuRlhOnujhreSpW/cl8FWHI490Q2UIWBlv31nK3lwy83OnOhO 0W4lSdb/0//7uYT1kRmt3RVRiAhYr0PLDTJGIAuRZXVBWu9ct3Dv0081nUm+pcfCgvAKS/y65L NWg= From: Julian Brown To: Subject: [PATCH] [og10] OpenACC: Fix race condition in Fortran loop collapse tests Date: Mon, 29 Jun 2020 13:16:49 -0700 Message-ID: <20200629201653.147326-1-julian@codesourcery.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: SVR-IES-MBX-08.mgc.mentorg.com (139.181.222.8) To SVR-IES-MBX-03.mgc.mentorg.com (139.181.222.3) X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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 Jelinek , Andrew Stubbs Errors-To: gcc-patches-bounces@gcc.gnu.org Sender: "Gcc-patches" The gangs participating in a gang-partitioned loop are not all guaranteed to complete before some given gang continues to execute beyond that loop. This means that two existing test cases contain a race condition, because a loop that may be gang-partitioned is followed immediately by another loop. The fix is to place the loops in separate parallel regions. OK for og10 branch? Julian ChangeLog libgomp/ * testsuite/libgomp.oacc-fortran/collapse-1.f90: Fix race condition. * testsuite/libgomp.oacc-fortran/collapse-2.f90: Likewise. --- libgomp/testsuite/libgomp.oacc-fortran/collapse-1.f90 | 3 +++ libgomp/testsuite/libgomp.oacc-fortran/collapse-2.f90 | 3 +++ 2 files changed, 6 insertions(+) diff --git a/libgomp/testsuite/libgomp.oacc-fortran/collapse-1.f90 b/libgomp/testsuite/libgomp.oacc-fortran/collapse-1.f90 index 918c5d0d5b1c..4857752f1b0a 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/collapse-1.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/collapse-1.f90 @@ -14,6 +14,9 @@ program collapse1 end do end do end do + !$acc end parallel + + !$acc parallel !$acc loop collapse(2) reduction(.or.:l) do i = 1, 3 do j = 4, 6 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/collapse-2.f90 b/libgomp/testsuite/libgomp.oacc-fortran/collapse-2.f90 index 98b6987750ec..0a543909127e 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/collapse-2.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/collapse-2.f90 @@ -13,6 +13,9 @@ program collapse2 do 164 k = 5, 7 a(i, j, k) = i + j + k 164 end do + !$acc end parallel + + !$acc parallel !$acc loop collapse(2) reduction(.or.:l) firstdo: do i = 1, 3 do j = 4, 6