|
From: Raymond T. <to...@rt...> - 2003-11-24 19:02:54
|
>>>>> "Nicolas" == Nicolas Neuss <Nic...@iw...> writes:
Nicolas> OK. But if GC is done by the same thread, my simple mind
Nicolas> would think that switching it off means setting one
Nicolas> global variable to NIL.
Yes, I think that's true. I don't use a multithreaded system, though,
so I don't know.
>> A factor of 2 will be very difficult to achieve, since a Lisp function
>> call basically loads up a bunch of pointers and calls the function. We
>> need to compute addresses, do the without-gc/unwind-protect stuff, load
>> up the registers for a foreign call and then call it.
Nicolas> Yes. Here I assume (in the direction to what Duane posted) that also the
Nicolas> Lisp compiler works with addresses and has them readily available.
Yes, we have addresses, but need to figure out from the lisp object
address where the actual data is. I would think in a threaded system,
locking out GC is even more important since other threads can start GC
even if the current thread wouldn't.
But I'll look to see what we can do.
Nicolas> bet that I cannot bear too much of overhead here. Could be that I will
Nicolas> have to handle the very small blocks (1x1--3x3) even without any function
Nicolas> call.
I think even normal BLAS overhead would hurt quite a bit if your
blocks are this small. Putting a 5 args, say, onto the call stack
probably costs as much as the computations in such a small block.
Ray
|