Architectural overview? #793
-
|
If I want to understand the high-level architecture of TornadoVM, where would you recommend me to look before I dig into the source code? I am looking for documents/places in the code that would help me understand e.g.:
Apologies if I missed something obvious, but this is the one thing I haven't been able to spot in the documentation-- I would greatly appreciate any pointers to papers, technical documentation, source files etc. that you'd recommend me to look at! As background, I am particularly interested in understanding:
If you have specific pointers for (prior TornadoVM work on) these questions, that would be fantastic, but I assume that they are orthogonal to the project's main scope. |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
|
Thank you @creichen for your interest in TornadoVM.
Regarding high level architecture of Tornadovm I suggest the following papers:
There are also a few talks:
I think what you are looking for here is the
Some passes that it make sense to look at are:
Sketch Passes are backend-agnostic. Now, for the compiler infra of each backend there is a mixture of passes shared between backends and backend-specific ones: Take a look:
Not sure about that, can you please give a bit more details.
If i get that right what you are looking for is
I would really need a bit more info in order to answer this on the semantics of DSL you want to target? What kind of primitives and operators would like to support?
Regarding shared memory workload i think what i a good pointer is this paper, we had a POC a couple of years ago. This work enabled unified memory for the JVM heap allows managed runtimes like TornadoVM to offload computation to GPUs without blocking the garbage collector, improving host–device interoperability while still requiring explicit synchronization. This work and the fact that we based for our data-structured on project Panama (FFM) make fine-grained CPU-GPU interaction possible. https://dl.acm.org/doi/pdf/10.1145/3617651.3622984
I hope these are answer your questions! If you need any more info please let me know |
Beta Was this translation helpful? Give feedback.
-
|
Thank you very much, @mikepapadim ! I have some reading to do now (I haven't really used GraalVM before, either). :-) I believe that I have the necessary pointers to figure out the rest myself now, but since you were curious, I'll follow up on the "semantics of the DSL I want to target": That DSL is very much a WIP, due to the scope of the project being a bit up in the air (how much of the code to refactor to use such a DSL etc.), and I expect that I'll need to do some prototyping to understand what makes sense here. My workloads are from compilers and program analysis and normally live on the Java heap; the most computationally heavy bits involve constructing and (especially) propagating information along (sparse) graph structures. At least the following will likely be of interest:
For controlling execution, the following will be relevant:
While I am not sure how much this aligns with the aims of TornadoVM: if there are any TornadoVM-related pointers you can think of, that would be fantastic! :-) |
Beta Was this translation helpful? Give feedback.
Thank you @creichen for your interest in TornadoVM.
Regarding high level architecture of Tornadovm I suggest the following papers:
There are also a few talks: