freenode/#clasp - IRC Chatlog
Search
11:13:05
drmeister
beach: I'd like to parallelize compilation. Once the cleavir AST is generated - all possible changes to the environment from the compilation of the top level form have been made - is that correct?
11:15:43
drmeister
llvm is not going to get any faster any time soon - so parallelizing compilation would be a way to significantly speed up building things.
11:25:44
drmeister
(defun a ...) (defun b ...) (defun c ...) Generating the (AST c) can depend on (AST b) can depend on (AST a) if they invoke macros that invoke those functions. So AST generation would be serial and there would have to be some way to interpret the AST's while we wait for the compilation of each top level form to complete.
11:29:28
ringer1
This SYCL implementation is mainly based on C++17 and OpenMP for execution on the CPU, with Boost.Compute for the non single-source OpenCL interoperability layer and with LLVM/Clang for the device compiler providing single-source experience on SPIR device. Since in SYCL there is a host fall-back, this CPU implementation can be seen as an implementation of this fall-back too...
11:32:17
beach
drmeister: It is true that there could be compile-time side effects during AST generation, Like macros being defined.
11:33:30
beach
Also, in a typical scenario, one fasl file needs to be loaded before compilation of the next one starts.
11:33:41
drmeister
An AST is a description of the form - could it not be evaluated with a suitable interpreter?
11:33:48
beach
The only way to avoid that is to stick the right dependencies in the ASDF system definition.
11:36:05
drmeister
I thought I had to do that so the compilation of the next top level form would work - but the next file would work as well.
11:36:53
drmeister
What I want to do is get AST->HIR->LLVM-IR->llvm(slow) running in parallel on as many threads as I have.
11:43:38
beach
You could use some previous Clasp (a? b?) to load the files that some file depends on. Then you could generate the AST correctly.
11:44:56
drmeister
I do that now in the build system - but I can't speed up ASDF builds - they are all single core.
11:46:38
drmeister
There is building clasp - that's improved greatly by first loading all the source and then running compile-file on every source file in separate forks.
11:47:46
drmeister
Then there is building stuff with quicklisp/asdf - that is forced to go sequentially, one file at a time.
11:49:16
beach
I mean, suppose that files A, B, C that have a sequential dependency. You can start AST generation and compilation of A, at the same time, load A. Then you can start AST generation and compilation of B, at the same time, load B. Etc.