freenode/#clasp - IRC Chatlog
Search
23:19:17
karlosz
are you all looking at the gethash call in compute-destinies? i plan to get rid of the bar entirely so it may be worthwhile to see if it is still expensive after that chunk is gone
23:27:58
drmeister
karlosz: We are looking at the (setf gethash) call in compute-destinies - if you get rid of that bar that would be great. Then it won't depend on hash-table's like it was. But it's still a good idea to get rid of overhead for (setf gethash).
23:30:14
drmeister
I am running into a problem though. When I try to load quicklisp/setup.lisp with your latest PR I get an error.
23:36:48
karlosz
but it certainly *looks* like an inlining problem. maybe you have some merge damage?
23:42:25
drmeister
git remote add karlosz http://github.com/karlosz/SICL.git ; git pull karlosz rui-v2
23:46:34
drmeister
The only other change is I (setf *compile-file-parallel* nil) in compile-file-parallel.lsp
23:55:05
karlosz
but without any of my patches, quicklisp wouldn't load in a reasonable amount of time
1:11:19
drmeister
The change to (setf gethash) is not perceptible. It built in 83min previously and now 82m10s
1:14:39
drmeister
Hmm, I'm not sure if that is in both runs or just this one. What is definitely just in the latest is converting hash-table-setf-gethash from a CL_DEFMETHOD to a CL_DEFUN
1:26:21
karlosz
drmeister: what does the backtrace look like? i have never seen an issue with asdf, but i also have a 3 day old clasp
2:07:46
karlosz
drmeister: did the build start failing after you pulled clasp? Bike made some inline.lisp changes yesterday that look relevant
2:10:46
karlosz
might want to try building with commit 727f6da7779a1ec4a4b330410e64ee04f4cfdae7 and see if that fixes things, since i don't have and i suspect kpoeck doesnt have the absolute latest clasp
3:20:23
karlosz
its interesting that cloning instructions for partial inlining takes more time than sparse conditional constant propagation
4:01:16
karlosz
https://github.com/robert-strandh/SICL/pull/131 updated to kill the compute-destinies bar in the flame graph (hopefully)
4:08:19
karlosz
if you wanted to go back to a particular commit in that branch, you can git checkout
5:51:53
drmeister
clasp-cst/src/lisp/kernel/contrib/sicl/Code/Cleavir/Generate-AST/convert-form.lisp
5:55:23
karlosz
this change is more involved than the others so there might be some subtelty going on
5:55:39
drmeister
I'm building on macOS and Linux with the same configuration - they are both doing it.
5:56:50
drmeister
It's just those two files - they don't look hung up - but they are taking a long time (42 min and 47 min)
7:51:15
kpoeck
The change for CL_DEFUN T_sp core__hash_table_setf_gethash(HashTable_sp hash_table, T_sp key, T_sp value) {.. might not work for weak hash-tables
8:10:04
kpoeck
I have missed that Open Dylan after 4 years had a new release with a llvm backend https://opendylan.org/news/2019/03/31/new-release.html
8:32:51
kpoeck
They say: Open Dylan generates LLVM bitcode directly using a native Dylan IR and bitcode library.)
8:44:50
beach
It will be in the SICL part, and I am going to use the "Cluster" assembler which currently has a backend only for x86-64. But first, the HIR code will be translated to MIR where address calculations are exposed. After that, some value numbering will be appropriate as well as some other optimizations.
8:46:05
beach
Since nearly every SICL object has an indirection, I need to try to optimize away multiple memory accesses to get to the rack, if possible.
8:51:45
kpoeck
Theoreticaly using llvm as a backend seemed the right thing to do to me, but I wondered about alternatives
9:04:10
beach
1. It is a specification without an independent standard. 2. It has a single implementation. 3. It is not written in Common Lisp. 4. It is written in C++.
9:05:14
beach
So 1 and 2 together implies that it's a moving target that I am not interested in trying to track.
9:07:12
beach
Thanks. It is less important to drmeister. He likes C++, doesn't mind mixing it with Common Lisp (it's a goal of Clasp). Plus, he has all this energy to work on tracking moving targets that I certainly do not have.
9:17:51
kpoeck
2 files missing to complete the cst build with latest everything. Yesterday drmeister changed the implementation of (setf (gethash ..)) lets see whether that helps
9:28:30
kpoeck
I will extend my hashtable-benchmark to include (setf (gethash ..) ). the first version just checked gethash which seems to be on par with sbcl gethash
9:28:51
kpoeck
Hope I can also test the pathlogical case for openhashing that you mentionned yesterday
9:33:00
beach
I was thinking of doing a simulation to count the number of iterations on the average. It should not be too hard to do.
9:33:51
beach
And one could distinguish between the case where the item is in the table and the case where it is not.
9:34:20
beach
The most common use case in Cleavir never removes removes an item, so that aspect is not tested.
9:34:48
beach
I.e., you fill the table, then empty it. Now, every search goes through the entire vector.
9:35:30
beach
Anyway, I personally don't see the advantage of open hashing, but I could have missed something.
9:36:38
beach
But if the number of iterations is small in the use case where things are just added, there must be some other overhead that explains the performance.