From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 65511 invoked by alias); 25 May 2018 20:02:16 -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 65473 invoked by uid 89); 25 May 2018 20:02:14 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.7 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_PASS,URIBL_RED autolearn=ham version=3.3.2 spammy=parserc, UD:parser.c, parser.c, UD:target.c X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 25 May 2018 20:02:11 +0000 Received: from svr-orw-mbx-04.mgc.mentorg.com ([147.34.90.204]) by relay1.mentorg.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-SHA384:256) id 1fMIue-0006k1-VP from Cesar_Philippidis@mentor.com ; Fri, 25 May 2018 13:02:09 -0700 Received: from [127.0.0.1] (147.34.91.1) by SVR-ORW-MBX-04.mgc.mentorg.com (147.34.90.204) with Microsoft SMTP Server (TLS) id 15.0.1320.4; Fri, 25 May 2018 13:02:04 -0700 From: Cesar Philippidis Subject: [OpenACC] Update OpenACC data clause semantics to the 2.5 behavior To: "gcc-patches@gcc.gnu.org" , Jakub Jelinek Message-ID: <7fa7637f-e7f5-d43d-13f1-706c77e8e957@codesourcery.com> Date: Fri, 25 May 2018 20:09:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------66A35EE8687FD736CABD4D44" X-ClientProxiedBy: svr-orw-mbx-04.mgc.mentorg.com (147.34.90.204) To SVR-ORW-MBX-04.mgc.mentorg.com (147.34.90.204) X-SW-Source: 2018-05/txt/msg01526.txt.bz2 --------------66A35EE8687FD736CABD4D44 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-length: 10373 This patch updates GCC's to support OpenACC 2.5's data clause semantics. In OpenACC 2.5, copy, copyin and copyout all behave like their present_or_* counterparts in OpenACC 2.0. The patch also adds support for the new finalize and if_present data clauses introduced in OpenACC 2.5. The finalize clause introduced some new reference counting behavior in the runtime; whereas 'acc exit data copyout' decrements the reference count of a variable, 'acc exit data finalize' actually removes it from the accelerator regardless of there are any pending references to it. Due to the size of this patch, I had to compress it. However, despite the size of the patch, which is mainly due to the augmented test cases, it fairly noninvasive. I was originally going to include support for declare allocate and deallocate, but those require more extensive modifications to the fortran FE. Is this patch OK for trunk? I tested with x86_64-linux with nvptx acceleration. Thanks, Cesar 2018-05-25 Chung-Lin Tang Thomas Schwinge Cesar Philippidis gcc/c-family/ * c-pragma.h (enum pragma_omp_clause): Add PRAGMA_OACC_CLAUSE_{FINALIZE,IF_PRESENT}. Remove PRAGMA_OACC_CLAUSE_PRESENT_OR_{COPY,COPYIN,COPYOUT,CREATE}. gcc/c/ * c-parser.c (c_parser_omp_clause_name): Add support for finalize and if_present. Make present_or_{copy,copyin,copyout,create} aliases to their non-present_or_* counterparts. Make 'self' an alias to PRAGMA_OACC_CLAUSE_HOST. (c_parser_oacc_data_clause): Update GOMP mappings for PRAGMA_OACC_CLAUSE_{COPY,COPYIN,COPYOUT,CREATE,DELETE}. Remove PRAGMA_OACC_CLAUSE_{SELF,PRESENT_OR_*}. (c_parser_oacc_all_clauses): Handle finalize and if_present clauses. Remove support for present_or_* clauses. (OACC_KERNELS_CLAUSE_MASK): Remove PRESENT_OR_* clauses. (OACC_PARALLEL_CLAUSE_MASK): Likewise. (OACC_DECLARE_CLAUSE_MASK): Likewise. (OACC_DATA_CLAUSE_MASK): Likewise. (OACC_ENTER_DATA_CLAUSE_MASK): Remove PRESENT_OR_* clauses. (OACC_EXIT_DATA_CLAUSE_MASK): Add FINALIZE clause. (OACC_UPDATE_CLAUSE_MASK): Remove SELF, add IF_PRESENT. (c_parser_oacc_declare): Remove PRESENT_OR_* clauses. * c-typeck.c (c_finish_omp_clauses): Handle IF_PRESENT and FINALIZE. gcc/cp/ * parser.c (cp_parser_omp_clause_name): Add support for finalize and if_present. Make present_or_{copy,copyin,copyout,create} aliases to their non-present_or_* counterparts. Make 'self' an alias to PRAGMA_OACC_CLAUSE_HOST. (cp_parser_oacc_data_clause): Update GOMP mappings for PRAGMA_OACC_CLAUSE_{COPY,COPYIN,COPYOUT,CREATE,DELETE}. Remove PRAGMA_OACC_CLAUSE_{SELF,PRESENT_OR_*}. (cp_parser_oacc_all_clauses): Handle finalize and if_present clauses. Remove support for present_or_* clauses. (OACC_KERNELS_CLAUSE_MASK): Remove PRESENT_OR_* clauses. (OACC_PARALLEL_CLAUSE_MASK): Likewise. (OACC_DECLARE_CLAUSE_MASK): Likewise. (OACC_DATA_CLAUSE_MASK): Likewise. (OACC_ENTER_DATA_CLAUSE_MASK): Remove PRESENT_OR_* clauses. (OACC_EXIT_DATA_CLAUSE_MASK): Add FINALIZE clause. (OACC_UPDATE_CLAUSE_MASK): Remove SELF, add IF_PRESENT. (cp_parser_oacc_declare): Remove PRESENT_OR_* clauses. * pt.c (tsubst_omp_clauses): Handle IF_PRESENT and FINALIZE. * semantics.c (finish_omp_clauses): Handle IF_PRESENT and FINALIZE. gcc/fortran/ * gfortran.h (gfc_omp_clauses): Add unsigned if_present, finalize bitfields. * openmp.c (enum omp_mask2): Remove OMP_CLAUSE_PRESENT_OR_*. Add OMP_CLAUSE_{IF_PRESENT,FINALIZE}. (gfc_match_omp_clauses): Update handling of copy, copyin, copyout, create, deviceptr, present_of_*. Add support for finalize and if_present. (OACC_PARALLEL_CLAUSES): Remove PRESENT_OR_* clauses. (OACC_KERNELS_CLAUSES): Likewise. (OACC_DATA_CLAUSES): Likewise. (OACC_DECLARE_CLAUSES): Likewise. (OACC_UPDATE_CLAUSES): Add IF_PRESENT clause. (OACC_ENTER_DATA_CLAUSES): Remove PRESENT_OR_* clauses. (OACC_EXIT_DATA_CLAUSES): Add FINALIZE clause. (gfc_match_oacc_declare): Update to OpenACC 2.5 semantics. * trans-openmp.c (gfc_trans_omp_clauses): Add support for IF_PRESENT and FINALIZE. gcc/ * gimplify.c (gimplify_scan_omp_clauses): Add support for OMP_CLAUSE_{IF_PRESENT,FINALIZE}. (gimplify_adjust_omp_clauses): Likewise. (gimplify_oacc_declare_1): Add support for GOMP_MAP_RELEASE, remove support for GOMP_MAP_FORCE_{ALLOC,TO,FROM,TOFROM}. (gimplify_omp_target_update): Update handling of acc update and enter/exit data. * omp-low.c (install_var_field): Remove unused parameter base_pointers_restrict. (scan_sharing_clauses): Remove base_pointers_restrict parameter. Update call to install_var_field. Handle OMP_CLAUSE_{IF_PRESENT, FINALIZE} (omp_target_base_pointers_restrict_p): Delete. (scan_omp_target): Update call to scan_sharing_clauses. * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_{IF_PRESENT, FINALIZE}. * tree-nested.c (convert_nonlocal_omp_clauses): Handle OMP_CLAUSE_{IF_PRESENT,FINALIZE}. (convert_local_omp_clauses): Likewise. * tree-pretty-print.c (dump_omp_clause): Likewise. * tree.c (omp_clause_num_ops): Add entries for OMP_CLAUSE_{IF_PRESENT, FINALIZE}. (omp_clause_code_name): Likewise. gcc/testsuite/ * c-c++-common/goacc/declare-1.c: Update test case to utilize OpenACC 2.5 data clause semantics. * c-c++-common/goacc/declare-2.c: Likewise. * c-c++-common/goacc/default-4.c: Likewise. * c-c++-common/goacc/finalize-1.c: New test. * c-c++-common/goacc/kernels-alias-2.c: Update test case to utilize OpenACC 2.5 data clause semantics. * c-c++-common/goacc/kernels-alias.c: Likewise. * c-c++-common/goacc/routine-5.c: Likewise. * c-c++-common/goacc/update-if_present-1.c: New test. * c-c++-common/goacc/update-if_present-2.c: New test. * g++.dg/goacc/template.C: Update test case to utilize OpenACC 2.5 data clause semantics. * gfortran.dg/goacc/combined-directives.f90: Likewise. * gfortran.dg/goacc/data-tree.f95: Likewise. * gfortran.dg/goacc/declare-2.f95: Likewise. * gfortran.dg/goacc/default-4.f: Likewise. * gfortran.dg/goacc/enter-exit-data.f95: Likewise. * gfortran.dg/goacc/finalize-1.f: New test. * gfortran.dg/goacc/kernels-alias-2.f95: Update test case to utilize OpenACC 2.5 data clause semantics. * gfortran.dg/goacc/kernels-alias.f95: Likewise. * gfortran.dg/goacc/kernels-tree.f95: Likewise. * gfortran.dg/goacc/nested-function-1.f90: Likewise. * gfortran.dg/goacc/parallel-tree.f95: Likewise. * gfortran.dg/goacc/reduction-promotions.f90: Likewise. * gfortran.dg/goacc/update-if_present-1.f90: New test. * gfortran.dg/goacc/update-if_present-2.f90: New test. libgomp/ * libgomp.h (struct splay_tree_key_s): Add dynamic_refcount member. (gomp_acc_remove_pointer): Update declaration. (gomp_acc_declare_allocate): Declare. (gomp_remove_var): Declare. * libgomp.map (OACC_2.5): Define. * oacc-mem.c (acc_map_data): Update refcount. (acc_unmap_data): Likewise. (present_create_copy): Likewise. (acc_create): Add FLAG_PRESENT when calling present_create_copy. (acc_copyin): Likewise. (FLAG_FINALIZE): Define. (delete_copyout): Update dynamic refcounts, add support for FINALIZE. (acc_delete_finalize): New function. (acc_delete_finalize_async): New function. (acc_copyout_finalize): New function. (acc_copyout_finalize_async): New function. (gomp_acc_insert_pointer): Update refcounts. (gomp_acc_remove_pointer): Return if data is not present on the accelerator. * oacc-parallel.c (find_pset): Rename to find_pointer. (find_pointer): Add support for GOMP_MAP_POINTER. (handle_ftn_pointers): New function. (GOACC_parallel_keyed): Update refcounts of variables. (GOACC_enter_exit_data): Add support for finalized data mappings. Add support for GOMP_MAP_{TO,ALLOC,RELESE,FROM}. Update handling of fortran arrays. (GOACC_update): Add support for GOMP_MAP_{ALWAYS_POINTER,TO,FROM}. (GOACC_declare): Add support for GOMP_MAP_RELEASE, remove support for GOMP_MAP_FORCE_FROM. * openacc.f90 (module openacc_internal): Add acc_copyout_finalize_{32_h,64_h,array_h,_l}, and acc_delete_finalize_{32_h,64_h,array_h,_l}. Add interfaces for acc_copyout_finalize and acc_delete_finalize. (acc_copyout_finalize_32_h): New subroutine. (acc_copyout_finalize_64_h): New subroutine. (acc_copyout_finalize_array_h): New subroutine. (acc_delete_finalize_32_h): New subroutine. (acc_delete_finalize_64_h): New subroutine. (acc_delete_finalize_array_h): New subroutine. * openacc.h (acc_copyout_finalize): Declare. (acc_copyout_finalize_async): Declare. (acc_delete_finalize): Declare. (acc_delete_finalize_async): Declare. * openacc_lib.h (acc_copyout_finalize): New interface. (acc_delete_finalize): New interface. * target.c (gomp_map_vars): Update dynamic_refcount. (gomp_remove_var): New function. (gomp_unmap_vars): Use it. (gomp_unload_image_from_device): Likewise. * testsuite/libgomp.oacc-c-c++-common/data-already-1.c: Update test case to utilize OpenACC 2.5 data clause semantics. * testsuite/libgomp.oacc-c-c++-common/data-already-2.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/data-already-3.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/data-already-4.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/data-already-5.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/data-already-6.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/data-already-7.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/data-already-8.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/lib-16.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/lib-25.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/lib-32.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/lib-83.c: Likewise. * testsuite/libgomp.oacc-fortran/data-5.f90: New test. * testsuite/libgomp.oacc-fortran/data-already-1.f: Update test case to utilize OpenACC 2.5 data clause semantics. * testsuite/libgomp.oacc-fortran/data-already-2.f: Likewise. * testsuite/libgomp.oacc-fortran/data-already-3.f: Likewise. * testsuite/libgomp.oacc-fortran/data-already-4.f: Likewise. * testsuite/libgomp.oacc-fortran/data-already-5.f: Likewise. * testsuite/libgomp.oacc-fortran/data-already-6.f: Likewise. * testsuite/libgomp.oacc-fortran/data-already-7.f: Likewise. * testsuite/libgomp.oacc-fortran/data-already-8.f: Likewise. * testsuite/libgomp.oacc-fortran/lib-32-1.f: Likewise. * testsuite/libgomp.oacc-fortran/lib-32-2.f: Likewise. --------------66A35EE8687FD736CABD4D44 Content-Type: application/x-bzip; name="trunk-oacc25-data.diff.bz2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="trunk-oacc25-data.diff.bz2" Content-length: 30846 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 uFyBiYCzYUeH2p20Iyy7nZMnf6MzZOonKfKzXtQKsgcNROVk4c9XmyuzCSLv jD693ifKYjclGebPOjFlI4zE379/yKvtaMHLk5A3HH4BLwNdJ0uGaPDi64a1 FhktU5XiXZCgp59Uz2ESDR3NpPTu8QVJMU0yS9ppMNsLze6ZFndnxJt30Jsg kEjVNCZGd1fy/Nd7/rtMb8tSCYwshnYzAwNkIUPF8KUNjgmWLNHHSa0gUO2i SKlWJJA+//5rqFsAZdKJJHkYJ0moMGkuMfH267sBZvG2VplpDVBLGvBeMzIb VK6LYvt9CFWAo9IgF9ey4GviAMOzOEuYQ+Jmw5QmBMqQ1/vRdScM2p+Pr/p/ TR8sKrrx3shqBZASe/hV7vD1GD100DCeaE8w+3o6upFOnU43zGna8z4y5ZXU UipJ0LQdHzvCtVVkrSSmTqxu/2+2227ovqt9mOhbIJu76Xh9cZvjbV9teefy XjXh64Mx6dzadMI4ffOIlFnUuiLh0UaN0+yT/hjg+i1xXHCFGZ/wk2dJTfAH Gtb9VriDLwlI1j7vnZc7XCOx7ijOy73GLnOepHK54/1qx0+Gdm9tLrwtZsMc TNgPwfiZvdteXEhfgPiGkUqIcmbo9fwUzQ1vDSs4TGCxSi+QIEhPdgrxCCov ugChwGJIKEZIIhctdpRvSq7azbs2q4ahrdlrXJCFAgo4YiCjVB+yNUHXYe+8 EEwwh+UwA1BEdQGaXKCIYwpSWSQTLUwbAcFS5ZCwBDBMkSZDELIi2lJcAxmP 5dGaT6Nhp1aQLpsDbXBGMKaApFxDFywKkDCWEgvCbcFRm7aIjJQRkn0iEzKl KQtIllWJKMRGVFsjAS8k5ONwRq7rqskpJdXKyBxbltGaQLlGJEMM1xrQERj4 XGbW6lca8CLvVyWWUqWy9lrbNjZILA5gfmYLCwh01SCMRhyhEYAskOhRgWBb SBjIVDAqKIoiLAZgGSh3XVqlttlGAoiBKyz5Zuw8UCib+//qIH3/10k6sk/E kJ0Omil6LhjMlMZbMhZ992nvNNWCPHmwc5BHKEiihQQNORtMtTLjQxGOUpkx lLZXACMQIhWLQIaGZBcFFAsU1hSAOLIIiRxaIyltyYZLglWW2IyzDCmXMlMi IyAOZWDbKWiZjMVVRgyimZcLMQzBpBWirWqEoxtG5glGy2mI4mZJS5mDCrSl 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 q1rWvVr3eKveaotF5lIiIta9730DuFy84mZdId4mJlKImZSefdfVVDOk7wmi IeE6iGeIgjVbPbbbbS6NjcPsZmRv3vPPamoqhTFUnmJp3iKr5z6k++j5/pH0 q4fJgQfAM5qT+o3FCC62xMAuXhwktkX92+sT40FA+5Px9wP+qF/io40rEYGY WVmXLk/bf0ua2yzKWojKMwZJIf2QZIYCCYIiQhCh/rbApsiQEifX9n6udAOS HOEVeAIkFe/JaTlETAOnaQhCEIQhJJJJJJJJJEkkkRJJJJJJEkkkkkkRJJJJ Oa1vJXavbtctNNLSlNNNNWaaUpSuaty23pq7Wrbw7ySSSSSSSSSSSSSSSSSS RJJJJJJJJJJPDX2tvCCggOYUlBrAoSAQAGKKfPAWAH4AeBvIP2UP0LQHqi+e OPzq/plnE+4yX6f343w3sI/aio2VaSJCHkuzXfU0/Jv3ys+FkPvxGNr3C1EQ RVo/3gwaGT7zfo2YKKcBzlmUfP9MWQzAe/N6vws8rrTRK3Rh32Xek9u84jfr b8HviNt246e+zh33Gc8+Xq/hNfpeLDMBaIrqtL1a2vMVYo70WYL437V6FoY5 8WG7Z7s4CQJkweWBkwvsvbKmkX1k2U7b4RnW6VFWyEcp5Z52AlU0Tlc5qRFy rE/xO3Bdm+masuRp2OYKOrAlsgyiUiHLZ4FwQ+3N9BVfbfri2prO89UbrRkQ yx+kWUtSfLyNwzhu4S7w46MiqDUUnSxtzmHOosxnLrNZY7sc7kE3nEDzK2id 9up8MKeOsouM+NCgWntefMVWtX32rvr4eGT4Yzjp4yA9M8jdjVJJJJCEJJLw TGfXnLHaYLWD3yGh08pbDjicTrXDMK8zt62+lWWbpD6qA1eaE4kot7H2O4eX c3LeVy+23vaq6KVRGrS+bmDwyakOkbvsbbv9eeq0GyxhgunQhykNjNgc0781 jgNeOYD31Y9HOBJhBwdbnGxpZcYxfzqBNzSzxw7iWfjvg9CZtYY/CvmJrIdM YSEU5/yQ2IiX5at+OTjNcYWTjR22l2/ZZUuzXeby3hHC1+DfYbc1xEi2XOmi xQsVQvNTcddzY3ZJjlMZUKii2m2QHKHTzrDoOaI98Xo9XG12+EoY46jPDBQg rlBt+fvBZ05eoo9kWssq2RjRtD7M1n1Zul/A6QziDrdJIEiyEgjwPOV5dl/6 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 bTYf3WKCdNfDhIVG/5qLyX/+LuSKcKEhVFlWUg== --------------66A35EE8687FD736CABD4D44--