--- Log opened Sat Apr 14 00:00:31 2018 |
00:07 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
00:14 | | bowlich [bowlich@Nightstar-su4ao3.kynda.net] has quit [Connection closed] |
00:35 | | himi [sjjf@Nightstar-v37cpe.internode.on.net] has joined #code |
00:35 | | mode/#code [+o himi] by ChanServ |
00:49 | | celticminstrel [celticminst@Nightstar-m1ak9t.dsl.bell.ca] has joined #code |
00:49 | | mode/#code [+o celticminstrel] by ChanServ |
00:55 | | celticminstrel [celticminst@Nightstar-m1ak9t.dsl.bell.ca] has quit [[NS] Quit: KABOOM! It seems that I have exploded. Please wait while I reinstall the universe.] |
00:59 | | celticminstrel [celticminst@Nightstar-m1ak9t.dsl.bell.ca] has joined #code |
00:59 | | mode/#code [+o celticminstrel] by ChanServ |
01:03 | | Derakon[AFK] is now known as Derakon |
03:06 | | Degi [Degi@Nightstar-iuc7cp.dyn.telefonica.de] has quit [Connection closed] |
04:16 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
04:16 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
05:14 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
05:20 | | Vorntastic [Vorn@Nightstar-ebs18n.sub-174-210-8.myvzw.com] has joined #code |
05:34 | <&McMartin> | ToxicFrog: That link re: TRON also gives me a nice framework upon which to hang my tale of optimizing the Genesis CCA |
05:49 | | Derakon is now known as Derakon[AFK] |
06:12 | | celticminstrel is now known as celmin|sleep |
06:15 | | Jessikat [Jessikat@Nightstar-bt5k4h.81.in-addr.arpa] has quit [[NS] Quit: Leaving] |
07:02 | <&[R]> | $ file /usr/bin/node |
07:02 | <&[R]> | /usr/bin/node: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=c68b6c9d392a44d44ae4c83580cf76b641c228c1, stripped |
07:02 | <&[R]> | $ ldd /usr/bin/node |
07:02 | <&[R]> | not a dynamic executable |
07:02 | <&[R]> | way |
07:02 | <&[R]> | wat* |
07:14 | | * McMartin gets around to timing his code. |
07:14 | <&McMartin> | First implementation: 558 frames per generation. |
07:15 | <&McMartin> | Fix idiotic bug wasting like 80% of the CPU time: 124 frames per generation. |
07:15 | <&McMartin> | First optimization pass, removing safety checks from the common case where they're provably redundant: 40 frames per generation, 1.5 FPS. |
07:15 | <&McMartin> | Second optimization pass, execute some constant hoisting and strength reduction optimizations on that common case even harder: 30 frames per generation, 2 FPS. |
07:15 | <&McMartin> | I think that's as good as it's gonna get. |
07:16 | <&McMartin> | Computing 16,384 new states on a CPU that can't quite manage one MIPS is always going to sting. |
07:18 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
07:18 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
07:22 | | Vornotron [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
07:22 | | mode/#code [+qo Vornotron Vornotron] by ChanServ |
07:23 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
07:28 | | Vornotron [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
07:30 | < Vorntastic> | BLAST PROCESSING can't save you now! |
07:32 | <&McMartin> | BLAST PROCESSING in fact was hindering it; the two frames in which BLAST PROCESSING is occurring the MC68000 is removed from the bus and is unable to execute instructions. |
07:33 | <&McMartin> | Anyway, yeah. 5x speedup from fixing a bonehead error that managed to make the computation run away from its bounds but without producing wrong answers or memory corruption of any kind |
07:33 | <&McMartin> | ... which is itself kind of awesome |
07:33 | <&McMartin> | And then 4x speedup from legit strength reduction and common-subexpression elimination optimizations like we learned in compilers class |
07:33 | <&McMartin> | I am well-pleased |
07:35 | <&McMartin> | Anyway, yeah |
07:35 | <&McMartin> | CISC, man |
07:35 | <&McMartin> | I finally got around to checking the separate publication that lists chip timings and that was very disheartening |
07:35 | <&McMartin> | Because it turns out I only get about 15,000 instructions per frame even at 8 MHz |
07:36 | <&McMartin> | And that's more than a bit of a bummer when the matrix you're updating has 16,384 cells |
07:36 | <&McMartin> | Also, this 20x speedup doubled the number of lines of code |
07:38 | < Vorntastic> | I didn't know the name hoisting, but it is so obvious that I don't remember ever needing to actually do it afterward |
07:39 | <&McMartin> | It usually ends up becoming retroactively obvious after you've done some other optimizations on the way in |
07:39 | <&McMartin> | My naive implementation was two 0-127 loops for row and column that computed an index for themselves and their neighbors in the four cardinal directions and then did checks based on those for what the next state must be |
07:40 | <&McMartin> | So the two main optimizations were (a) split that up into "edges" and "others, which don't need the bounds checks" |
07:41 | <&McMartin> | and (b) turn that "others" loop into a single loop that increments a pointer by some amount rather than recomputing based on a pair of scaled indices |
07:41 | <&McMartin> | Optimization (a) can, I suppose, be considered hoisting the checks out. |
07:42 | <&McMartin> | There's also something called "lambda lifting" that I'm not sure what it is, but I assume it's something where you have to ask compilers if they even lambda lift, bro |
07:43 | <&McMartin> | Ah, lambda lifting is getting rid of unnecessary closures and replacing them with normal functions. |
07:55 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
07:55 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
07:59 | < Vorntastic> | Neato |
07:59 | < Vorntastic> | Hello cat you have turned on my computer I see |
08:01 | <&McMartin> | Maddy says: REACH FOR THE POWER SWITCH |
08:01 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
08:02 | <&McMartin> | Oops, I have in fact misnamed one of the optimizations I did |
08:02 | <&McMartin> | I didn't really do common-subexp elimination beyond being careful about register usage |
08:02 | <&McMartin> | What I did was induction variable elimination |
08:03 | <&McMartin> | Also ahahaha |
08:03 | <&McMartin> | Remember when I was saying it was super-luxurious to have 16 nearly general purpose registers |
08:03 | <&McMartin> | Indeed, all this stuff I've gotten up to has drastically increased register pressure |
08:04 | <&McMartin> | So there's a different optimization where you do this stuff in reverse and recompute values as needed so you don't have to consult or spill stuff to memory |
08:04 | <&McMartin> | https://en.wikipedia.org/wiki/Rematerialization |
08:06 | < Vorntastic> | Right |
08:09 | < Vorntastic> | Huh. X64 has 16 registers |
08:09 | < Vorntastic> | 16 on a 16 bit cisc is nuts |
08:29 | <&McMartin> | x86_64 is truly general purpose though IIRC |
08:29 | <&McMartin> | This is 8 data registers and 8 address registers |
08:29 | <&McMartin> | Only address registers can be dereferenced, and only data registers can have math done on them or be used as indexes |
08:30 | < Vorntastic> | Well ok |
08:30 | <&McMartin> | And then the ABI is "everything but a0-a1/d0-d1 are callee-save, and a7 is the stack register and a6 is the link register maybe but I don't have to care?" |
08:32 | <&McMartin> | Oh right, also "return values go in d0 and function arguments are pushed on the stack right to left before the call like all civilized ABIs" |
08:33 | <&McMartin> | CCAstep uses d0-d6/a0-a3. It is not messing around. |
08:34 | | Kindamoody[zZz] is now known as Kindamoody |
08:38 | <&McMartin> | 54.3% of my poor Celeron's CPU is being spent emulating the Genesis's motorola running flat-out on this |
08:42 | < Vorntastic> | Oh I saw an interesting phenomenon today and I'm trying to figure out if it's real or not |
08:44 | < Vorntastic> | On the bus there's a text display made up of a grid of little LEDs. When text is scrolling from right to left, it appears to me (and to vash) that the text is slightly slanted to the left - that is, that the top is "ahead of" the bottom |
08:45 | <&McMartin> | That would be completely expected behavior if the refresh rate is really slow and it was doing a standard raster scan |
08:46 | <&McMartin> | That's exactly what graphical tearing is when you turn VSYNC off |
08:47 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
08:47 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
08:48 | < Vorntastic> | I found myself thinking that if the things were updated progressively that would happen, yes |
08:49 | < Vorntastic> | That basically the led driver updates lights just fast enough that it basically runs constantly |
08:53 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
08:54 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
08:54 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
09:00 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
09:02 | | Kindamoody is now known as Kindamoody|afk |
09:58 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
09:58 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
10:04 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
10:41 | | Jessikat [Jessikat@Nightstar-rbb9e4.dab.02.net] has joined #code |
10:47 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
10:47 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
10:53 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
11:35 | <@ErikMesoy> | "Yes I want to run Flash, yes I want to allow it this time, yes I want to run in whatever old compatibility mode is necessary, yes I know it's deprecated... still not working? okay, Internet Explorer it is." |
11:37 | <@TheWatcher> | Well, no, you don't _want_ to run Flash. No sane person does. But you might _need_ to~ |
11:52 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
11:52 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
11:58 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
12:41 | < Vorntastic> | I wish they'd made a standalone version of The Space Game |
12:42 | <&ToxicFrog> | The Space Game? |
12:44 | <@ErikMesoy> | https://www.kongregate.com/games/casualcollective/the-space-game ? |
12:53 | < Vorntastic> | That one yes |
12:53 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
12:53 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
12:59 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
13:15 | | Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has joined #code |
13:58 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
13:58 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
14:03 | | celmin|sleep is now known as celticminstrel |
14:04 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
14:42 | | Jessikat [Jessikat@Nightstar-rbb9e4.dab.02.net] has quit [Ping timeout: 121 seconds] |
14:58 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
14:58 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
15:04 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
15:44 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
15:44 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
16:19 | | Vornlicious [Vorn@Nightstar-dtsu8c.sub-97-33-192.myvzw.com] has joined #code |
16:20 | | Vornlicious [Vorn@Nightstar-dtsu8c.sub-97-33-192.myvzw.com] has quit [[NS] Quit: Bye] |
16:20 | | Vornlicious [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
16:22 | | Vorntastic [Vorn@Nightstar-ebs18n.sub-174-210-8.myvzw.com] has quit [Ping timeout: 121 seconds] |
19:00 | | Vornlicious [Vorn@Nightstar-1l3nul.res.rr.com] has quit [The TLS connection was non-properly terminated.] |
19:21 | | Degi [Degi@Nightstar-n8vm64.dyn.telefonica.de] has joined #code |
19:38 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
20:06 | <&McMartin> | https://www.twitch.tv/nothings2 has started more System Shock stuff, though it's still just setting up for now |
20:15 | | Kindamoody|afk is now known as Kindamoody |
20:20 | <&McMartin> | extern void dumb_hack_for_now(int x, int y); |
20:21 | <&McMartin> | You can tell this was once commercial code |
20:22 | < Emmy> | sounds familiar :P |
20:40 | <&McMartin> | // look, vainly i try to reuse code from uw2 and, amazingly, it works... wow |
21:02 | | Derakon[AFK] is now known as Derakon |
22:36 | <&McMartin> | DRUG drugs[NUM_DRUGZ] { |
23:02 | | celticminstrel [celticminst@Nightstar-m1ak9t.dsl.bell.ca] has quit [Connection closed] |
23:03 | | celticminstrel [celticminst@Nightstar-ichj2a.dsl.bell.ca] has joined #code |
23:03 | | mode/#code [+o celticminstrel] by ChanServ |
23:21 | | Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has quit [Connection closed] |
23:38 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has quit [Connection closed] |
23:55 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has joined #code |
23:55 | | mode/#code [+ao ToxicFrog ToxicFrog] by ChanServ |
--- Log closed Sun Apr 15 00:00:33 2018 |