Veera[m] | lkcl: Hi, regarding (Santhosh) and coriolis2: Query: can coriolis2 setup run on 8GB RAM laptop? Can PPC64EL Talos be used for setup? I saws coriolis2 page; it uses X Display - so perhaps won't work under ssh(Talos)? | 06:19 |
---|---|---|
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has quit IRC | 06:35 | |
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has joined #libre-soc | 06:35 | |
programmerjake | i don't know about just setup, but iirc coriolis2 needs a lot more ram if you want to use it on ls180, in the range of 32-64gb | 06:43 |
programmerjake | also, you can forward X through ssh | 06:44 |
programmerjake | if it needs some local stuff, maybe use xnest on the talos and forward the xnest through ssh to your computer and have coriolis connect to xnest | 06:45 |
programmerjake | try just ssh first, xnest will likely be complex to setup | 06:46 |
programmerjake | https://unix.stackexchange.com/questions/12755/how-to-forward-x-over-ssh-to-run-graphics-applications-remotely/12772#12772 | 06:49 |
Veera[m] | programmerjake: Ah 32-64GB!!. I will try X forwarding through ssh! | 06:50 |
Veera[m] | Thanks for info! | 06:50 |
programmerjake | yw | 06:51 |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@broadband-188-32-220-156.ip.moscow.rt.ru> has quit IRC | 09:16 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@176.59.55.169> has joined #libre-soc | 09:16 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@176.59.55.169> has quit IRC | 11:57 | |
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@broadband-188-32-220-156.ip.moscow.rt.ru> has joined #libre-soc | 11:57 | |
alethkit | How difficult would it be to port the simple-v specification to risc-v? Most of the toolchains I'm intending to use don't seem to take OpenPOWER into account. (I only need to port it by myself for testing purposes) | 14:10 |
ghostmansd|2 | lkcl, what should be the rationale for generating instruction with dot (Rc'ed one)? | 16:37 |
*** ghostmansd|2 is now known as ghostmansd | 16:37 | |
ghostmansd | I have the following code now: | 16:38 |
ghostmansd | names = tuple(ppc.names) | 16:38 |
ghostmansd | if ppc.rc is _RC.ONE: names = tuple(map(lambda name: f"{name}.", names)) | 16:38 |
ghostmansd | elif ppc.rc is _RC.RC: names += tuple(map(lambda name: f"{name}.", names)) | 16:38 |
ghostmansd | Is it correct? | 16:38 |
ghostmansd | Doesn't look like this... I think that RC.ONE should not replace names. | 16:39 |
ghostmansd | And only if instruction is marked with RC.RC we should add its version with dot. | 16:40 |
ghostmansd | And then we would check the exact Rc field position via fields.text. | 16:41 |
lkcl | let me put it another way: you _shouldn't_ be using the csv column RC.ONE/RC, should instead be using the information from the markdown files (because that comes directly from the actual spec) | 17:05 |
lkcl | but the csv column _should_ suffice, as you describe | 17:06 |
lkcl | alethkit, i did actually do an early version 2 years ago, the spike simulator should still be perfectly functional | 17:07 |
lkcl | https://git.libre-soc.org/?p=riscv-isa-sim.git;a=shortlog;h=refs/heads/sv | 17:07 |
lkcl | you obviously also need the corresponding tests as well https://git.libre-soc.org/?p=riscv-tests.git;a=tree;h=refs/heads/sv;hb=refs/heads/sv | 17:07 |
lkcl | but please bear in mind, the RISC-V Foundation Founders were so unbelievably rude and arrogant that there's just no way in seven hells we'll ever go back to it | 17:08 |
lkcl | plus, from a technical perspective, it looked like we seriously dodged a bullet. the best independent technical assessment i've seen is here: | 17:09 |
lkcl | https://news.ycombinator.com/item?id=24459314 | 17:09 |
lkcl | which should tell you everything you need to know. | 17:09 |
* lkcl back to checking csv files for ghostmansd.... | 17:10 | |
lkcl | stwcx - that's one of them. | 17:11 |
lkcl | openpower/isatables/minor_31.csv:0b0010010110,LDST,OP_STORE,RA_OR_ZERO,RB,RS,NONE,NONE,CR0,0,0,ZERO,0,is4B,0,0,0,1,0,0,ONE,0,1,stwcx,X | 17:11 |
lkcl | and sthcx | 17:11 |
lkcl | they're actually "stwcx." and "sthcx." | 17:11 |
lkcl | you *never* get just "stwcx" or "sthcx" | 17:12 |
lkcl | https://git.libre-soc.org/?p=openpower-isa.git;a=blob;f=openpower/isatables/minor_31.csv;h=5cd8494d3546711bdbdad1b6aa93264f4439b23e;hb=08088da82e27a632f7c4c606f1ed2ea3c64658ca#l189 | 17:12 |
lkcl | line 189 | 17:12 |
lkcl | err... err... where the frickin frick's the corresponding mdwn?? oink?? | 17:13 |
lkcl | greeeeat, i added them to the HDL but not the damn simulator. greeeeat. | 17:15 |
lkcl | ok so CSV files, RC column it is. | 17:15 |
lkcl | ghostmansd, payment date of 09aug2022 is listed for RFPs now. which to an EU account should be pretty much immediate. | 17:24 |
lkcl | if it is then do update the "paid=....." field. | 17:24 |
ghostmansd | Luke, I'll check for payments with the account owner, thanks! | 17:25 |
ghostmansd | About RC.ONE, so anything marked as RC.ONE is always with dot and there's no undotted version, right? | 17:26 |
lkcl | ghostmansd, correct. | 17:28 |
ghostmansd | OK thanks! | 17:28 |
* lkcl salutes :) | 17:28 | |
ghostmansd | I've updated the code locally, we're now posses the fields.text information, too... | 17:28 |
lkcl | w00t | 17:29 |
lkcl | small steps | 17:29 |
ghostmansd | ...and also I adopted the instruction generator (the one which generates from fields) to the form that it can pass split fields | 17:29 |
ghostmansd | like SX,S (28,6:10) | 17:29 |
ghostmansd | I've now returned to opcode property calculation :-) | 17:30 |
alethkit | lkcl: Ooof. I just need the ISA to make a PoC, since I assume porting should not be *that* hard. | 17:52 |
*** tplaten <tplaten!~isengaara@55d4b47b.access.ecotel.net> has joined #libre-soc | 18:06 | |
lkcl | ghostmansd, niiice | 18:11 |
lkcl | alethkit, that's what i'd already done. it was called Simple-V for RISC-V and i released version 0.6 | 18:12 |
lkcl | 3 years ago | 18:12 |
lkcl | Simple-V *as a concept* is applicable to any Scalar ISA | 18:12 |
lkcl | you could drop it on top of the scalar x86 instructions if you really felt so inclined | 18:13 |
lkcl | (and would end up with something a hell of a lot better than what Intel has done with AVX-NNN) | 18:13 |
lkcl | we thought RISC-V was going to be great, and a truly Open ISA, so were delighted to find it | 18:14 |
lkcl | and started investing a lot of time into the SV-for-RISC-V Spec | 18:14 |
lkcl | sufficient for me to write a full simulator | 18:14 |
lkcl | (links i gave you, above) | 18:14 |
lkcl | it works. | 18:14 |
lkcl | it actually works. | 18:14 |
lkcl | i wrote hundreds of unit tests. | 18:14 |
lkcl | they all work. | 18:14 |
lkcl | predication, element-width-overrides, everything. | 18:15 |
lkcl | even twin-predication works and has unit tests demonstrating that it works | 18:15 |
lkcl | now | 18:16 |
lkcl | when you say "assume it should not be hard"... :) | 18:16 |
lkcl | it's actually deceptively challenging. | 18:16 |
lkcl | to give you some idea: we converted to Power ISA *two years* ago and i am still completing adding of features to the Simple-V-for-Power-ISA Simulator | 18:17 |
lkcl | the development of the actual Specification itself is the majority of the work | 18:18 |
lkcl | (actually writing the words surrounding the bit-format) | 18:18 |
lkcl | but then that's no good if you haven't actually got a way to write assembler and actually run it. | 18:19 |
lkcl | consequently *in tandem* with writing the spec, i also had to write the Simulator *of* that spec. | 18:19 |
lkcl | then there are the unit tests | 18:19 |
lkcl | of which there are now several thousand | 18:19 |
lkcl | but yes | 18:19 |
lkcl | *if you have the spec* | 18:19 |
lkcl | then actually, writing the Simulator was extremely quick. | 18:20 |
lkcl | i think based on spike i had the first Simple-V instructions executing in a loop in under 8 days | 18:20 |
lkcl | https://git.libre-soc.org/?p=riscv-isa-sim.git;a=shortlog;h=refs/heads/sv;pg=3 | 18:21 |
lkcl | you can see i started around 2018-09-24 | 18:22 |
lkcl | and the first unit test was 2018-10-01 | 18:24 |
lkcl | https://git.libre-soc.org/?p=riscv-tests.git;a=commitdiff;h=5a43c689b5440871297f7f49580677eb398d16f4 | 18:24 |
lkcl | so yes, a week | 18:24 |
lkcl | 200+ commits later i had everything as a POC up and running.... according to a spec that had taken several months to write. | 18:25 |
lkcl | the issue we had with the Power ISA was that there really was - still is - no suitable program-order-simulator that was "up-to-scratch" | 18:28 |
ghostmansd | It's interesting that addic and addic. have different major opcode. | 18:28 |
ghostmansd | Oops, sorry, didn't see there's another topic raised. | 18:29 |
ghostmansd | Please excuse me for interruption, had my chat scrolled. | 18:29 |
lkcl | i never knew that. that goes some way to explain why there is such major opcode pressure. | 18:29 |
lkcl | ghostmansd, no problem | 18:29 |
ghostmansd | 12,ALU,OP_ADD,RA,CONST_SI,NONE,RT,NONE,NONE,0,0,ZERO,1,NONE,0,0,0,0,0,0,NONE,0,0,addic,D, 13,ALU,OP_ADD,RA,CONST_SI,NONE,RT,NONE,CR0,0,0,ZERO,1,NONE,0,0,0,0,0,0,ONE,0,0,addic.,D,12,ALU,OP_ADD,RA,CONST_SI,NONE,RT,NONE,NONE,0,0,ZERO,1,NONE,0,0,0,0,0,0,NONE,0,0,addic,D, 13,ALU,OP_ADD,RA,CONST_SI,NONE,RT,NONE,CR0,0,0,ZERO,1,NONE,0,0,0,0,0,0,ONE,0,0,addic.,D,12,ALU,OP_ADD,RA,CONST_SI,NONE,RT,NONE,NONE,0,0,ZERO,1,NONE,0,0,0,0,0, | 18:29 |
ghostmansd | 0,NONE,0,0,addic,D, | 18:29 |
ghostmansd | 13,ALU,OP_ADD,RA,CONST_SI,NONE,RT,NONE,CR0,0,0,ZERO,1,NONE,0,0,0,0,0,0,ONE,0,0,addic.,D, | 18:29 |
lkcl | i remember looking at the major opcodes with some dismay and going "holy cow that's a hell of a lot of major opcodes allocated to immediate instructions" | 18:30 |
lkcl | but they obviously wanted 16-bit immediates not 15-bit immediates | 18:30 |
tplaten | I'm now having a look at simsoc.fst, it isn't working. Only the clock signals are valid. I expected that to be this way | 18:31 |
lkcl | tplaten, rrright, there's a trick to that | 18:33 |
lkcl | use fst2vcd to convert it | 18:33 |
lkcl | before loading with gtkwave | 18:33 |
lkcl | the signals will "by inexplicable magic" correctly appear | 18:33 |
lkcl | it is a persistent long-standing bug in gtkwave | 18:34 |
lkcl | ghostmansd, do be careful not to drop too many lines at once into libera.chat! it may end up rate-limiting you :) | 18:35 |
* lkcl afk for a while | 18:36 | |
*** tplaten <tplaten!~isengaara@55d4b47b.access.ecotel.net> has quit IRC | 18:42 | |
*** tplaten <tplaten!~isengaara@55d4b47b.access.ecotel.net> has joined #libre-soc | 18:43 | |
tplaten | simsoc.vcd is really large, about 18.9 GiB. By contrast simsoc.fst is only 144.5 MiB. | 18:57 |
tplaten | the dram_cke goes high at about one 1 us, the dram_ck is valid from there on. But nothing else happens there | 18:59 |
programmerjake | lkcl: rust foundation survey on what trademark policy everyone wants: https://foundation.rust-lang.org/news/2022-08-09-trademark-policy-review-and-survey/ | 19:03 |
tplaten | I'll be afk for some time, I'll come back later | 19:04 |
lkcl | tplaten, yes. sounds about right. | 19:19 |
lkcl | now if you run vcd2fst it will shrink again in size but will have "fixed" the bug in gtkwave | 19:20 |
tplaten | so with future versions of gtkwave fst2vst won't be needed anymore, once it is fixed upstream | 19:30 |
lkcl | tplaten, let's hope so | 19:31 |
lkcl | programmerjake, can you take a look at the occurrences where you've repeated arguments in unit tests and replace them with for-loops around self.subTest("some_name_%d" % idx)? | 19:32 |
lkcl | https://git.libre-soc.org/?p=soc.git;a=blob;f=src/soc/fu/div/experiment/test/test_goldschmidt_div_sqrt.py;h=bf999bd850237387120691f16bcda7eb308e21df;hb=HEAD#l247 | 19:32 |
lkcl | all of those can be replaced with "with self.subTest(....)" | 19:33 |
lkcl | if you look at i think test_caller.py or test_runner.py (which handles the results from add_cases) you'll see examples | 19:33 |
lkcl | parallelism of test infrastructure is not a priority | 19:33 |
lkcl | (and overheats my laptop so i can't risk using it) | 19:34 |
lkcl | but 200+ lines of identical code with only a function name change and a hard-coded parameter is a priority to clean up, it's what subTest is specifically designed for | 19:35 |
programmerjake | lkcl: lkcl: no, that's intentional because it allows pytest to run the tests in parallel taking <1/10 as much time on my pc | 19:37 |
programmerjake | if it overheats your laptop, just use pytest -n 2 rather than -n 8 or -n auto | 19:38 |
programmerjake | nose should have a similar option | 19:38 |
programmerjake | or, better yet, just put your laptop on a counter or table and let it get hot, intel cpus are designed to be able to run at 99C for extended periods thermal throttling | 19:40 |
programmerjake | saves a bunch of time | 19:41 |
programmerjake | also takes around 1/4th to 1/8th as much time on our build server, since it is an 8-core amd fx processor | 19:43 |
programmerjake | if all the repeated tests are anything more than just calling a common test function with different arguments, let me know -- they should be utterly trivial so you can just scroll past them | 19:45 |
programmerjake | <1/10 as much time is *very* significant when it takes 5-10min to run rather than having to wait >1hr | 19:48 |
programmerjake | makes debugging much easier | 19:48 |
lkcl | programmerjake, there has to be a way to deal with that. it's totally ridiculous to have 200+ lines of repeated code with parameters like that | 20:04 |
lkcl | (ridiculous => "not ok") | 20:05 |
lkcl | and undocumented | 20:05 |
programmerjake | i can work on documenting it better, but I really do want the individual function definitions rather than a for loop generating functions, since my ide allows quickly running and (more importantly) debugging unit tests only if the test entry is a method directly defined in the source code | 20:09 |
programmerjake | debugging in the ide is waay nicer than trying to use pdb, since it highlights which line its currently on in the editor, as well as allowing setting breakpoints in the editor and a bunch of other useful stuff | 20:10 |
lkcl | it *may* be the case that subTest does actually run in parallel | 20:11 |
lkcl | then you can add a special file (committed or not committed) which passes the arguments necessary to run only that which you need at a given time | 20:11 |
programmerjake | it does not, all it does is mark subsections and catch assertion exceptions | 20:11 |
lkcl | i comment-out unit tests all the time (:%s/def test_/def tst_/g) | 20:12 |
lkcl | if you had done this in one place only i wouldn't pick up on it | 20:12 |
lkcl | it's that you've put it in *dozens* of places, hundreds of lines of code with hard-coded parameters | 20:12 |
lkcl | we have to find a better (cleaner) way | 20:13 |
lkcl | even if it means doing batches - QTY 8 tests performing QTY N/8 subTests | 20:13 |
programmerjake | if you want to run a specific unit test, you can use unittest's -k option | 20:14 |
lkcl | or work out how to overload subTest to perform parallelism - something | 20:14 |
lkcl | i never bother with that, it pisses me off to type manually down to some insane depth of class bullshit | 20:14 |
lkcl | it irritated me no end to mis-type the name of the test and/or the class | 20:14 |
lkcl | so i quickly learned instead just to do ":%s/def test_/def tst_/g" | 20:15 |
programmerjake | but i do get an appreciable speedup beyond 8 tests...i have a 24 thread cpu after all... | 20:15 |
lkcl | which i usually have in the command-history | 20:15 |
lkcl | ok - let's leave it for now and over time work out how to solve it | 20:16 |
lkcl | there must be a way, even if it involves dynamic-creation of functions or something mad | 20:16 |
lkcl | needs more thought | 20:17 |
programmerjake | i copy/paste test names into my terminal if i need that....though i often just click the run test button (kinda button) that shows up right next to the test function's definition in my ide | 20:17 |
lkcl | btw the reason i raise it is because i posted the goldschmidtt link on comp.arch | 20:17 |
lkcl | https://groups.google.com/g/comp.arch/c/aZQvbjqf2z8/m/-3sjYEJcCAAJ | 20:17 |
lkcl | and i _then_ looked at the unit tests and was embarrassed to see more lines of repeated function calls than actual useful test code | 20:18 |
programmerjake | also -k allows just using part of a name and it runs all matching tests | 20:18 |
lkcl | yeah - that's exactly the kind of thing that annoys me about -k options | 20:19 |
lkcl | remember, typing gets extremely painful for me, very frequently. | 20:19 |
lkcl | (RSI) | 20:19 |
lkcl | btw we need to put some more RFPs in for you, and re-do some of the ones emailed last month | 20:20 |
lkcl | they won't get looked at: NLnet is now insanely busy | 20:20 |
lkcl | i'll need to send you the "secret" URLs, for goodness sake don't publish them anywhere online or send them to anyone else | 20:21 |
programmerjake | k, can you send me them in a private email? i may get around to it today, but maybe it'll have to wait till later...i need more sleep before the meeting... | 20:24 |
*** tplaten <tplaten!~isengaara@55d4b47b.access.ecotel.net> has quit IRC | 20:39 | |
ghostmansd | lkcl, good news: FSF finally signed the docs | 21:04 |
programmerjake | yay! | 21:09 |
ghostmansd | took a fricking eternity | 21:10 |
ghostmansd | not surprising considering the political situation but still annoying | 21:11 |
ghostmansd | lkcl, another good news: the payment arrived, I updated 849 and 884 | 21:22 |
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has quit IRC | 23:25 | |
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has joined #libre-soc | 23:27 | |
programmerjake | lkcl, idk if you noticed, maybe fill out the survey: https://foundation.rust-lang.org/news/2022-08-09-trademark-policy-review-and-survey/ | 23:28 |
programmerjake | survey on what you want the trademark policy to be | 23:28 |
programmerjake | ghostmansd: attn is defined in spec v3.1b appendix c reserved instructions page 1369: | 23:42 |
programmerjake | 256 Service Processor “Attention” | 23:42 |
Generated by irclog2html.py 2.17.1 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!