From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from impout003.msg.chrl.nc.charter.net (impout003aa.msg.chrl.nc.charter.net [47.43.20.27]) by sourceware.org (Postfix) with ESMTPS id 0A6383846077; Thu, 4 Mar 2021 02:16:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 0A6383846077 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=charter.net Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=jvdelisle@charter.net Received: from [192.168.1.9] ([96.41.221.129]) by cmsmtp with ESMTPA id HdX3l922wr76UHdX3lIhTk; Thu, 04 Mar 2021 02:16:06 +0000 Authentication-Results: charter.net; none X-Authority-Analysis: v=2.3 cv=dotv9Go4 c=1 sm=1 tr=0 a=07pILqX15KmGv9ZXTMmBNA==:117 a=07pILqX15KmGv9ZXTMmBNA==:17 a=IkcTkHD0fZMA:10 a=LiMhy2kz-02NCfZwB-oA:9 a=QEXdDO2ut3YA:10 Subject: Re: [PATCH] PR libfortran/99218 - [8/9/10/11 Regression] matmul on temporary array accesses invalid memory To: Harald Anlauf , fortran , gcc-patches References: From: Jerry DeLisle Message-ID: <12e03f3f-9700-f091-712e-5791a93db40e@charter.net> Date: Wed, 3 Mar 2021 18:16:04 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US X-CMAE-Envelope: MS4wfNPK5zvdoYH26xfiV32yX2YR+OW12NuZ+kA/uokfc3b0SuLtWfFScOS++isp5sJzObhAFK8qU4DCZBL4lK0KQSbo1EwzpG3nQ9gAYTlNNZkmRs3CUj2q CbBhu8QJRhdjq0xGSs0ggv/GCL14cCf4mE84+rWSzVVePYESvBha8fO48zK0/+OicjO2O1mBSg0hXEJolRHPh+hIpriRYO3WIQwLLQ3XILaEvvM4TOH7V/c3 X-Spam-Status: No, score=-3.0 required=5.0 tests=BAYES_00, FREEMAIL_FROM, KAM_DMARC_STATUS, NICE_REPLY_A, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, 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: fortran@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Fortran mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Mar 2021 02:16:08 -0000 Yes, OK, however, have you been able to test performance. I am only curious. There was a test program we used back when this code was first implemented in bugzilla. I do not remember the PR number off hand. Jerry On 2/23/21 1:46 PM, Harald Anlauf via Fortran wrote: > Dear all, > > under certain circumstances a call to MATMUL for rank-2 times rank-1 > would invoke a highly tuned rank-2 times rank-2 algorithm which could > lead to invalid reads and writes. The solution is to check the rank > of the second argument to matmul and fall back to a regular algorithm > for rank-1. The invalid accesses did show up with valgrind. > > I have not been able to create a testcase that gives wrong results. > > Regtested on x86_64-pc-linux-gnu, and verified with valgrind. > > OK for master? > > As this affects all open branches down to 8, ok for backports? > > Thanks, > Harald > > > PR libfortran/99218 - matmul on temporary array accesses invalid memory > > Do not invoke tuned rank-2 times rank-2 matmul if rank(b) == 1. > > libgfortran/ChangeLog: > > PR libfortran/99218 > * m4/matmul_internal.m4: Invoke tuned matmul only for rank(b)>1. > * generated/matmul_c10.c: Regenerated. > * generated/matmul_c16.c: Likewise. > * generated/matmul_c4.c: Likewise. > * generated/matmul_c8.c: Likewise. > * generated/matmul_i1.c: Likewise. > * generated/matmul_i16.c: Likewise. > * generated/matmul_i2.c: Likewise. > * generated/matmul_i4.c: Likewise. > * generated/matmul_i8.c: Likewise. > * generated/matmul_r10.c: Likewise. > * generated/matmul_r16.c: Likewise. > * generated/matmul_r4.c: Likewise. > * generated/matmul_r8.c: Likewise. > * generated/matmulavx128_c10.c: Likewise. > * generated/matmulavx128_c16.c: Likewise. > * generated/matmulavx128_c4.c: Likewise. > * generated/matmulavx128_c8.c: Likewise. > * generated/matmulavx128_i1.c: Likewise. > * generated/matmulavx128_i16.c: Likewise. > * generated/matmulavx128_i2.c: Likewise. > * generated/matmulavx128_i4.c: Likewise. > * generated/matmulavx128_i8.c: Likewise. > * generated/matmulavx128_r10.c: Likewise. > * generated/matmulavx128_r16.c: Likewise. > * generated/matmulavx128_r4.c: Likewise. > * generated/matmulavx128_r8.c: Likewise. >