[llvm-dev] use virtual file with llvm::MemoryBuffer::getFileOrSTDIN instead of real file

Simeon Ehrig via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 11 08:00:56 PDT 2019


Dear LLVM-Developers,

we extend the cling C++ interpreter 
(https://github.com/root-project/cling) with CUDA functionality for 
Nvidia GPUs.

Now we are refactoring the extension 
(https://github.com/root-project/cling/pull/284) to fix some conceptual 
errors and improve performance. One of our goals is to avoid file I/O. 
We have achieved this goal with one exception. We need to write the CUDA 
fatbinary code to a file because the CodeGen of the CUDA x86 backend 
uses a file path and uses llvm::MemoryBuffer::getFileOrSTDIN() to load 
the code from a file. See: 
https://github.com/llvm/llvm-project/blob/9487963244e4c805cf0f5798d903bdb10012b59d/clang/lib/CodeGen/CGCUDANV.cpp#L501-L502

Our question is, can we pass the fatbinary code to CodeGen without file 
I/O and without changing the source code of clang? We want to avoid 
changes in the clang code, as it would make it more complicated to 
update clang/LLVM base.  Maybe something is possible with the llvm 
virtual file system. Unfortunately, I am not familiar enough with it to 
find a solution.

Thank you so much for your help.

Best regards,
Simeon Ehrig

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190611/00e47c3e/attachment.html>


More information about the llvm-dev mailing list