-
Notifications
You must be signed in to change notification settings - Fork 62
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
Continue to make KvikIO a shared library by moving code from hpp to cpp #581
Continue to make KvikIO a shared library by moving code from hpp to cpp #581
Conversation
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
/ok to test |
/ok to test |
/ok to test |
/ok to test |
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.
Approved trivial CMake changes
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.
Looks good, thanks @kingcrimsontianyu
/merge |
"src/posix_io.cpp" | ||
"src/shim/cuda.cpp" | ||
"src/shim/cufile.cpp" | ||
"src/shim/libcurl.cpp" |
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 think libcurl.cpp
should only be built if we have an option like CUDF_KVIKIO_REMOTE_IO=ON
to enable it. Perhaps it should be named KVIKIO_REMOTE_IO
? See NVIDIA/spark-rapids-jni#2766. No curl dependency should be required if that CMake option is off.
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.
The option I am looking for may already exist: KvikIO_REMOTE_SUPPORT
KvikIO has just introduced slightly breaking code changes (rapidsai/kvikio#581) where the utility function `getenv_or` is moved out of the `detail` namespace and becomes part of the public API. This PR adapts cuDF for this change. This PR has been tested locally using the abovementioned KvikIO branch. Authors: - Tianyu Liu (https://github.com/kingcrimsontianyu) - GALI PREM SAGAR (https://github.com/galipremsagar) Approvers: - Devavret Makkar (https://github.com/devavret) - Bradley Dice (https://github.com/bdice) - Muhammad Haseeb (https://github.com/mhaseeb123) URL: #17733
This PR fixes a CMake bug introduced in #581 where `libcurl` is unconditionally compiled. Authors: - Tianyu Liu (https://github.com/kingcrimsontianyu) Approvers: - Kyle Edwards (https://github.com/KyleFromNVIDIA) - Bradley Dice (https://github.com/bdice) - Alessandro Bellina (https://github.com/abellina) URL: #587
…Mark noexcept to compat mode-related functions (#588) This PR performs makes the following three improvements: - Separates interface and definition for `file_handle.hpp` that was missed in the previous PR #581. - To help avoid UB (e.g. program crash) for downstream applications, adds the following qualifying remark to the returned future object of `pread/pwrite`: >The `std::future` object's `wait()` or `get()` should not be called after the lifetime of the FileHandle object ends. Otherwise, the behavior is undefined. - Add `noexcept` specifier to compatibility mode-related functions. Authors: - Tianyu Liu (https://github.com/kingcrimsontianyu) Approvers: - Mads R. B. Kristensen (https://github.com/madsbk) - Lawrence Mitchell (https://github.com/wence-) URL: #588
In light of the initiative to make KvikiIO a shared library, this PR further separates the implementation from the interface as thoroughly as possible.
This PR is marked "breaking" because:
getenv_or
initially in thedetail
namespace has been moved outside to become part of the public API. cuDF uses this function and needs a timely code update.detail
namespace for internal use only have been relocated to the.cpp
files, so downstream applications that happen to use those entities will now see compile errors.Notes:
[[nodiscard]]
in the header now have them in the declaration (.hpp) only, not in the definition (.cpp).detail
namespace fromX.hpp
are now moved to the unnamed namespace in theX.cpp
files, unless they are used elsewhere (e.g.Y.cpp
).