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

[ENH] Update CMake to use FetchContent #1075

Closed
ChuckHastings opened this issue Aug 13, 2020 · 1 comment
Closed

[ENH] Update CMake to use FetchContent #1075

ChuckHastings opened this issue Aug 13, 2020 · 1 comment
Assignees
Labels
feature request New feature or request
Milestone

Comments

@ChuckHastings
Copy link
Collaborator

ChuckHastings commented Aug 13, 2020

Scrambling to get cuda11 working in 0.15 resulted in adding FetchContent to get CUB and THRUST from git instead of using the version in the cuda library.

FetchContent is an alternative to ExternalProject with the advantage that the content is downloaded at configuration time instead of at build time. The FetchContent approach was borrowed from cudf.

Several internet articles suggest NOT mixing FetchContent with ExternalProject. It would be helpful to evaluate the best approach and either migrate everything to FetchContent or migrate everything to ExternalProject.

As an alternative, cuCollections suggests in their README using https://github.com/TheLartians/CPM.cmake, which is a wrapper around FetchContent that might make things easier.

@ChuckHastings ChuckHastings added the ? - Needs Triage Need team to review and classify label Aug 13, 2020
@BradReesWork BradReesWork added this to the 0.16 milestone Aug 20, 2020
@BradReesWork BradReesWork added feature request New feature or request and removed ? - Needs Triage Need team to review and classify labels Aug 20, 2020
@BradReesWork BradReesWork modified the milestones: 0.16, 0.17 Sep 28, 2020
@BradReesWork BradReesWork modified the milestones: 0.17, 0.18 Nov 23, 2020
rapids-bot bot pushed a commit that referenced this issue Feb 4, 2021
…t cugraph as an external project and other tech debt removal (#1367)

This PR makes cuGraph's cmake files more consistent with other RAPIDS libs by matching the minimum required cmake version, adding `project()` statements to cugraph's thirdparty modules, and using `CMAKE_CURRENT_SOURCE_DIR` appropriately so paths are relative to the CMakeLists.txt file rather than the top-level cmake dir of the project (since that may not be the cugraph cpp dir in the case of cugraph being used as an external project by another application).

This also adds a `CUDA_ARCHITECTURES=OFF` setting to suppress the warning printed for each test target. This setting may be replaced/changed once the findcudatoolkit feature is used in a future cmake version.

This also removes the Arrow and GTest cmake files since Arrow is not a direct dependency and those files were not being used, and GTest is now a build requirement in the conda dev environment and does not need to be built from source (the conda dev env files have been updated accordingly).

This PR also addresses much of #1075 , but not completely since gunrock is still using `ExternalProject` due to (I think) updates that need to be made to their cmake files to support this.

This was tested by observing a successful clean build, however it was **not** tested by creating a separate cmake application to simulate cugraph being used as a 3rd party package.

Note: the changes in this PR were modeled after rapidsai/rmm#541

closes #1137 
closes #1266

Authors:
  - Rick Ratzel (@rlratzel)

Approvers:
  - Chuck Hastings (@ChuckHastings)
  - AJ Schmidt (@ajschmidt8)
  - Brad Rees (@BradReesWork)

URL: #1367
@BradReesWork
Copy link
Member

closed by #1367

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

No branches or pull requests

3 participants