Skip to content

Add Initial Java Support for GDS to KvikIO#396

Merged
rapids-bot[bot] merged 42 commits intorapidsai:branch-25.02from
aslobodaNV:add_initial_java_support
Nov 20, 2024
Merged

Add Initial Java Support for GDS to KvikIO#396
rapids-bot[bot] merged 42 commits intorapidsai:branch-25.02from
aslobodaNV:add_initial_java_support

Conversation

@aslobodaNV
Copy link
Contributor

@aslobodaNV aslobodaNV commented Jun 25, 2024

This PR is intended to add initial support for Java binding to GDS as part of the KvikIO library. In this PR are the minimal set of bindings required to support synchronous read and write IO operations via GDS as well as a single example to demonstrate how the bindings can be used alongside other CUDA libraries, such as JCuda. Full support for the GDS CuFile API, including batch and asynchronous IO, has not yet been implemented and more sophisticated error/exception handling is not yet in place. There is a README located within kvikio/java detailing how this new functionality can be compiled and built locally, along with detailed instructions on how to run the included usage example.

@copy-pr-bot
Copy link

copy-pr-bot bot commented Jun 25, 2024

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@aslobodaNV aslobodaNV marked this pull request as draft June 25, 2024 20:48
@madsbk madsbk added improvement Improves an existing functionality non-breaking Introduces a non-breaking change labels Jun 26, 2024
@madsbk
Copy link
Member

madsbk commented Jun 27, 2024

/ok to test

Copy link
Contributor

@bdice bdice left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few high level comments before digging too deep into this code:

  • I have a weak preference to wrap the C++ bindings rather than re-implement kvikio in Java. This will probably be easier than reimplementing the code as new features are introduced to kvikio, and gives more confidence in testing (bindings are probably less bug-prone than a full reimplementation).
  • This will need to pass style checks. See the cuDF guide on Code Formatting. The same guidance applies to using pre-commit with kvikio development.
  • This will need a build system, probably Maven. Long commands in the README that explain how to supply all the dependencies are not a good solution if those dependencies can be fetched and built automatically. See how cuDF's Java bindings use Maven, for instance. https://github.com/rapidsai/cudf/tree/branch-24.08/java
    • The end result should be that commands like mvn clean install work properly.
  • This will need CI builds and tests. Review the following resources on cuDF's Java CI and try to duplicate them:

Give this a start and please feel free to schedule time with me to discuss anything that is unclear!

@jakirkham
Copy link
Member

Is this still planned for 24.08 or should we move to 24.10?

@aslobodaNV
Copy link
Contributor Author

I will not likely finish the updates here for a couple weeks due to other priorities, so this should be moved to 24.10

@jakirkham jakirkham changed the base branch from branch-24.08 to branch-24.10 July 24, 2024 20:27
@jakirkham
Copy link
Member

Ok thanks Alex! 🙏

Have moved to 24.10

@aslobodaNV aslobodaNV marked this pull request as ready for review September 4, 2024 21:21
@aslobodaNV aslobodaNV requested review from a team as code owners September 4, 2024 21:21
Copy link
Contributor

@bdice bdice left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quick first pass of review -- mostly focused on packaging and CI. Give my suggestions a try and I'll comment /ok to test to run your next commits on CI.

@bdice
Copy link
Contributor

bdice commented Nov 13, 2024

/ok to test

@bdice
Copy link
Contributor

bdice commented Nov 16, 2024

/ok to test

@madsbk
Copy link
Member

madsbk commented Nov 19, 2024

/ok to test

Copy link
Member

@madsbk madsbk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, thanks @aslobodaNV

@bdice
Copy link
Contributor

bdice commented Nov 19, 2024

@madsbk Do you want to target 24.12 or 25.02?

@bdice
Copy link
Contributor

bdice commented Nov 19, 2024

@aslobodaNV Great work. I left some comments but we should be able to get this merged after they are addressed.

@madsbk
Copy link
Member

madsbk commented Nov 19, 2024

@madsbk Do you want to target 24.12 or 25.02?

I have no strong opinion but it might make sense to add some more features before we release?
@aslobodaNV do you want this to be part of the 24.12 release? Or should we have it in the nightly channel until 25.02?

@aslobodaNV
Copy link
Contributor Author

@madsbk Do you want to target 24.12 or 25.02?

I have no strong opinion but it might make sense to add some more features before we release? @aslobodaNV do you want this to be part of the 24.12 release? Or should we have it in the nightly channel until 25.02?

I'm fine with this being held in the nightly channel till 25.02. I expect I will have some more time next quarter to work on some improvements here that would be good before the full release. These last two quarters have not given me much time to add the nice-to-haves.

@aslobodaNV
Copy link
Contributor Author

@aslobodaNV Great work. I left some comments but we should be able to get this merged after they are addressed.

@bdice Addressed all comments except the rapids url change. Please confirm that it should differ from the one used in the cudf repo.

Co-authored-by: Bradley Dice <[email protected]>
Copy link
Contributor

@bdice bdice left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving and retargeting to 25.02.

@bdice bdice changed the base branch from branch-24.12 to branch-25.02 November 19, 2024 23:48
@bdice
Copy link
Contributor

bdice commented Nov 19, 2024

One last CI run, then this should be good to go.

@bdice
Copy link
Contributor

bdice commented Nov 19, 2024

/ok to test

@bdice
Copy link
Contributor

bdice commented Nov 19, 2024

/ok to test

@bdice
Copy link
Contributor

bdice commented Nov 19, 2024

/ok to test

@bdice
Copy link
Contributor

bdice commented Nov 19, 2024

/merge

@rapids-bot rapids-bot bot merged commit 19e44c0 into rapidsai:branch-25.02 Nov 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

improvement Improves an existing functionality non-breaking Introduces a non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants