code logs -> 2018 -> Sat, 14 Apr 2018< code.20180413.log - code.20180415.log >
--- 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
code logs -> 2018 -> Sat, 14 Apr 2018< code.20180413.log - code.20180415.log >

[ Latest log file ]