freenode/#lisp - IRC Chatlog
Search
22:59:43
jasom
anybody know what abcl does during initialization? It takes 8 hours to run on Doppio...
23:08:03
phoe
jasom: are you sure you are running it on a JVM that has a compiler, not just an interpreter?
23:08:52
jasom
phoe: I know nothing about the implementation of the JVM I'm running it on, except it's several orders of magnitude slower than what I'm used to.
23:10:32
jasom
the paper claims 24x-48x slower for compute bounded tasks, and simple benchmarks prove that, but I'm seeing much bigger slowdowns for abcl.
23:33:29
jasom
huh, once abcl is up in doppio, it runs relatively fast; 20x slower to calculate 1000th fibonacci vs native jvm
0:04:32
lerax
There is a portable way to use threads with Common Lisp? Currently I'm using the sb-thread: package from sbcl, but this is not a nice solution because is SBCL only.
0:06:48
lerax
This is the official docs https://trac.common-lisp.net/bordeaux-threads/wiki/ApiDocumentation right?
0:12:18
billitch
now i'm stuck rewriting stream classes because evented io is not supported by ansi cl streams
3:08:26
lerax
I have a asdf system on my quicklisp, but I have the same at ~/lisp-chat/lisp-chat.asd. There is a simple way to load it by the current path on sbcl repl instead of loading the global installed by quicklisp? (lisp-chat it's provided by the quicklisp dist)
3:11:21
pjb
Or, of course, you can just (push #P"~/lisp-chat/" asdf:*central-registry*) ; nothing hacky in it.
3:11:49
lerax
yes, I did that... but seems that in some way the quicklisp gives preference to the version from quicklisp (ql:quickload 'lisp-chat)
3:14:44
lerax
Just for curiosity, this function search for .asd files and register at system-index.txt?
3:20:38
Bike
asdf has a deep api for specifying how it searches for systems, but hardly anyone understands it so we just use central registry and a text file list and so forth
5:59:38
borei
with 4 cores and hope that there is no overheade (there will be some) i should get 10Gflops (double-float), it's getting more or less ok
6:06:07
borei
basically i'd like to say that r-lane (and c-lane) has the type (simple-array double-float (4))
6:07:03
|3b|
(though if you are running at safety 0, you probably should verify they actually contain that type first)
6:08:01
White_Flame
you could put the LET inside the LOOP, making the declarations valid & properly scoped, as that's where the variable is actaully used
6:08:02
|3b|
though they could easily be a literal or constant or something instead of allocating every time
6:09:00
White_Flame
a definite shift from C-style languages to Lisp is that you scope variables much tighter, instead of just declaring them all up at the top of the function
6:10:37
White_Flame
and yeah, LOOP itself migh tbe able to iterate the arrays for you, instead of dealing with indexes manually
6:11:31
|3b|
actually yeah, missed that they were just directly iterating a vector, was thinking FOR = rather than FOR ACROSS
6:15:43
|3b|
ACTION would just do the whole thing on a GPU though, even with the horribly crippled double precision on consumer nvidia cards, recent midrange stuff does 50-100gflops :)
6:21:38
|3b|
CL as specified doesn't have anything like that, but most implementations have some sort of lower-level APIs that would for example let you write asm or extend the compilers
6:24:38
|3b|
https://www.pvk.ca/Blog/2013/06/05/fresh-in-sbcl-1-dot-1-8-sse-intrinsics/ talks about some features in sbcl for example, still fairly low-level though
6:25:31
|3b|
(in the "write asm/extend the compiler" range, but with some of the supporting parts already done)
6:28:50
|3b|
there is also the option of using something like opencl on CPU... not sure if it would be any easier, but would at least be different problems :p
6:33:01
|3b|
also, at that scale of matrix multiplies, you might want to start looking at algorithms that take better advantage of memory access patterns
6:36:25
White_Flame
borei: there's some game engine stuff out there in Lisp which does on-the-fly shader interactive coding while the program runs