Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

camp isn't exporting BLT HIP targets #113

Open
cyrush opened this issue Aug 5, 2022 · 3 comments
Open

camp isn't exporting BLT HIP targets #113

cyrush opened this issue Aug 5, 2022 · 3 comments

Comments

@cyrush
Copy link
Member

cyrush commented Aug 5, 2022

Camp + HIP doesn't export blt's hip cmake targets, so folks downstream using cmake but not using blt can't compile.

I started my adventure with this problem in an Ascent issue - please see full details there: Alpine-DAV/ascent#982

For prior releases of RAJA -- we were using built-in camp, but now that we are using a separate camp build for associated 2022.03 releases, this is a blocker for enabling RAJA+HIP in Ascent.

I am happy to help fix and test this.

@trws
Copy link
Member

trws commented Aug 5, 2022 via email

@cyrush
Copy link
Member Author

cyrush commented Aug 5, 2022

Thanks @trws I appreciate how complex this.

I am not a fan of the attempt at magic with BLT exported targets, it seems like a lot more work to keep healthy than just using CMake's standard targets and setting up things with find_package upon import.

We have stand alone using-with-cmake and using-with-make examples in our CI that catch lots of tricky issues that would otherwise be seen by users.

I'll keep an eye out on RAJA and Umpire PRs and test them.

@trws
Copy link
Member

trws commented Aug 5, 2022

Thanks @trws I appreciate how complex this.

I am not a fan of the attempt at magic with BLT exported targets, it seems like a lot more work to keep healthy than just using CMake's standard targets and setting up things with find_package upon import.

I completely agree FWIW, but the coordination was already such a problem I decided to defer the fix I'd rather make in BLT itself until after we got spack packages and non-BLT downstreams at least unbroken. Part of the trick that makes this extra nasty is that the BLT targets don't actually work correctly in some cases when consumed by non-BLT projects, because they can't control the language property for dependents, or adjust things like the appropriate openmp flag if the dependent uses a different compiler. Kokkos deals with this by leaving everything as c++ and redirecting the compiler in a wrapper to the appropriate language compiler, which works but I'm not really sure is better. In the end I think what I really want us to get to is a BLT or BLT-targets or something that we can install, that provides all of this in a way that works the way we want without each package having to rebuild it explicitly, so we can just find_package(blt) and have it set the stuff up. That's a bigger job though unfortunately and might be a breaking change. Would love your thoughts on this, especially if you can think of something simpler.

We have stand alone using-with-cmake and using-with-make examples in our CI that catch lots of tricky issues that would otherwise be seen by users.

David added a using-with-cmake for raja that's been invaluable in all of this, the using-with-make idea is a good one too, should make sure we cover the pkgconfig output right with that.

I'll keep an eye out on RAJA and Umpire PRs and test them.

Thanks a lot!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants