From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9286 invoked by alias); 23 Jan 2014 18:01:27 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 9273 invoked by uid 89); 23 Jan 2014 18:01:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.1 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS,T_FILL_THIS_FORM_SHORT,T_HDRS_LCASE,T_MANY_HDRS_LCASE autolearn=ham version=3.3.2 X-HELO: mailout3.w1.samsung.com Received: from mailout3.w1.samsung.com (HELO mailout3.w1.samsung.com) (210.118.77.13) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (DES-CBC3-SHA encrypted) ESMTPS; Thu, 23 Jan 2014 18:01:24 +0000 Received: from eucpsbgm1.samsung.com (unknown [203.254.199.244]) by mailout3.w1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MZV00L0J8Q8YK60@mailout3.w1.samsung.com> for gcc-patches@gcc.gnu.org; Thu, 23 Jan 2014 18:01:20 +0000 (GMT) Received: from eusync2.samsung.com ( [203.254.199.212]) by eucpsbgm1.samsung.com (EUCPMTA) with SMTP id A1.8B.23059.0F851E25; Thu, 23 Jan 2014 18:01:20 +0000 (GMT) Received: from [106.109.130.57] by eusync2.samsung.com (Oracle Communications Messaging Server 7u4-23.01(7.0.4.23.0) 64bit (built Aug 10 2011)) with ESMTPA id <0MZV000BK8Q7IR20@eusync2.samsung.com>; Thu, 23 Jan 2014 18:01:20 +0000 (GMT) Message-id: <52E158EF.9050009@samsung.com> Date: Thu, 23 Jan 2014 18:01:00 -0000 From: Ilmir Usmanov User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.0 MIME-version: 1.0 To: gcc-patches@gcc.gnu.org, Thomas Schwinge , jakub@redhat.com Cc: Evgeny Gavrin , GarbuzovViacheslav , Dmitri Botcharnikov Subject: [PATCH] [GOMP4] OpenACC 1.0+ support in fortran front-end Content-type: text/plain; charset=ISO-8859-1; format=flowed Content-transfer-encoding: 7bit X-SW-Source: 2014-01/txt/msg01520.txt.bz2 Hi all. Jakub, could you review these patches, if they are OK to gomp-4_0-branch? Thomas, please, have a look whether this implementation applies current OpenACC support style. These patches port OpenACC 1.0 support in fortran front-end from openacc-1_0-branch to gomp-4_0-branch. In addition, they extend middle-end infrastructure with necessary GENERIC nodes. Patches support almost all directives (except loop) and all clauses from the specification ver. 1.0 (without subarrays). In addition to OpenACC version 1.0, patches add functionality from OpenACC 2.0: enter data and exit data directives. Patches stub gimplification of OpenACC constructs and directives, except OACC_PARALLEL node, to prevent crashes. I didn't port loop directive, since in openacc-1_0-branch we consider it as OpenACC construct, like kernels or parallel. Hence, OpenACC loop and OpenMP for directives differ. It means there are no checks in C FE (in openacc-1_0-branch) and the functionality will be modified, in both FEs and back-end. As far as loop directive doesn't exist in GENERIC, fortran FE doesn't transform it from internal EXEC_OACC_LOOP statement. Consequenly, there are no tests to check the directive. Lately, I'm going to port loop directive, too. Inspite of the fact that subarrays do exist in openacc-1_0-branch, they don't present in patches. Currently, we are using our own GENERIC nodes to represent subarrays. I'm going to replace them with existing functionality, like ARRAY_RANGE_REF. Full list of supported fuctionality is the following: Constructs/directives: Name front-end GENERIC tests parallel Y Y Y kernels Y Y Y data Y Y Y host_data Y Y Y loop Y N N update Y Y Y wait Y Y N cache Y Y N declare Y Y Y kernels loop Y N N parallel loop Y N N enter data (2.0) Y Y Y exit data (2.0) Y Y Y Clauses Name front-end GENERIC tests async Y Y Y wait Y Y Y num_gangs Y Y Y num_workers Y Y Y vector_length Y Y Y if Y Y Y reduction Y Y Y copy Y Y Y copyin Y Y Y copyout Y Y Y create Y Y Y delete (2.0) Y Y Y present Y Y Y present_or_copy Y Y Y present_or_copyin Y Y Y present_or_copyout Y Y Y present_or_create Y Y Y deviceptr Y Y Y private Y Y Y firstprivate Y Y Y default(none) (2.0) Y N Y collapse Y Y N gang Y Y N worker Y Y N vector Y Y N seq Y Y N auto (2.0) Y N N tile Y N N independent Y Y N device_resident Y Y N Successfully bootstraps on x86_64 with no regressions. OK to commit? -- Ilmir