[llvm] [refactor] Split LLVMCompiledData of kernels and tasks #6019
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Related issue = #5511
The compiler first compiles every offloaded task to a
LLVMCompiledTask
which contains an LLVM module, the name of the offloaded task function inside the module, and some extra information for linking. Then, The compiler links the modules in theLLVMCompiledTask
s, the runtime modules and the struct modules used in the kernel together, and creates aLLVMCompiledKernel
that contain the linked LLVM module and the names of the offloaded tasks.Both
LLVMCompiledTask
andLLVMCompiledKernel
need to store the generated LLVM module and the names of the functions of the offloaded tasks inside the module.LLVMCompiledTask
also stores additional information which will be used when linking like which SNodeTrees are used and the sizes of TLS buffers used in parallel struct for.