From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5769 invoked by alias); 3 Aug 2018 08:46:01 -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 5629 invoked by uid 89); 3 Aug 2018 08:45:46 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-2.7 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-ua0-f193.google.com Received: from mail-ua0-f193.google.com (HELO mail-ua0-f193.google.com) (209.85.217.193) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 03 Aug 2018 08:45:44 +0000 Received: by mail-ua0-f193.google.com with SMTP id o11-v6so3521138uak.5 for ; Fri, 03 Aug 2018 01:45:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=1LgzygQN0K6Vm8H1HQCzZqYJvLTTRY4hhxP080SpKAk=; b=c+QOj3CtOTkE4U04b3XVegIZwqzcA+TtvqO1m6Y/C79MvDRAQPCr2b9kVWFhv1JA39 dBSvGwxDqSGRjcZ00a8yhhlxjv8IPQLYAE76YZokkv6NdSAx+094aW0U9T+C8BbA8eZ4 lyMubiCFZ2baNs565l8lgrGIKZ7dS3VU2FWvQ= MIME-Version: 1.0 References: <20180726133142.DE075D801C7@oc3748833570.ibm.com> <01cd923e-18c7-f745-a75d-49536d56cdbf@netcologne.de> <5B6021C0.5060507@arm.com> <20180802113135.5qmwnfpxwv4dic6z@student.ethz.ch> <20180802170441.aidlg6grthuavogc@student.ethz.ch> In-Reply-To: <20180802170441.aidlg6grthuavogc@student.ethz.ch> From: Christophe Lyon Date: Fri, 03 Aug 2018 08:46:00 -0000 Message-ID: Subject: Re: Async I/O patch with compilation fix To: koenigni@student.ethz.ch Cc: Andre Simoes Dias Vieira , gcc Patches , fortran@gcc.gnu.org, Thomas Koenig , Ulrich Weigand , David Edelsohn , clyon@gcc.gnu.org Content-Type: text/plain; charset="UTF-8" X-IsSubscribed: yes X-SW-Source: 2018-08/txt/msg00264.txt.bz2 On Thu, 2 Aug 2018 at 19:05, Nicolas Koenig wrote: > > On Thu, Aug 02, 2018 at 05:42:46PM +0200, Christophe Lyon wrote: > > On Thu, 2 Aug 2018 at 13:35, Nicolas Koenig wrote: > > > > > > > > > Hello everyone, > > > > > > Here is an updated version of the patch that hopefully fixes the compilation > > > problems by disabling async I/O if conditions are not supported by the target. > > > > > > I would appreciate if people could test it on systems on which it failed > > > before. As for the array_constructor_8.f90 failure reported in the PR, why > > > it fails is beyond me, it doesn't even use I/O. Maybe/Probably something > > > unrelated? > > > > > > > Hi, > > I'm probably missing something obvious, but after applying this patch > > on top of r263136, the builds fail while building libgfortran: > > /tmp/9271913_1.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libgfortran/runtime/error.c:28:10: > > fatal error: async.h: No such file or directory > > #include "async.h" > > ^~~~~~~~~ > > compilation terminated. > > make[3]: *** [error.lo] Error 1 > > > > Hi, > > It wasn't you who missed something obvious. Typing `svn add` is hard. > Here is a version of the patch with the two new files. > OK, I applied this patch, and again I still see regressions on armeb-none-linux-gnueabihf --with-cpu cortex-a9 --with-fpu neon-fp16 FAIL: gfortran.dg/array_constructor_8.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gfortran.dg/array_constructor_8.f90 -O3 -g execution test gfortran.log contains: STOP 2 STOP 2 Christophe > Nicolas > > > > Nicolas > > > > > > > > > 2018-08-02 Nicolas Koenig > > > Thomas Koenig > > > > > > PR fortran/25829 > > > * gfortran.texi: Add description of asynchronous I/O. > > > * trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables > > > as volatile. > > > * trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to > > > st_wait_async and change argument spec from ".X" to ".w". > > > (gfc_trans_wait): Pass ID argument via reference. > > > > > > 2018-08-02 Nicolas Koenig > > > Thomas Koenig > > > > > > PR fortran/25829 > > > * gfortran.dg/f2003_inquire_1.f03: Add write statement. > > > * gfortran.dg/f2003_io_1.f03: Add wait statement. > > > > > > 2018-08-02 Nicolas Koenig > > > Thomas Koenig > > > > > > PR fortran/25829 > > > * Makefile.am: Add async.c to gfor_io_src. > > > Add async.h to gfor_io_headers. > > > * Makefile.in: Regenerated. > > > * gfortran.map: Add _gfortran_st_wait_async. > > > * io/async.c: New file. > > > * io/async.h: New file. > > > * io/close.c: Include async.h. > > > (st_close): Call async_wait for an asynchronous unit. > > > * io/file_pos.c (st_backspace): Likewise. > > > (st_endfile): Likewise. > > > (st_rewind): Likewise. > > > (st_flush): Likewise. > > > * io/inquire.c: Add handling for asynchronous PENDING > > > and ID arguments. > > > * io/io.h (st_parameter_dt): Add async bit. > > > (st_parameter_wait): Correct. > > > (gfc_unit): Add au pointer. > > > (st_wait_async): Add prototype. > > > (transfer_array_inner): Likewise. > > > (st_write_done_worker): Likewise. > > > * io/open.c: Include async.h. > > > (new_unit): Initialize asynchronous unit. > > > * io/transfer.c (async_opt): New struct. > > > (wrap_scalar_transfer): New function. > > > (transfer_integer): Call wrap_scalar_transfer to do the work. > > > (transfer_real): Likewise. > > > (transfer_real_write): Likewise. > > > (transfer_character): Likewise. > > > (transfer_character_wide): Likewise. > > > (transfer_complex): Likewise. > > > (transfer_array_inner): New function. > > > (transfer_array): Call transfer_array_inner. > > > (transfer_derived): Call wrap_scalar_transfer. > > > (data_transfer_init): Check for asynchronous I/O. > > > Perform a wait operation on any pending asynchronous I/O > > > if the data transfer is synchronous. Copy PDT and enqueue > > > thread for data transfer. > > > (st_read_done_worker): New function. > > > (st_read_done): Enqueue transfer or call st_read_done_worker. > > > (st_write_done_worker): New function. > > > (st_write_done): Enqueue transfer or call st_read_done_worker. > > > (st_wait): Document as no-op for compatibility reasons. > > > (st_wait_async): New function. > > > * io/unit.c (insert_unit): Use macros LOCK, UNLOCK and TRYLOCK; > > > add NOTE where necessary. > > > (get_gfc_unit): Likewise. > > > (init_units): Likewise. > > > (close_unit_1): Likewise. Call async_close if asynchronous. > > > (close_unit): Use macros LOCK and UNLOCK. > > > (finish_last_advance_record): Likewise. > > > (newunit_alloc): Likewise. > > > * io/unix.c (find_file): Likewise. > > > (flush_all_units_1): Likewise. > > > (flush_all_units): Likewise. > > > * libgfortran.h (generate_error_common): Add prototype. > > > * runtime/error.c: Include io.h and async.h. > > > (generate_error_common): New function. > > > > > > 2018-08-02 Nicolas Koenig > > > Thomas Koenig > > > > > > PR fortran/25829 > > > * testsuite/libgomp.fortran/async_io_1.f90: New test. > > > * testsuite/libgomp.fortran/async_io_2.f90: New test. > > > * testsuite/libgomp.fortran/async_io_3.f90: New test. > > > * testsuite/libgomp.fortran/async_io_4.f90: New test. > > > * testsuite/libgomp.fortran/async_io_5.f90: New test. > > > * testsuite/libgomp.fortran/async_io_6.f90: New test. > > > * testsuite/libgomp.fortran/async_io_7.f90: New test.