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 |
KyleFromNVIDIA
left a comment
There was a problem hiding this comment.
Approved trivial CMake changes
madsbk
left a comment
There was a problem hiding this comment.
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.
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.
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_orinitially in thedetailnamespace has been moved outside to become part of the public API. cuDF uses this function and needs a timely code update.detailnamespace for internal use only have been relocated to the.cppfiles, 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).detailnamespace fromX.hppare now moved to the unnamed namespace in theX.cppfiles, unless they are used elsewhere (e.g.Y.cpp).