[QUESTION] Sharing a Python cudf, or better, dask-cudf?
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 211
- Forks
- 29
- Avg merge
- 17h 30m
- Merged PRs (30d)
- 1
Description
Hi @trxcllnt & team!
Curious if any pointers on this. Ultimately, we're trying to setup a basic ~LRU over Python-managed dask-cudf objects (raw ddf or published) and have node do reads+writes with it. That's probably too big a leap for now, but I'm wondering if we can do something in the near term by scoping down to just CUDA IPC + cudf, or something similar?
Ultimate ideal case: multi-gpu dask
Ideally for the read direction, for example:
Dask-based Python publish:
ddf = dask.dataframe....
client.persist(ddf)
client.publish_dataset(xyz=ddf)
Dask-based JS load:
var ddf = nodeDaskCudf.getDataset('xyz'); // does not exist
var gdf = ddf.compute(); // does not exist
var arr = ddf.toArrow();
Near-term workaround via cudf + CUDA IPC
So I'm wondering: If we scoped down to python cudf <> node cudf, would this become doable, say via CUDA IPC?
Ex: Read direction
Python cudf pointer publish:
ddf = dask.dataframe....
gdf = client.compute(ddf)
handle : str = gdf.get_ipc_handle() # RMM / UCX basically do this already afaict
request.post(f'/nodejs/?handle={handle})
JS cudf readback:
function cb(handle) {
var gdf = cudf.fromIPCHandle(handle); // ???
var arr = gdf.toArrow();
}
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
This is a design question rather than a scoped implementation task; no files or tests are named. Start by checking the RMM/UCX CUDA IPC paths and the Python cudf-to-Node.js boundary described here, then define a minimal cudf IPC read path and its validation before tackling dask-cudf or published datasets.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, node.js, python
- Domain
- data, distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 18/100