rapidsai / rapidsai/node

[QUESTION] Sharing a Python cudf, or better, dask-cudf?

Open
#161 6 comments 0 reactions 0 assignees View on GitHub

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.