freenode/#clasp - IRC Chatlog
Search
11:07:38
Colleen
selwyn: drmeister said 22 hours, 59 minutes ago: Check the log above this notification - I describe my attempt to use the gdb/jit interface.
11:11:01
drmeister
If you hook gdb into a running clasp, gdb is supposed to put a breakpoint on this function:
11:11:15
drmeister
https://github.com/clasp-developers/clasp/blob/dev/src/llvmo/llvmoExpose.cc#L3475
11:11:59
drmeister
I tried examining memory but I don't see a breakpoint - but gdb is probably putting it on only when we aren't looking at it.
11:13:17
drmeister
Huh - something just occurred to me. I wonder if after the break gdb continues through the function. We could put some code in there that reads the first bytes of the function and prints them out. At that point the breakpoint/interrupt must be in place.
11:14:14
drmeister
I'd like to know if gdb is actually being invoked when that function gets entered.
11:34:38
dmiles
i was lookjng that this https://drmeister.wordpress.com/2015/07/30/timing-data-comparing-cclasp-to-c-sbcl-and-python/
11:36:04
dmiles
well i am sure i could always compile my lisp code if this is a concern to me.. that is teh differnce between interpred vs compiled?
12:08:44
selwyn
if you are interested in more recent benchmarks: https://github.com/clasp-developers/clasp/wiki/Benchmark-Results the rightmost column corresponds to fairly recent clasp
12:11:40
selwyn
scroll all the way to the right of the table - there are some columns which you may not be seeing
12:15:44
selwyn
these are subject to change fairly often though. you might like to follow the instructions and run cl-bench yourself
13:13:50
drmeister
dmiles: Hi - the performance of Clasp is about 0.5x to 0.1x of SBCL. We know what the bottlenecks are and there is no reason why we can't get parity with SBCL once we start eliminating useless type checks and code branches. Clasp is doing lots of inlining now and that is how you get performance.
13:22:36
dmiles
Example of inlining at the Lisp AST.. http://dwim.hu/darcsweb/darcsweb.cgi?r=HEAD%20hu.dwim.partial-eval;a=headblob;f=/source/partial-eval.lisp
13:22:48
drmeister
Three kinds of inlining. The lisp AST, we have inlining in the HIR and llvm does inlining.
13:23:31
drmeister
Clasp uses link time optimization in a limited way now - and will support it better in the future.
13:24:42
drmeister
Yes - it's all graphs of nodes and edges. It's all Robert Strand's Cleavir compiler.
13:24:54
dmiles
Well i9 mean is the HIR inliner written mostly in lisp as transformations of someting like cones?
13:27:59
dmiles
(doing otherwise would be unnatural ! .. but other languages do unnatural things like build whole wierd class structure arround IRs)
13:29:38
dmiles
So i assume pretty much the answer is pretty much Yes.. the only reason it would be "No" is if you built LLVM isntead of HIR
13:32:09
dmiles
even if the HIR stage is 1-to-1 with LLVM .. you still have a place you can done brilliant things before making LLVM do the rest
13:34:09
drmeister
Cleavir uses Common Lisp classes for all of the AST nodes and HIR classes and makes extensive use of generic function dispatch.
13:36:03
drmeister
dmiles: Clasp has two compilers, the production compiler is Cleavir and it has a full AST and HIR representation. The bootstrapping compiler goes straight from s-expressions to llvm-ir - but it's only used for bootstrapping and generating discriminating functions for generic function dispatch.
13:38:05
drmeister
The lowering of HIR is one HIR to several llvm-ir instructions and then llvm optimizations go to town on optimizing the llvm-ir.
13:38:48
dmiles
Ah, i see, that is pretty awesome (that you didnt settle with just the one compiler)
13:40:40
drmeister
I have to warn you - the speed of the overall compilation is still a big issue. llvm is a slow compiler and currently dominates with between 50% and 90% of compilation time spent in llvm. We have gone parallel in the build system (fork and threads) to bring the build time down.
13:43:50
dmiles
people tend to forgive compiler time overheads like that :) .. You cant realy fix that
13:45:57
drmeister
Right - my concern is the performance of the final code and that we maintain interoperability with C++ and that the compiler be understandable so that we can get more people involved in improving the compiler.
13:53:17
dmiles
i have a bunch of closed source lisp code that got translated to java that i am just now translating to c++.. i wont be able to fix _that_ code but it'll be nice to use Clasp to host that C++
13:55:29
dmiles
so when users are writting expansion modules (expansions to CYC) they can write in common lisp that will be called by CYC
13:57:53
dmiles
It is a bit like STELLA, if you've heard of it (STELLA is a [common-]lisp to java/c++ translator) but it wont do as good as Clasp in think in many cases
14:04:35
drmeister
We can reduce the overhead to the absolute minimum. We use C++ exceptions handling to unwind the CL stack. So C++ stack frames interleave with CL frames and RAII works fine.
14:05:46
drmeister
selwyn: I cloned the gdb source code. I found the jit interface. We can instrument it.
14:26:44
drmeister
selwyn: No problem - I'm just debriefing you on what I've been up to in this area.
14:27:16
drmeister
Instrument as in stick printf statements into the gdb code to see if it's triggering when we expect it to trigger.
14:46:19
drmeister
No - it doesn't look like it's a command line option - it looks like it's a gdb command.