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

Remove the cuFile (GDS) backend #16418

Open
madsbk opened this issue Jul 29, 2024 · 3 comments · May be fixed by #17764
Open

Remove the cuFile (GDS) backend #16418

madsbk opened this issue Jul 29, 2024 · 3 comments · May be fixed by #17764
Assignees
Labels
improvement Improvement / enhancement to an existing function libcudf Affects libcudf (C++/CUDA) code.

Comments

@madsbk
Copy link
Member

madsbk commented Jul 29, 2024

I am wondering if it is time to remove the cuFile backend such that the LIBCUDF_CUFILE_POLICY options become: KVIKIO (the current default) and OFF.

This will remove a lot of code and make it easier to simplify and add new IO features, I think.

cc. @GregoryKimball, @vuule

@madsbk madsbk added libcudf Affects libcudf (C++/CUDA) code. improvement Improvement / enhancement to an existing function labels Jul 29, 2024
@bdice
Copy link
Contributor

bdice commented Jul 29, 2024

@madsbk Can you help explain the potential impact on performance? How does KVIKIO performance compare to GDS or ALWAYS? I don't have a very good grasp on how these behave in terms of performance, but am in favor of simplification.

@vuule
Copy link
Contributor

vuule commented Jul 29, 2024

I'm a bit hesitant to remove this. If nothing else, having an option that uses GDS but does not use kvikIO has been useful for debugging.

@madsbk
Copy link
Member Author

madsbk commented Jul 30, 2024

@madsbk Can you help explain the potential impact on performance? How does KVIKIO performance compare to GDS or ALWAYS? I don't have a very good grasp on how these behave in terms of performance, but am in favor of simplification.

When cuFile is available, the performance of KVIKIO and GDS is the same. They both use the same thread pool implementation, thread pool size, and chunk size.

When cuFile isn’t available, GDS delegates to libcudf's own IO implementation whereas KVIKIO uses its own IO implementation. All benchmarks I have seen, KVIKIO performs on par or better than libcudf’s own IO implementation hence why KVIKIO is the default backend.

ALWAYS forces the use of cuFile and will fail if not available. It is the same as setting KVIKIO_COMPAT_MODE=off (disabling KvikIO’s compatibility mode).

I'm a bit hesitant to remove this. If nothing else, having an option that uses GDS but does not use KvikIO has been useful for debugging.

I agree, GDS as a debug point might be useful but I am not sure it is worth it the extra code and complexity. KVIKIO has been the default backend since 23.02 and we still have OFF (libcudf’s own IO implementation) to test against.

@kingcrimsontianyu kingcrimsontianyu self-assigned this Jan 17, 2025
@kingcrimsontianyu kingcrimsontianyu linked a pull request Jan 17, 2025 that will close this issue
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
improvement Improvement / enhancement to an existing function libcudf Affects libcudf (C++/CUDA) code.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants