freenode/#clasp - IRC Chatlog
Search
11:03:46
selwyn
i built in 1h51 just now - basically no change. i wonder if i did something wrong? asdf did take a while
11:06:30
drmeister
I don't know - timing can be tricky. The flame graphs show improvements in inlining.
11:07:13
drmeister
Do you mean what is the difference between the CST compiler and the AST compiler?
11:08:26
drmeister
A couple of things - (1) the CST compiler tracks source locations for every expression. Source information is propagated all the way from where the source is read down to the object files.
11:09:49
drmeister
(2) The CST compiler fixes a subtle bug in the AST compiler that I still don't really appreciate - I think it's with closed over environments.
11:10:26
drmeister
In fixing that bug it generates code where LET statements are expanded into calls to functions. This slows down the generated code significantly (by a factor of 2 or so).
11:11:07
drmeister
The solution is to do a lot more inlining at the HIR level to improve the generated code performance.
11:11:24
drmeister
That inlining code is what we are dealing with now - it slows the compiler down a lot.
11:12:31
drmeister
So we crawl through this valley of slowness to come out the other side with a better compiler.
11:13:02
drmeister
The next big thing to do is value numbering, type inference and removal of dead code.
11:14:13
selwyn
right. i have to go now, i will read the logs and be back in a couple of hours. thanks for explanation
12:18:51
drmeister
I changed the file that I compile-file for this flame graph - I switched to format.lsp - it has a really long pause at the end when it is compiling the format compiler-macr
12:22:42
drmeister
I have a suggestion: (1) We temporarily add a slot to instructions that stores a 'visited' mark and write a new version of of map-instructions-xxxx that uses the 'visited' mark rather than a hash table to keep track of what instructions have been visited. I believe that this will cut inlining time by quite a lot.
12:23:09
drmeister
(2) We work on value numbering, type inference and removing useless code paths to tighten up the code.
15:53:29
kpoeck
karlosz: Changing to new sicl - with your patches- reduced build time for clasp - after wiping build - from Compilation finished in 5:24:51 to Compilation finished in 4:03:12, quite an improvement
16:56:16
karlosz
hello everyone. I have some more inlining improvements here: https://github.com/robert-strandh/SICL/pull/131
16:56:50
karlosz
i know you guys just did another rebase, but i observed another 2-3 hours improvement with these patches
16:57:12
Bike
the problem i had with set-predecessors is that we could inline a function that doesn't return, and that will cut off whatever the call dominates
16:58:07
karlosz
could you maybe take a look? i did some instrumenting and thought i got rid of most of that
17:00:18
Bike
well it's basically the same issue. we don't know what instructions we have to unhook from predecessors or definers/users
17:30:27
selwyn
drmeister: i'll find out the hard way - building with https://github.com/robert-strandh/SICL/pull/131 now