From: Lipeng Zhu <lipeng.zhu@intel.com>
To: Thomas Schwinge <thomas@codesourcery.com>
Cc: Jakub Jelinek <jakub@redhat.com>,
fortran@gcc.gnu.org, gcc-patches@gcc.gnu.org, "Deng,
Pan" <pan.deng@intel.com>,
rep.dot.nop@gmail.com, "Li, Tianyou" <tianyou.li@intel.com>,
tkoenig@netcologne.de, "Guo, Wangyang" <wangyang.guo@intel.com>,
Tobias Burnus <tobias@codesourcery.com>,
"H.J. Lu" <hjl.tools@gmail.com>
Subject: Re: RE: [PATCH v7] libgfortran: Replace mutex with rwlock
Date: Fri, 22 Dec 2023 14:48:54 +0800 [thread overview]
Message-ID: <90d205a6-d38a-49d6-ba66-99202e566016@intel.com> (raw)
In-Reply-To: <87bkajsrx4.fsf@euler.schwinge.homeip.net>
Hi Thomas,
On 2023/12/21 19:42, Thomas Schwinge wrote:
> Hi!
>
> On 2023-12-13T21:52:29+0100, I wrote:
>> On 2023-12-12T02:05:26+0000, "Zhu, Lipeng" <lipeng.zhu@intel.com> wrote:
>>> On 2023/12/12 1:45, H.J. Lu wrote:
>>>> On Sat, Dec 9, 2023 at 7:25 PM Zhu, Lipeng <lipeng.zhu@intel.com> wrote:
>>>>> On 2023/12/9 23:23, Jakub Jelinek wrote:
>>>>>> On Sat, Dec 09, 2023 at 10:39:45AM -0500, Lipeng Zhu wrote:
>>>>>>> This patch try to introduce the rwlock and split the read/write to
>>>>>>> unit_root tree and unit_cache with rwlock instead of the mutex to
>>>>>>> increase CPU efficiency. In the get_gfc_unit function, the
>>>>>>> percentage to step into the insert_unit function is around 30%, in
>>>>>>> most instances, we can get the unit in the phase of reading the
>>>>>>> unit_cache or unit_root tree. So split the read/write phase by
>>>>>>> rwlock would be an approach to make it more parallel.
>>>>>>>
>>>>>>> BTW, the IPC metrics can gain around 9x in our test server with
>>>>>>> 220 cores. The benchmark we used is
>>>>>>> https://github.com/rwesson/NEAT
>>
>>>>>> Ok for trunk, thanks.
>>
>>>>> Thanks! Looking forward to landing to trunk.
>>
>>>> Pushed for you.
>
>> I've just filed <https://gcc.gnu.org/PR113005>
>> "'libgomp.fortran/rwlock_1.f90', 'libgomp.fortran/rwlock_3.f90' execution test timeouts".
>> Would you be able to look into that?
>
> See my update in there.
>
>
> Grüße
> Thomas
> -------------- > Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße
201, 80634 München; Gesellschaft mit beschränkter Haftung;
Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft:
München; Registergericht München, HRB 106955
>
Since I don't have gcc bugzilla account. Reply in this thread:
Limit themselves to some lower 'OMP_NUM_THREADS' should be an option or
increase the execution timeout?
But I can't reproduce the execution timeout failure on both powerpc9 and
powerpc10 arch machine. And I also tried to decrease the CPU frequency
from 2.6G to 800M, these test cases still can run successfully.
> so only a little bit of an improvement of the new "rwlock"
libgfortran vs. old "mutex" GCC 10 one, curiously. (But supposedly that
depends on the hardware or other factors?)
The rwlock can increase the IPC a lot, maybe the wall time you listed is
not obvious.
$ grep ^cpu < /proc/cpuinfo | uniq -c
192 cpu : POWER10 (architected), altivec supported
Native configuration is powerpc64le-unknown-linux-gnu
Schedule of variations:
unix
PASS: libgomp.fortran/rwlock_1.f90 -O0 (test for excess errors)
PASS: libgomp.fortran/rwlock_1.f90 -O0 execution test
PASS: libgomp.fortran/rwlock_1.f90 -O1 (test for excess errors)
PASS: libgomp.fortran/rwlock_1.f90 -O1 execution test
PASS: libgomp.fortran/rwlock_1.f90 -O2 (test for excess errors)
PASS: libgomp.fortran/rwlock_1.f90 -O2 execution test
PASS: libgomp.fortran/rwlock_1.f90 -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions (test for
excess errors)
PASS: libgomp.fortran/rwlock_1.f90 -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions execution test
PASS: libgomp.fortran/rwlock_1.f90 -O3 -g (test for excess errors)
PASS: libgomp.fortran/rwlock_1.f90 -O3 -g execution test
PASS: libgomp.fortran/rwlock_1.f90 -Os (test for excess errors)
PASS: libgomp.fortran/rwlock_1.f90 -Os execution test
PASS: libgomp.fortran/rwlock_2.f90 -O0 (test for excess errors)
PASS: libgomp.fortran/rwlock_2.f90 -O0 execution test
PASS: libgomp.fortran/rwlock_2.f90 -O1 (test for excess errors)
PASS: libgomp.fortran/rwlock_2.f90 -O1 execution test
PASS: libgomp.fortran/rwlock_2.f90 -O2 (test for excess errors)
PASS: libgomp.fortran/rwlock_2.f90 -O2 execution test
PASS: libgomp.fortran/rwlock_2.f90 -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions (test for
excess errors)
PASS: libgomp.fortran/rwlock_2.f90 -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions execution test
PASS: libgomp.fortran/rwlock_2.f90 -O3 -g (test for excess errors)
PASS: libgomp.fortran/rwlock_2.f90 -O3 -g execution test
PASS: libgomp.fortran/rwlock_2.f90 -Os (test for excess errors)
PASS: libgomp.fortran/rwlock_2.f90 -Os execution test
PASS: libgomp.fortran/rwlock_3.f90 -O0 (test for excess errors)
PASS: libgomp.fortran/rwlock_3.f90 -O0 execution test
PASS: libgomp.fortran/rwlock_3.f90 -O1 (test for excess errors)
PASS: libgomp.fortran/rwlock_3.f90 -O1 execution test
PASS: libgomp.fortran/rwlock_3.f90 -O2 (test for excess errors)
PASS: libgomp.fortran/rwlock_3.f90 -O2 execution test
PASS: libgomp.fortran/rwlock_3.f90 -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions (test for
excess errors)
PASS: libgomp.fortran/rwlock_3.f90 -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions execution test
Lipeng Zhu
next prev parent reply other threads:[~2023-12-22 6:49 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-09 2:32 [PATCH v4] " Zhu, Lipeng
2023-05-16 7:08 ` Zhu, Lipeng
2023-05-23 2:53 ` Zhu, Lipeng
2023-05-24 19:18 ` Thomas Koenig
2023-08-18 3:06 ` Zhu, Lipeng
2023-09-14 8:33 ` Zhu, Lipeng
2023-10-23 1:21 ` Zhu, Lipeng
2023-10-23 5:52 ` Thomas Koenig
2023-10-23 23:59 ` Zhu, Lipeng
2023-11-01 10:14 ` Zhu, Lipeng
2023-11-02 9:58 ` Bernhard Reutner-Fischer
2023-11-23 9:36 ` Zhu, Lipeng
2023-12-07 5:18 ` Zhu, Lipeng
2023-08-18 3:18 ` [PATCH v6] " Zhu, Lipeng
2023-12-08 10:19 ` Jakub Jelinek
2023-12-09 15:13 ` Zhu, Lipeng
2023-12-09 15:39 ` [PATCH v7] " Lipeng Zhu
2023-12-09 15:23 ` Jakub Jelinek
2023-12-10 3:25 ` Zhu, Lipeng
2023-12-11 17:45 ` H.J. Lu
2023-12-12 2:05 ` Zhu, Lipeng
2023-12-13 20:52 ` Thomas Schwinge
2023-12-14 2:28 ` Zhu, Lipeng
2023-12-14 12:29 ` Thomas Schwinge
2023-12-14 12:39 ` Jakub Jelinek
2023-12-15 5:43 ` Zhu, Lipeng
2023-12-21 11:42 ` Thomas Schwinge
2023-12-22 6:48 ` Lipeng Zhu [this message]
2024-01-03 9:14 ` Lipeng Zhu
2024-01-17 13:25 ` Lipeng Zhu
2023-12-14 15:50 ` Richard Earnshaw (lists)
2023-12-15 11:31 ` Lipeng Zhu
2023-12-15 19:23 ` Richard Earnshaw
2024-01-02 11:57 ` Vaseeharan Vinayagamoorthy
2024-01-03 1:02 ` Lipeng Zhu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=90d205a6-d38a-49d6-ba66-99202e566016@intel.com \
--to=lipeng.zhu@intel.com \
--cc=fortran@gcc.gnu.org \
--cc=gcc-patches@gcc.gnu.org \
--cc=hjl.tools@gmail.com \
--cc=jakub@redhat.com \
--cc=pan.deng@intel.com \
--cc=rep.dot.nop@gmail.com \
--cc=thomas@codesourcery.com \
--cc=tianyou.li@intel.com \
--cc=tkoenig@netcologne.de \
--cc=tobias@codesourcery.com \
--cc=wangyang.guo@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).