Wednesday, 2023-09-06

*** markos_ <markos_!~markos_@user/markos/x-1838887> has quit IRC00:36
*** markos_ <markos_!> has joined #libre-soc00:48
*** markos_ <markos_!~markos_@user/markos/x-1838887> has joined #libre-soc00:48
*** psydroid <psydroid!~psydroid@user/psydroid> has quit IRC00:53
*** tplaten <tplaten!~tplaten@> has quit IRC01:40
*** tplaten <tplaten!~tplaten@> has joined #libre-soc01:54
*** gnucode <gnucode!~gnucode@user/jab> has quit IRC02:35
*** Gooberpatrol66 <Gooberpatrol66!~Gooberpat@user/gooberpatrol66> has quit IRC03:02
*** tplaten <tplaten!~tplaten@> has quit IRC03:11
*** tplaten <tplaten!~tplaten@> has joined #libre-soc03:26
*** Gooberpatrol66 <Gooberpatrol66!~Gooberpat@user/gooberpatrol66> has joined #libre-soc06:43
*** ghostmansd <ghostmansd!> has quit IRC08:34
*** ghostmansd <ghostmansd!> has joined #libre-soc08:35
*** ghostmansd <ghostmansd!> has quit IRC08:51
*** ghostmansd <ghostmansd!> has joined #libre-soc08:51
*** psydroid <psydroid!~psydroid@user/psydroid> has joined #libre-soc09:18
*** ghostmansd <ghostmansd!> has quit IRC09:23
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC09:50
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc09:51
*** cesar <cesar!~cesar@> has joined #libre-soc10:31
*** buringman42 <buringman42!> has joined #libre-soc10:32
cesarmarkos_, just a reminder to try out the new bit file I generated for your FPGA board.10:34
*** markos_ <markos_!~markos_@user/markos/x-1838887> has quit IRC10:43
*** markos_ <markos_!> has joined #libre-soc10:55
*** markos_ <markos_!~markos_@user/markos/x-1838887> has joined #libre-soc10:55
*** buringman42 <buringman42!> has quit IRC11:02
*** cesar <cesar!~cesar@> has quit IRC11:17
*** cesar <cesar!~cesar@2804:14d:688a:59ea:50cf:148b:68ff:d6c4> has joined #libre-soc11:19
*** octavius <octavius!> has joined #libre-soc11:41
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has quit IRC12:15
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has joined #libre-soc12:15
*** psydroid <psydroid!~psydroid@user/psydroid> has quit IRC12:18
*** psydroid <psydroid!~psydroid@user/psydroid> has joined #libre-soc12:18
ghostmansd[m]I've checked IRC logs, and one thought came to my mind. As someone who had to go over classical studies for 5 years, I kinda admire that we have so many Greek and Latin people. Just look at these nicknames: Octavius, Markos (should've been Marcus, but hey), Cesar (should've been Caesar, but hey again!)... It makes me feel we're sort of creating a department on Humanism. :-)12:29
ghostmansd[m]Sorry, that was just a spontaneous mind. I just had to share it. :-)12:29
*** openpowerbot <openpowerbot!> has quit IRC12:35
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC12:42
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has joined #libre-soc12:43
*** markos_ <markos_!~markos_@user/markos/x-1838887> has quit IRC12:45
*** openpowerbot <openpowerbot!> has joined #libre-soc12:50
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has quit IRC12:55
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc12:55
octaviusI think I came up with that nickname when I was still self studying latin. I found it fascinating how similar the declensions in Latin are to Russian12:56
*** markos_ <markos_!> has joined #libre-soc12:58
*** markos_ <markos_!~markos_@user/markos/x-1838887> has joined #libre-soc12:58
*** ghostmansd <ghostmansd!> has joined #libre-soc13:13
markos_ghostmansd, lol, well, Markos is the way it's written in Greek -Marcus is the latin form- and it's just a reverse of my first and last name  :)13:17
markos_looked cool, 25 years ago and habbits are hard to break :)13:17
markos_your name is also Greek, but ofc you already know that :)13:18
markos_actually Luke is also a latin name, Lucas <- Λουκᾶς (in ancient greek) <- lux <- light, enlightened13:23
markos_my name surprisingly is totally latin :)13:23
*** ghostmansd[pc] <ghostmansd[pc]!> has joined #libre-soc13:24
*** ghostmansd <ghostmansd!> has quit IRC13:25
openpowerbot[irc] <sadoon[m]1> Not even close to Latin but my name is actually a plural noun in Arabic which I always found funny13:39
openpowerbot[irc] <sadoon[m]1> Sa'doon is actually just plural for Sa'ad13:40
markos_sadoon, my wife is learning Arabic I just mentioned that to her and she nodded :)13:55
openpowerbot[irc] <sadoon[m]1> Nice, that's one thing many Arabs don't pick up on13:56
openpowerbot[irc] <sadoon[m]1> It's difficult to understand how Arabs had grammatical rules for centuries before they put them down in writing, this is one of them13:57
*** ghostmansd[pc] <ghostmansd[pc]!> has quit IRC14:02
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC14:02
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has joined #libre-soc14:04
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has quit IRC14:19
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc14:20
markos_ok, so, first limitation, ed25519 keeps 80 64-bit constants that are used in every iteration, this means 80 64-bit registers are gone just like that14:44
octaviuswow, quite a bit14:45
markos_state also needs some more14:46
markos_state: uint64_t[10], uint32_t, uint8_t[128] -> 26.5 x 64-bit registers more14:48
markos_let's say 2714:48
markos_that leaves 2114:48
markos_this basically means we can forget doing this crypto algorithm completely in-register14:49
markos_because it will have to continuously load from memory each -small- block of a few bytes to hash14:50
markos_this isn't as bad however14:50
markos_because at least we can hold all that info in-register!14:50
markos_all the rest of the architectures have to go back-and-forth from memory and cache to load all these values14:50
markos_unless they do it in hardware14:51
markos_I think we still can have an advantage against other asm/C implementations14:51
lkclhmmm hmmm... or... use the (few remaining) registers to do what you'd normally have to do for 2048/4096/8192-bit arithmetic14:56
lkclbut hm that still involves LD/ST as part of the mul, but if it's unavoidable it's unavoidable14:57
openpowerbot[irc] <sadoon[m]1> poly1305 will be simpler to implement I can tell you that14:58
lkclthe cost will be, "is it better to knock a few of those consts out and do the mul entirely in-registers"14:58
openpowerbot[irc] <sadoon[m]1> Might not need memory but we'll see14:58
openpowerbot[irc] <sadoon[m]1> Funny, Daniel Bernstein was also involved in ed25519, he created poly1305, must be a magician14:58
lkcl"is it better to keep the consts all in-regs and add an extra loop around the mul"?14:59
markos_the constants are being used in only one step, but the heaviest one computationally14:59
markos_so they might be loaded only in that step and after that the registers can be released15:00
lkcloctavius: i tracked down a system-call page with assembler for a "write" call in it (to stdout). confirmed that it works (you need qemu-ppc64le-user installed and it will "just execute")15:01
lkclyou will be able to compare that against the assembler for a *function* call and see how obviously-similar they are15:01
lkclr0 contains the system-call number15:01
lkclthat's literally the only difference between a system call and a function call15:02
lkclyou have enough information now to work it out and proceed smoothly15:03
*** ghostmansd[pc] <ghostmansd[pc]!> has joined #libre-soc15:09
markos_now that I look at the algorithm it's not as bad15:10
markos_they're not actually needed in every step15:10
markos_I think it's doable15:10
octaviusThanks lkcl15:27
*** ghostmansd[pc] <ghostmansd[pc]!> has quit IRC16:10
*** ghostmansd[pc] <ghostmansd[pc]!> has joined #libre-soc16:10
*** ghostmansd[pc] <ghostmansd[pc]!> has quit IRC16:32
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC16:37
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has joined #libre-soc16:37
openpowerbot[irc] <sadoon[m]1> I have major performance speedups in verilator, more to discuss later :D16:40
openpowerbot[irc] <sadoon[m]1> With no changes except makefile16:40
openpowerbot[irc] <sadoon[m]1> 12 seconds down to 9 for hello world16:40
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has quit IRC16:51
markos_not bad16:52
markos_are we having a meeting tonight? I'm a bit overwhelmed with all those meetings, I will probably skip tonight16:53
markos_anyway, apart from all else, only status report is I started investigating cryptoprimitives ed2551916:54
openpowerbot[irc] <sadoon[m]1> I'll be there anyway16:55
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc17:21
*** ghostmansd[pc] <ghostmansd[pc]!> has joined #libre-soc17:29
octaviusSadoon, please document how you managed this speedup (perhaps create a bug linked to #1073, don't add a milestone or budget)17:49
octaviusLike markos, I'm exhausted, so won't be attending tonight17:49
*** octavius <octavius!> has quit IRC17:54
openpowerbot[irc] <sadoon[m]1> Yes of course, just gotta work out the kinks, make sure there aren't any regressions, and see which options exactly sped it up17:59
openpowerbot[irc] <sadoon[m]1> It's a combination of CFLAGS and verilator flags18:00
openpowerbot[irc] <sadoon[m]1> Curious to see how they do on POWER9 too18:00
*** tplaten <tplaten!~tplaten@> has quit IRC18:03
openpowerbot[irc] <sadoon[m]1> octavius is there a way to stop the hello world simulation as soon as it is completed?18:07
openpowerbot[irc] <sadoon[m]1> This way we can get better test results and perhaps automate them18:07
openpowerbot[irc] <sadoon[m]1> (Thinks about adding an illegal instruction at the end heheheh)18:08
openpowerbot[irc] <sadoon[m]1> Only shaved off one second on POWER9, sigh. But given that we mostly use x86 it'll be a noticable difference for most18:49
openpowerbot[irc] <sadoon[m]1> Funny that my laptop is 2.5x faster in verilator than my talos18:49
openpowerbot[irc] <programmerjake> power9 doesn't have amazing single-threaded performance in my experience18:50
openpowerbot[irc] <sadoon[m]1> yep18:50
openpowerbot[irc] <sadoon[m]1> Part of the reason I upgraded to the 20 core vs 8 core18:51
openpowerbot[irc] <sadoon[m]1> At least then I can put up a fight in multithreaded use cases18:51
openpowerbot[irc] <sadoon[m]1> Time for a real test, linux.18:59
openpowerbot[irc] <sadoon[m]1> Umm WOW I can already tell it's a lot faster than last time19:00
openpowerbot[irc] <sadoon[m]1> timing it so I can see the measured difference19:00
*** octavius <octavius!> has joined #libre-soc19:43
octavius> is there a way to stop the hello world simulation as soon as it is completed?19:54
octaviusSadoon please have a look at the hello world C code on lines 24-29:;a=blob;f=hello_world/hello_world.c;h=0f08631fe4779486ff78e9fc0ffec500d8a489b8;hb=refs/heads/verilator_trace#l2419:54
octaviusthis can be comment out to end the code early, however the verilator sim will only stop when 'Verilated::gotFinish()' method returns true (see line 295):;a=blob;f=verilator/microwatt-verilator.cpp;h=37540cc37519ea45a52fc8e4960966e1336ac16d;hb=refs/heads/verilator_trace#l29519:54
octaviusI'm not sure how to trigger this condition (other than Ctrl+C), so you'll need to do some reading on the documentation.19:54
octaviusThis might be of use:
openpowerbot[irc] <sadoon[m]1> awesome, noted19:54
octaviusNow I'm done, have a good night/day chaps!19:54
openpowerbot[irc] <sadoon[m]1> was gonna look at the code after I finish two things at hand, one of which is testing linux19:54
openpowerbot[irc] <sadoon[m]1> Night!19:55
octaviusGood luck :)19:55
openpowerbot[irc] <sadoon[m]1> very pleased with the performance so far but the numbers will tell the full story when I have them19:55
openpowerbot[irc] <sadoon[m]1> thanks19:55
openpowerbot[irc] <sadoon[m]1> :)19:55
*** octavius <octavius!> has quit IRC19:56
openpowerbot[irc] <sadoon[m]1> This is flipping awesome20:23
openpowerbot[irc] <sadoon[m]1> 1h33m down from 1h50m to boot linux in microwatt verilator20:23
openpowerbot[irc] <sadoon[m]1> that is not insignificant if I say so myself20:24
openpowerbot[irc] <sadoon[m]1> So about 14% improvement20:25
ghostmansd[pc]Hi folks, good news on standalone generated disassembler!20:27
openpowerbot[irc] <sadoon[m]1> yay more good news :D20:27
openpowerbot[irc] <programmerjake> looks nice!20:28
openpowerbot[irc] <sadoon[m]1> Sorry guys, I was horribly mistaken, it's actually faster than I said!20:29
openpowerbot[irc] <sadoon[m]1> It's actually 1h24m not 1h33m, that makes it 25% faster20:29
openpowerbot[irc] <programmerjake> nice!20:29
openpowerbot[irc] <sadoon[m]1> I'll push the changes this weekend but they need to be cleaned up as they are x86 specific20:30
openpowerbot[irc] <sadoon[m]1> -mcpu for powerpc, -march for x86 and co, eh20:30
openpowerbot[irc] <sadoon[m]1> The best part is that the gains are linearly consistent with the hello world example 12 vs 9 seconds, again 25%20:31
openpowerbot[irc] <sadoon[m]1> I think my emails are not reaching some of you, aaghh20:35
openpowerbot[irc] <sadoon[m]1> Might switch to protonmail after all20:35
openpowerbot[irc] <sadoon[m]1> I'm sorry to have to inform you that your message could not20:36
openpowerbot[irc] <sadoon[m]1> be delivered to one or more recipients. It's attached below.20:36
openpowerbot[irc] <sadoon[m]1> Is the message I'm getting from my server20:36
markos_sadoon, could you run it with THREADS > 1 and do a perf top -p <pid> of verilator?20:40
markos_and say what the top functions are?20:41
openpowerbot[irc] <sadoon[m]1> I already have threads set to 3 because after a LOT of testing it is definitely that fastest20:41
openpowerbot[irc] <sadoon[m]1> I'll do that in the weekend as well20:41
openpowerbot[irc] <sadoon[m]1> Or do you mean just run it for a bit and see?20:41
markos_yes, just a few seconds will suffice20:42
ghostmansd[pc] the suggested directions on C generated assembler and disassembler20:42
openpowerbot[irc] <sadoon[m]1> Ah one sec then20:42
ghostmansd[pc]Do we have a meeting today?20:42
markos_well, it's still slow, in my case, I saw 85% wasted in just 3 functions for cpu synchronization20:42
markos_I'm skipping today, too many meetings these past days, I have some work to do20:42
ghostmansd[pc]Sorry I'm typing short, all family's asleep and since new kid entered, I have so little time20:43
ghostmansd[pc]markos_, OK, have rest :-)20:43
ghostmansd[pc]I had an idea to skip the meeting too, but I'm so thrilled with the code generator that I cannot resist participating :-)20:44
ghostmansd[pc]I'll be muted again though20:44
openpowerbot[irc] <sadoon[m]1> Same :)20:44
openpowerbot[irc] <sadoon[m]1> Same usual link for Wednesday meetings right?20:45
ghostmansd[pc]yep, as usual20:45
ghostmansd[pc]IIRC Luke asked not to share this link here20:46
ghostmansd[pc]sadoon[m]1, if you want, I can send the link20:46
openpowerbot[irc] <sadoon[m]1> Yes I do have it20:46
openpowerbot[irc] <sadoon[m]1> thanks20:46
ghostmansd[pc]Ah OK :-)20:46
openpowerbot[irc] <sadoon[m]1> It has not yet started though20:47
ghostmansd[pc]yep, we need a moderator20:47
ghostmansd[pc]the meeting is configured so that it cannot be started w/o the moderator20:47
openpowerbot[irc] <sadoon[m]1> Ok markos so it's 31% on VlWorkerThread::dequeWork , 12.32% on VlMTaskVertex::waitUntilUpstreamDone , and 7% on Vmicrowatt::_combo__TOP__14720:50
openpowerbot[irc] <sadoon[m]1> markos_ ^20:50
markos_ok, much better than before, still a lot on dequeWork, 31% is a lot for just synchronization, but at least it's good to know that it can be improved20:52
openpowerbot[irc] <sadoon[m]1> Depends on how many threads you were using yourself though keep in mind20:53
openpowerbot[irc] <sadoon[m]1> It doesn't look like we're having a meeting today or?20:53
markos_no it doesn't matter, it's the same regardless if I was using 3 or 10 threads, it was always 80-85% for me20:54
openpowerbot[irc] <sadoon[m]1> Oh, that is strange indeed20:54
openpowerbot[irc] <sadoon[m]1> Let me attempt without the changes I made20:54
markos_yeah, it's in the class description, they do acknowledge that it's a bad implementation20:54
openpowerbot[irc] <sadoon[m]1> Oh that's weird20:58
openpowerbot[irc] <sadoon[m]1> Ah, forgot to change the threads value nvm20:58
openpowerbot[irc] <sadoon[m]1> now it's 28%, 12%, and 7% respectively20:59
openpowerbot[irc] <sadoon[m]1> going up to 29 and increasing so say they're equivalent21:00
openpowerbot[irc] <sadoon[m]1> I don't think my changes affected it21:00
openpowerbot[irc] <sadoon[m]1> Which machine are you running this on?21:00
openpowerbot[irc] <programmerjake> meeting time!21:00
openpowerbot[irc] <sadoon[m]1> Still won't let me in programmerjake  , can you get in?21:01
openpowerbot[irc] <sadoon[m]1> nvm in21:02
openpowerbot[irc] <programmerjake> yes, try again?21:02
markos_xeon gold 623021:02
markos_well, a VM on it at any rate21:02
openpowerbot[irc] <sadoon[m]1> I'll attempt a vm to see if that has anything to do with it, but later :)21:03
*** leah <leah!~leah@libreboot/developer/leah> has quit IRC21:39
*** leah <leah!~leah@libreboot/developer/leah> has joined #libre-soc21:40
*** gnucode <gnucode!~gnucode@user/jab> has joined #libre-soc21:48
*** psydroid <psydroid!~psydroid@user/psydroid> has quit IRC22:25
*** gnucode <gnucode!~gnucode@user/jab> has quit IRC23:31
*** gnucode <gnucode!~gnucode@user/jab> has joined #libre-soc23:31

Generated by 2.17.1 by Marius Gedminas - find it at!