You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am currently utilizing the explicit-multipass compile flow in AdaptiveCpp for a that targets CPU, CUDA and HIP. While this flow allows for targeting multiple device backends simultaneously, it has introduced challenges related to incremental builds in my development environment.
My project relies on the explicit-multipass flow due to its capability to simultaneously target multiple backends (CPU, CUDA and HIP).
However, I experience a problem, where every build triggers a full rebuild. This behavior seems to stem from the handling of temporary files (__acpp_embedded_cuda_kernels.hpp) that are generated during the device code compilation process. These files are deleted after each build and are identified as "dirty" by Ninja, which leads to unnecessary recompilations.
The explicit-multipass compilation flow involves separate compilation passes for device and host code, managed by the acpp compiler driver. This process results in the creation of temporary files to store compiled kernel images, which are then embedded into the host binary.
Changes or perceived changes in these temporary files cause Ninja to trigger a rebuild of the dependent targets, affecting incremental build efficiency.
Are there any workarounds or ways that could help manage these temporary files more effectively to support incremental builds with the explicit-multipass flow?
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
I am currently utilizing the
explicit-multipass
compile flow in AdaptiveCpp for a that targets CPU, CUDA and HIP. While this flow allows for targeting multiple device backends simultaneously, it has introduced challenges related to incremental builds in my development environment.Environment:
AdaptiveCpp v24
Compiler: Clang/LLVM 17.0.4
Build System: Ninja
OS: Windows 11
My project relies on the
explicit-multipass
flow due to its capability to simultaneously target multiple backends (CPU, CUDA and HIP).However, I experience a problem, where every build triggers a full rebuild. This behavior seems to stem from the handling of temporary files (
__acpp_embedded_cuda_kernels.hpp
) that are generated during the device code compilation process. These files are deleted after each build and are identified as "dirty" by Ninja, which leads to unnecessary recompilations.The
explicit-multipass
compilation flow involves separate compilation passes for device and host code, managed by the acpp compiler driver. This process results in the creation of temporary files to store compiled kernel images, which are then embedded into the host binary.Changes or perceived changes in these temporary files cause Ninja to trigger a rebuild of the dependent targets, affecting incremental build efficiency.
Are there any workarounds or ways that could help manage these temporary files more effectively to support incremental builds with the
explicit-multipass
flow?Thank you.
Beta Was this translation helpful? Give feedback.
All reactions