public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/103675] New: gather is a loss for floats and win for doubles at zen3
@ 2021-12-12 20:20 hubicka at gcc dot gnu.org
  2021-12-13 10:35 ` [Bug target/103675] " marxin at gcc dot gnu.org
  2022-01-04  9:49 ` rguenth at gcc dot gnu.org
  0 siblings, 2 replies; 3+ messages in thread
From: hubicka at gcc dot gnu.org @ 2021-12-12 20:20 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103675

            Bug ID: 103675
           Summary: gather is a loss for floats and win for doubles at
                    zen3
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hubicka at gcc dot gnu.org
  Target Milestone: ---

Currently we disable gather on zen1/2 and enable it for zen3.  This was based
on testing I did before Richard's code for open coding it.  Testing the only
kernels using gather in zen3 with double I get:

jh@ryzen3:~/tsvc/src> ~/trunk-install/bin/gcc tsvc.c  -Ofast -march=native 
common.c dummy.c -lm -mtune-ctrl=use_gather
jh@ryzen3:~/tsvc/src> ./a.out
Loop    Time(sec)       Checksum
 s352        7.529      1.644903
s4112        1.317      1127072.247160
s4114        1.377      32000.000684
s4115        1.250      1.038812
s4116        0.873      0.753265
s4117        1.283      32002.208699
s4121        0.583      196490.281734
jh@ryzen3:~/tsvc/src> ~/trunk-install/bin/gcc tsvc.c  -Ofast -march=native 
common.c dummy.c -lm -mtune-ctrl=^use_gather
jh@ryzen3:~/tsvc/src> ./a.out
Loop    Time(sec)       Checksum
 s352        7.618      1.644903
s4112        1.223      1127072.247160
s4114        1.523      32000.000684
s4115        2.019      1.038812
s4116        1.531      0.753265
s4117        1.388      32002.208699
s4121        0.549      196490.281734

So it using gather is a win. For floats I get:

jh@ryzen3:~/tsvc/src> ~/trunk-install/bin/gcc tsvc.c  -Ofast -march=native 
common.c dummy.c -lm -mtune-ctrl=use_gather ; ./a.out
Loop    Time(sec)       Checksum
 s352        7.419      1.644808
s4112        1.183      1127128.875000
s4114        1.198      32000.000000
s4115        1.056      1.038788
s4116        0.817      0.753265
s4117        1.179      32002.205078
s4121        0.264      196500.265625
jh@ryzen3:~/tsvc/src> ~/trunk-install/bin/gcc tsvc.c  -Ofast -march=native 
common.c dummy.c -lm -mtune-ctrl=^use_gather ; ./a.out
Loop    Time(sec)       Checksum
 s352        7.435      1.644808
s4112        0.742      1127128.875000
s4114        1.078      32000.000000
s4115        0.673      1.038788
s4116        0.532      0.753264
s4117        1.044      32002.205078
s4121        0.266      196500.265625

so using gather is loss. For long I get:
jh@ryzen3:~/tsvc/src> ~/trunk-install/bin/gcc tsvc.c  -Ofast -march=native 
common.c dummy.c -lm -mtune-ctrl=use_gather ; ./a.out
Loop    Time(sec)       Checksum
 s352        4.327      1.000000
s4112        1.576      132000.000000
s4114        1.603      32000.000000
s4115        1.453      0.000000
s4116        1.131      0.000000
s4117        1.432      32001.000000
s4121        0.629      132000.000000
jh@ryzen3:~/tsvc/src> ~/trunk-install/bin/gcc tsvc.c  -Ofast -march=native 
common.c dummy.c -lm -mtune-ctrl=^use_gather ; ./a.out
Loop    Time(sec)       Checksum
 s352        4.532      1.000000
s4112        1.630      132000.000000
s4114        1.808      32000.000000
s4115        1.431      0.000000
s4116        1.130      0.000000
s4117        1.646      32001.000000
s4121        0.638      132000.000000
so gather is a win
For int I get:

jh@ryzen3:~/tsvc/src> ~/trunk-install/bin/gcc tsvc.c  -Ofast -march=native 
common.c dummy.c -lm -mtune-ctrl=use_gather ; ./a.out
Loop    Time(sec)       Checksum
 s352        1.345      1.000000
s4112        1.057      132000.000000
s4114        1.095      32000.000000
s4115        1.055      0.000000
s4116        0.817      0.000000
s4117        1.022      32001.000000
s4121        0.266      132000.000000
jh@ryzen3:~/tsvc/src> ~/trunk-install/bin/gcc tsvc.c  -Ofast -march=native 
common.c dummy.c -lm -mtune-ctrl=^use_gather ; ./a.out
Loop    Time(sec)       Checksum
 s352        1.345      1.000000
s4112        0.730      132000.000000
s4114        1.089      32000.000000
s4115        0.679      0.000000
s4116        0.528      0.000000
s4117        1.013      32001.000000
s4121        0.262      132000.000000

so gather is a loss. So i suppose we want to disable gathers for 32bit and
smaller datatypes?

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug target/103675] gather is a loss for floats and win for doubles at zen3
  2021-12-12 20:20 [Bug target/103675] New: gather is a loss for floats and win for doubles at zen3 hubicka at gcc dot gnu.org
@ 2021-12-13 10:35 ` marxin at gcc dot gnu.org
  2022-01-04  9:49 ` rguenth at gcc dot gnu.org
  1 sibling, 0 replies; 3+ messages in thread
From: marxin at gcc dot gnu.org @ 2021-12-13 10:35 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103675

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2021-12-13
                 CC|                            |rguenth at gcc dot gnu.org

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug target/103675] gather is a loss for floats and win for doubles at zen3
  2021-12-12 20:20 [Bug target/103675] New: gather is a loss for floats and win for doubles at zen3 hubicka at gcc dot gnu.org
  2021-12-13 10:35 ` [Bug target/103675] " marxin at gcc dot gnu.org
@ 2022-01-04  9:49 ` rguenth at gcc dot gnu.org
  1 sibling, 0 replies; 3+ messages in thread
From: rguenth at gcc dot gnu.org @ 2022-01-04  9:49 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103675

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|                            |x86_64-*-*

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
I suppose more fine-grained control would be useful.  It's not clear to me
whether the tests cover V2DF and V4DF and V4SF and V8SF and whether the
win/not win correlates more to the number of elements than the element mode.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-01-04  9:49 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-12 20:20 [Bug target/103675] New: gather is a loss for floats and win for doubles at zen3 hubicka at gcc dot gnu.org
2021-12-13 10:35 ` [Bug target/103675] " marxin at gcc dot gnu.org
2022-01-04  9:49 ` rguenth at gcc dot gnu.org

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).