freenode/#clasp - IRC Chatlog
Search
15:13:58
drmeister
bike: When you first got the inlining to work - it was really, really slow. We ran it with dtrace profiling and it showed a problem that you were almost immediately able to fix. Do you recall what that was?
15:25:00
drmeister
Counting the number of times each progenitor HIR instruction gets cloned (with the two hash tables) will show the pattern of how inlining is applied (inside-out vs outside-in) but we can still learn a lot from the total number of clones made/number of progenitor instructions - right?
15:26:09
drmeister
Because the best approach would have "total # clones"/"# progenitor" somewhere near 1.0 - right?
15:29:03
drmeister
I woke up this morning thinking it would be neat to generate a HIR graph of the progenitor instructions where next to each progenitor instruction with the number of times each progenitor was cloned in the final result was displayed.
15:30:20
drmeister
beach: I was further thinking that your code for rendering HIR graphs might benefit from accepting a hash-table of instructions mapped to additional info to add to each instruction label. Then we could annotate the HIR graphs with all sorts of useful information.
15:32:14
beach
Uh oh. House guests and (admittedly small) family are back from tourism. I need to go. I might be back soon.
15:34:13
drmeister
I'm really interested in getting it working - or getting something like it working in the jupyterlab interface.
15:36:23
Bike
"No applicable method for CONCRETE-SYNTAX-TREE:CONSP with arguments of types STANDARD-GENERIC-FUNCTION." that's a new one
16:03:50
shiho
drmeister: I got the error "Condition of type: FILE-ERROR Filesystem error with pathname "quicklisp:setup.lisp"." Do I need to pull new quicklisp?
16:20:05
drmeister
Ah - I made some changes to where cando looks for the quicklisp directory - your old machine doesn't have /opt/clasp -- either you should move completely to the laptop or we have to set up the iMac to work with the new development environment
16:23:12
Bike
should be pretty easy to set up the logical pathname host to point at ~/quicklisp, right?
16:25:03
drmeister
shiho: Can you evaluate (probe-file "quicklisp:") on the iMac and tell me what it says?
16:32:00
drmeister
Ok - next I'll tell you that the development on the new machine is broken. Yay! Welcome to my shitty Python world.
17:09:32
drmeister
https://s3.us-east-2.amazonaws.com/clasp-cando/deploy/Darwin-base-opt-clasp.tar.gz
19:01:48
Shinmera
Clasp is going to be a bit more complicated to implement since MPS needs to be supported
19:15:41
drmeister
stassats: We are a clasp shop here - if you can't do it in clasp - it's not worth doing :-)
19:16:32
drmeister
I'm probably going to have to do the static-vector myself so that it works properly in boehm and mps.
19:18:14
drmeister
Yeah - we can't use the ECL code - because it relies on the Boehm GC not moving things around in memory.
19:19:14
drmeister
Well - not so differently. Clasp's arrays are implemented the way that sbcl implements them.
19:23:53
Shinmera
Pretty much. https://github.com/sionescu/static-vectors/blob/master/src/pkgdcl.lisp#L12-L26
19:26:53
Shinmera
The answer is as I said -- anything for which upgraded-array-element-type does not return T.
19:30:03
drmeister
It makes a huge difference in how the implementation manages it - that's why I'm asking.
19:30:06
Bike
So you have to make a static vector with type single-float and hope that's the cffi :float type? i mean, it probably is
19:30:15
Shinmera
The point is just that if the element-type is T, then you can't really portably know what's in there, so there's no point trying to share it with C
19:31:52
frgo
Looking at impl-allegro.lisp we should be able to more or less translate literally to corresponding calls as in fli.lisp
19:32:07
drmeister
Sometimes these lisp definitions are hard for me to parse into terms I understand as an implementor. It's about getting from "anything for which upgraded-array-element-type does not return T" to "you can use malloc to allocate the memory".
19:32:59
Shinmera
drmeister: I don't see how malloc comes into it? You create a lisp array like normal, provide a way to get a pointer to its data part, and then pin it in the GC.
19:34:16
drmeister
"then pin it in the GC" is easy with Boehm - a lot of work with MPS. So I can't put Common Lisp pointers into the vector then I'd rather use an allocator that doesn't move memory.
19:35:10
Shinmera
Should be easy with MPS too since you can just forbid arrays with pointers (since they'd be element-type T anyway)
19:36:51
kpoeck
Woudnât it be simpler to say its an array with a chunk of bytes that are not moved from the lisp gc
19:37:14
Shinmera
Has nothing to do with it being a simple-vector, but the library does not promise GC of static-arrays.
19:37:19
Bike
kpoeck: well the elements are still supposed to be accessible from lisp, if i understand correctly
19:39:28
Shinmera
static-vectors allows me to, for instance, fill an array with vertex data from lisp, then just pass that on to OpenGL to upload to the GPU without having to first copy it to C memory.
19:45:18
Shinmera
while we're on the talk of compatibility libraries, aside from dissect I have another for additional float features. Does clasp offer constants for the various float infinities, testing for float-nan, and masking the float traps/signals?
19:47:32
kpoeck
Drmeister: the franz doc for static arrays in gc.htm seems to be written more from a implementers perspective, perhaps worth a read
19:56:15
Shinmera
Here's an issue to track it more easily. https://github.com/clasp-developers/clasp/issues/583