Hi NVIDIA / RAPIDS Developer Community,
I raised a RAPIDS cuGraph GitHub issue asking for clarification on edge-weight behavior in Dask / multi-GPU cuGraph:
opened 11:02AM - 09 Jul 26 UTC
## Summary
I would like to clarify edge-weight support in Dask / multi-GPU cuGr… aph.
From the documentation, Dask graph construction appears to support weighted edge lists through `from_dask_cudf_edgelist()` using `edge_attr` or `weight`.
However, edge-weight behavior seems to be algorithm-dependent. Some distributed algorithms appear to support or rely on edge weights, while others document that edge weights are not used.
## Documentation references
The Dask graph-construction API documents arguments such as:
```python
Graph.from_dask_cudf_edgelist(
input_ddf,
source="source",
destination="destination",
edge_attr=None,
weight=None,
edge_id=None,
edge_type=None,
)
```
The docs say `edge_attr` can be a single string representing the weight column, or a list containing `[weight, edge_id, edge_type]`. They also provide a separate `weight` parameter.
For Dask PageRank, the documentation says the graph should contain connectivity information as a Dask cuDF edge-list dataframe, but edge weights are not used for this algorithm.
For Dask SSSP, the documentation refers to `cutoff` as the maximum edge-weight sum considered by the algorithm, and examples build a Dask graph using a weighted edge column such as:
```python
dg.from_dask_cudf_edgelist(
ddf,
source="src",
destination="dst",
edge_attr="value",
)
```
and then run:
```python
df = dcg.sssp(dg, 0)
```
## Question / concern
Can the cuGraph team clarify the intended support matrix for edge weights in Dask / multi-GPU cuGraph?
Specifically:
1. Are edge weights fully preserved when constructing a Dask cuGraph graph using `from_dask_cudf_edgelist()`?
2. Which Dask cuGraph algorithms are expected to use edge weights?
3. Which Dask cuGraph algorithms intentionally ignore edge weights?
4. Is there an official weighted-edge support matrix for single-GPU vs Dask / multi-GPU algorithms?
5. Should documentation explicitly call out weighted vs unweighted behavior per algorithm?
## Expected behavior
If a Dask graph is constructed with an edge-weight column, users should be able to clearly know whether a given distributed algorithm:
* uses the provided edge weights,
* ignores the edge weights by design, or
* does not support weighted execution.
## Suggested improvement
It would be useful to add either:
1. a weighted-edge support matrix in the docs, or
2. a short note in each Dask algorithm page saying whether edge weights are used.
It would also help to have small test examples comparing:
* single-GPU weighted behavior,
* Dask / multi-GPU weighted behavior,
* algorithms that intentionally ignore edge weights.
## Why this matters
For fraud, AML, payments, and graph-risk use cases, edge weights often represent transaction amount, risk score, frequency, or relationship strength. In multi-GPU graph analytics, users need to know whether those weights are used consistently across distributed algorithms.
I am also building a small CUDA/cuGraph regression harness to test weighted-edge behavior across single-GPU and Dask/multi-GPU execution, and I can contribute a minimal reproducible example if useful.
Thanks for any clarification.
The main question is whether weighted-edge behavior in Dask cuGraph is:
fully supported at graph-construction level,
algorithm-dependent at execution level, or
unsupported for specific distributed algorithms.
From the documentation, Dask graph construction appears to support weighted edge lists through from_dask_cudf_edgelist() using edge_attr or weight.
However, algorithm-level behavior appears to vary. Some algorithms, such as weighted SSSP, appear to use edge weights, while other distributed algorithms may ignore weights by design.
This matters for graph-AI use cases such as:
fraud detection
AML
mule-account detection
payment-risk analytics
transaction-network analysis
In these use cases, edge weights often represent transaction amount, frequency, risk score, or relationship strength.
I would appreciate guidance from RAPIDS/cuGraph users or maintainers on:
Whether edge weights are fully preserved in Dask cuGraph graph construction.
Which Dask / multi-GPU cuGraph algorithms use edge weights.
Which algorithms intentionally ignore edge weights.
Whether there is an official weighted-edge support matrix for single-GPU vs Dask / multi-GPU cuGraph.
Whether this would be useful as a small regression/documentation test case.
GitHub issue:
opened 11:02AM - 09 Jul 26 UTC
## Summary
I would like to clarify edge-weight support in Dask / multi-GPU cuGr… aph.
From the documentation, Dask graph construction appears to support weighted edge lists through `from_dask_cudf_edgelist()` using `edge_attr` or `weight`.
However, edge-weight behavior seems to be algorithm-dependent. Some distributed algorithms appear to support or rely on edge weights, while others document that edge weights are not used.
## Documentation references
The Dask graph-construction API documents arguments such as:
```python
Graph.from_dask_cudf_edgelist(
input_ddf,
source="source",
destination="destination",
edge_attr=None,
weight=None,
edge_id=None,
edge_type=None,
)
```
The docs say `edge_attr` can be a single string representing the weight column, or a list containing `[weight, edge_id, edge_type]`. They also provide a separate `weight` parameter.
For Dask PageRank, the documentation says the graph should contain connectivity information as a Dask cuDF edge-list dataframe, but edge weights are not used for this algorithm.
For Dask SSSP, the documentation refers to `cutoff` as the maximum edge-weight sum considered by the algorithm, and examples build a Dask graph using a weighted edge column such as:
```python
dg.from_dask_cudf_edgelist(
ddf,
source="src",
destination="dst",
edge_attr="value",
)
```
and then run:
```python
df = dcg.sssp(dg, 0)
```
## Question / concern
Can the cuGraph team clarify the intended support matrix for edge weights in Dask / multi-GPU cuGraph?
Specifically:
1. Are edge weights fully preserved when constructing a Dask cuGraph graph using `from_dask_cudf_edgelist()`?
2. Which Dask cuGraph algorithms are expected to use edge weights?
3. Which Dask cuGraph algorithms intentionally ignore edge weights?
4. Is there an official weighted-edge support matrix for single-GPU vs Dask / multi-GPU algorithms?
5. Should documentation explicitly call out weighted vs unweighted behavior per algorithm?
## Expected behavior
If a Dask graph is constructed with an edge-weight column, users should be able to clearly know whether a given distributed algorithm:
* uses the provided edge weights,
* ignores the edge weights by design, or
* does not support weighted execution.
## Suggested improvement
It would be useful to add either:
1. a weighted-edge support matrix in the docs, or
2. a short note in each Dask algorithm page saying whether edge weights are used.
It would also help to have small test examples comparing:
* single-GPU weighted behavior,
* Dask / multi-GPU weighted behavior,
* algorithms that intentionally ignore edge weights.
## Why this matters
For fraud, AML, payments, and graph-risk use cases, edge weights often represent transaction amount, risk score, frequency, or relationship strength. In multi-GPU graph analytics, users need to know whether those weights are used consistently across distributed algorithms.
I am also building a small CUDA/cuGraph regression harness to test weighted-edge behavior across single-GPU and Dask/multi-GPU execution, and I can contribute a minimal reproducible example if useful.
Thanks for any clarification.
Thanks for any clarification or pointers.