-
Notifications
You must be signed in to change notification settings - Fork 154
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
wheels: dynamically load libcudf.so
from libcudf
wheel
#1447
Changes from 5 commits
4c3f4f9
b429e24
5a81fdb
18f7dbf
a5b6e4e
fe7df5d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
#!/bin/bash | ||
# Copyright (c) 2023, NVIDIA CORPORATION. | ||
# Copyright (c) 2023-2024, NVIDIA CORPORATION. | ||
|
||
set -euo pipefail | ||
|
||
ci/build_wheel.sh cuproj python/cuproj | ||
ci/build_wheel.sh cuproj python/cuproj python |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,6 @@ | ||
#!/bin/bash | ||
# Copyright (c) 2023, NVIDIA CORPORATION. | ||
# Copyright (c) 2023-2024, NVIDIA CORPORATION. | ||
|
||
set -euo pipefail | ||
|
||
export SKBUILD_CMAKE_ARGS="-DUSE_LIBARROW_FROM_PYARROW=ON" | ||
|
||
ci/build_wheel.sh cuspatial python/cuspatial | ||
ci/build_wheel.sh cuspatial python/cuspatial python |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,15 +5,19 @@ set -eou pipefail | |
|
||
mkdir -p ./dist | ||
RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen ${RAPIDS_CUDA_VERSION})" | ||
RAPIDS_PY_WHEEL_NAME="cuspatial_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 ./dist | ||
|
||
# Install additional dependencies | ||
# install build dependencies for fiona | ||
apt update | ||
DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends libgdal-dev | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fiona appears to ship binary wheels Wonder if this is only needed for some specific case (didn't see Linux ARM packages for example) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is the question why we install fiona with There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't know the original reason, not having ARM packages seems like a likely candidate. This PR doesn't change anything about it (it's just showing up in the diff because I'm moving other install-related code around), so I'm going to treat this discussion as non-blocking. |
||
python -m pip install --no-binary fiona 'fiona>=1.8.19,<1.9' | ||
|
||
# Download the cuspatial built in the previous step | ||
RAPIDS_PY_WHEEL_NAME="cuspatial_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 python ./dist | ||
|
||
# echo to expand wildcard before adding `[extra]` requires for pip | ||
python -m pip install $(echo ./dist/cuspatial*.whl)[test] | ||
python -m pip install \ | ||
--no-binary 'fiona' \ | ||
"$(echo ./dist/cuspatial*.whl)[test]" \ | ||
'fiona>=1.8.19,<1.9' | ||
|
||
rapids-logger "pytest cuspatial" | ||
pushd python/cuspatial/cuspatial | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -44,12 +44,8 @@ if(NOT cuspatial_FOUND) | |
|
||
set(cython_lib_dir cuspatial) | ||
include(cmake/Modules/WheelHelpers.cmake) | ||
# TODO: This install is currently overzealous. We should only install the libraries that are | ||
# downloaded by CPM during the build, not libraries that were found on the system. However, in | ||
# practice this would only be a problem if libcudf was not found but some of the | ||
# dependencies were, and we have no real use cases where that happens. | ||
install_aliased_imported_targets( | ||
TARGETS cuspatial arrow_shared nvcomp::nvcomp nvcomp::nvcomp_gdeflate nvcomp::nvcomp_bitcomp | ||
TARGETS cuspatial | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Actually, now that we've removed all of these targets we should just remove the WheelHelpers altogether and just do a normal CMake There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Great point! Done in fe7df5d |
||
DESTINATION ${cython_lib_dir} | ||
) | ||
endif() | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -32,6 +32,7 @@ requires-python = ">=3.10" | |
dependencies = [ | ||
"cudf==24.10.*,>=0.0.0a0", | ||
"geopandas>=0.11.0", | ||
"libcudf==24.10.*,>=0.0.0a0", | ||
"numpy>=1.23,<2.0a0", | ||
"rmm==24.10.*,>=0.0.0a0", | ||
] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`. | ||
|
@@ -71,6 +72,7 @@ known_dask = [ | |
known_rapids = [ | ||
"rmm", | ||
"cudf", | ||
"libcudf", | ||
"pylibcudf", | ||
] | ||
known_first_party = [ | ||
|
@@ -134,6 +136,8 @@ requires = [ | |
"cmake>=3.26.4,!=3.30.0", | ||
"cudf==24.10.*,>=0.0.0a0", | ||
"cython>=3.0.0", | ||
"libcudf==24.10.*,>=0.0.0a0", | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Putting this somewhere on the diff so it can be threaded. Just realized I may have missed one detail that wouldn't be caught in CI. @vyasr do we want something like https://github.com/rapidsai/cudf/blob/925530afe8178b7e788ea1a8d4df4c0eb4d042dc/python/cudf/cudf/__init__.py#L3-L11 near the top of I think the answer is yes, so that other There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Reading the linked code (and where it lives), it seems just doing Though please let me know if I'm missing something There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. John is right that the import should be sufficient for now. When you create the libcuspatial wheel in the follow-up, though, you'll end up needing to load libcudf there. You can see how I did that in the cugraph PR for raft/cugraph-ops. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks, added an |
||
"librmm==24.10.*,>=0.0.0a0", | ||
"ninja", | ||
"rmm==24.10.*,>=0.0.0a0", | ||
"wheel", | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess this is in anticipation of the C++ wheel? I have a very minor preference for sticking that change in the subsequent PR to make the reason more obvious, but now that it's done let's leave it here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Technically yes, but I think it'd be desirable even if we weren't adding a C++ wheel in this repo.
In my mind, rapidsai/shared-workflows#209 and rapidsai/gha-tools#105 shipped with
package-type
defaulting topython
just to avoid having to do updates across all the repos to make progress there.But that it'd be better to be explicit everywhere (like @bdice mentioned in rapidsai/cudf#15483 (comment)), to avoid issues like rapidsai/cudf#16650.
Anyway yeah, we are adding C++ wheels here very soon so I'll leave this change in here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just to clarify: I wasn't meaning the passing of
python
to the GHA tool, just the passing of an argument to our script, i.e. we could have hardcodedpython
in this script and added thepackage_type
parameter in a follow-up.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ohhhh ok yeah got it, fair