freenode/#clasp - IRC Chatlog
Search
18:50:41
drmeister
It’s really important to remain calm while debugging. It would have been easy to panic with that one.
21:42:39
drmeister
Try loading magicl into clasp - it should work. Clasp is a pretty compliant common lisp at this point - and anything that doesn't work is a bug in Clasp that we need to fix.
21:43:16
selwyn
there are some implementation-dependent parts in magicl; only SBCL and CCL are supported upstream
21:45:04
selwyn
only a few changes need to be made here https://github.com/rigetti/magicl/blob/master/src/with-array-pointers.lisp .. magicl hangs on loading. i will sort this out later
21:48:03
drmeister
It doesn't look too bad - it needs support for array pointers, pinning objects in memory and floating point error trapping. The floating point error trapping is the only thing that gives me pause.
21:48:50
drmeister
For the floating point error stuff we could look at what ECL does and do that thing.
21:49:07
selwyn
i implemented the first two using core:static-vector-pointer. would this be the right tool for the job?
21:50:28
drmeister
It would work - but it looks to me like they wanted to use native vectors and then pin them temporarily while the foreign library works on them. That's easy to support - boehm doesn't move things and MPS doesn't move things when there is a pointer to the thing on the stack.
21:51:09
drmeister
But static vectors would work perfectly well - it's just when you have a lot of them they will fragment memory.
21:55:25
drmeister
What if I gave you a funcall-with-pinned-objects functions (sys:funcall-with-pinned-objects list-of-pinned-objects thunk) - it would put pointes to the objects in the list onto the stack and then call the thunk - would that be performant enough?
21:57:20
selwyn
yes it would. i am not actually too concerned about performance for this application, but it would be in the spirit of a linear algebra library to be as performant as can be
22:08:30
drmeister
The array-storage-vector function in sbcl - what does it do with displaced arrays?
22:08:59
drmeister
It doesn't work with them - right? array-storage-vector just gives you the simple-vector that underlies the storage of whatever array you pass it.
22:18:56
drmeister
Would you be able to work from there - you could fork magicl, put in a few #+clasp and use those new functions to implement what you need.
22:27:24
drmeister
The CL code from ECL that is not the ECL compiler is shared - but we've made a lot of modifications.
22:30:29
drmeister
I'm just compiling those functions - it is recompiling almost all of the C++ (sigh)
22:31:57
drmeister
I'm going off of what it looks like magicl needs, sbcl provides and what you told me and my own guesses. I haven't tested anything - but they use facilities that I already had in place.
23:41:31
drmeister
::notify selwyn I pushed the changes to add those array storage vector functions to the 'work' branch.