IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an
email to Administrator. User accounts are meant only to access repo
and report issues and/or generate pull requests.
This is a purpose-specific Git hosting for
BaseALT
projects. Thank you for your understanding!
Только зарегистрированные пользователи имеют доступ к сервису!
Для получения аккаунта, обратитесь к администратору.
We should follow the shutdown procedure from FrontendAction::EndSourceFile
which ensures clang is properly torn down.
This patch allows us to write a module file without having to explicitly
call CompilerInstance::clearOutputFiles.
DynamicLibraryManager only looks at LD_LIBRARY_PATH and friends, but for install / prefix
builds that might not point to the ROOT library dir. Make it explicit that the
DynamicLibraryManager is supposed to look at the directory containing ROOT libraries.
Fixes install-with-prefix builds with RPATH, that now do not need a fake LD_LIBRARY_PATH
anymore.
We had symbols exposed, which in turn meant symbols were resolved by the dynamic loader,
which in turn meant another libllvm.so could interfere with those of cling. By hiding these
symbols, all symbols are self-contained and not external symbols leak into libCling.
cling needs to resolve its own symbols, so unhide those.
This reverts commit 1e6cf7e294dbc5450d17600e91d42dd22a4a63cb.
Travis counts the packet install time which depends on network. Let's play
safe for now until more detailed tests are conducted.
This patch allows us to resolve system-specific header search directories
such as the location of libc.
This patch fixes experimental runtime_cxxmodules on OSX where libc is in
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/
- it is more similar to the interface of cling::Interpreter
- replace function compileDeviceCode() with process()
- add declare() and parse() functions
- the functions have only the argument input, because the rest of the missing arguments (e.g. Transaction) requires modifications at the transaction system
- it also fixes a bug in the I/O system of the xeus-cling kernel
- instead of using the NVIDIA tool fatbin, the fatbin is now generated directly in the cling
- clean up the IncrementalCUDADeviceCompiler class depending on the new fatbin implementation (e.g. remove findToolChain())
- last I/O-operation is required -> write the fatbin code to a file for the CodeGen
Replaced the old version of the PTX compiler which used external tools and llvm::ExecuteAndWait with an internal implementation. The new incremental PTX compiler uses a modified version of the cling::Interpreter instance. The instance can process the PTX built-ins and generates LLVM IR. The LLVM IR is be compiled to PTX via an additional NVPTX backend implemented in the IncrementalCUDADeviceCompiler.
The new implementation has many advantages:
- it's much faster than the old version
- less error-prone because the ASTPrinter and some unnecessary cling transformations are avoided
- reduction of problems in searching for external tools (can be very complicated on HPC systems)
The IncrementalCUDADeviceCompiler is moved from the cling::IncrementalParser to the cling::Interpreter, because the second interpreter needs the input without wrappers or transformations.
This ASTTransformer adds an inline attribute to any CUDA __device__ kernel
that does not have the attribute. Inlining solves a problem caused by
incremental compilation of PTX code. In a normal compiler, all definitions
of __global__ and __device__ kernels are in the same translation unit. In
the incremental compiler, each kernel has its own translation unit. In case
a __global__ kernel uses a __device__ function, this design caused an error.
Instead of generating the PTX code of the __device__ kernel in the same file
as the __global__ kernel, there is only an external declaration of the
__device__ function. However, normal PTX code does not support an external
declaration of functions.
The transformer only works if the target device is nvptx.
- change CUDA to CUDAHost and add CUDADevice to the InvocationOptions
- in the PTX mode, some ASTTransformer will not be used, which are useful for the x86 mode
This patch teaches cling to detect if the essential libraries have modulemaps
and if necessary it adds an overlay around libc and std.
This tightens the implementation and makes cling standalone easier to run in
-fmodules mode.
This patch tightens the implementation of the collection of modulemap files.
It still gathers all 'system' modulemaps necessary for cling to run if
-fno-implicit-module-maps is specified.
This patch should unbreak our osx builds.
If we use -fimplicit-module-maps this means that cling will find all files called
module.modulemap on the include paths. In certain cases the same modulemap can
be present in two locations causing module redefinition errors.
This patch teaches cling to work with explicitly specified modulemaps in
-fno-implicit-module-maps mode. It moves the generation of the overlay file
closer to the CIFactory so that we can reuse the modulemap loading code before
the interpreter object was set up.
The patch also turns off the implicit module map discovery and explicitly
specifies the ROOT-related modulemap files. The modulemap files need to be
enumerated in both TCling and rootcling. Rootcling requires -fno-rtti build mode
and we cannot use the utilities in TROOT (also because rootcling_stage1 is
built before libCore). This requires the extraction of the `GetSysRoot`,
`GetIncludeDir` and `GetEtcDir` in the `ROOT::FoundationUtils` which is can be
used throughout the entire core component.
This fixes ROOT-10354.