Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Reductions do not properly support unstructured distributions

Open
#659 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
42/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
python

Research direction

Run the provided IPython.parallel reproduction with dacluster start -n4, then trace distarray/globalapi/distarray.py through _reduce and distarray/globalapi/maps.py through Distribution.reduce, get_dim_data_per_rank, and UnstructuredMap.get_dimdicts. Done means darr.sum(axis=1) succeeds and the input unstructured indices are propagated to the output distribution.

Written by the indexing model from the issue text.

Description

This reproduces the problem

# Using IPython.parallel: 'dacluster start -n4' before running.
import numpy as np
from distarray.globalapi import Context
from distarray.globalapi.maps import Distribution, NoDistMap, UnstructuredMap

nparr = np.random.rand(4, 5)

context = Context()
m0 = UnstructuredMap(4, 3, [[0], [1], [2, 3]])
m1 = NoDistMap(5, 1)
distribution = Distribution.from_maps(
    context,
    maps=[m0, m1],
    targets=[0, 1, 3]
)

darr = context.fromarray(nparr, distribution)
from IPython.core.debugger import Tracer; Tracer()()
darr.sum(axis=1)  # boom!

This results in

Traceback (most recent call last):
  File "failure.py", line 19, in <module>
    darr.sum(axis=1)  # boom!
  File "/Users/cfarrow/projects/distarray/distarray/globalapi/distarray.py", line 383, in sum
    return self._reduce('sum_reducer', axis, dtype, out)
  File "/Users/cfarrow/projects/distarray/distarray/globalapi/distarray.py", line 362, in _reduce
    ddpr = out_dist.get_dim_data_per_rank()
  File "/Users/cfarrow/projects/distarray/distarray/globalapi/maps.py", line 830, in get_dim_data_per_rank
    dds = [enumerate(m.get_dimdicts()) for m in self.maps]
  File "/Users/cfarrow/projects/distarray/distarray/globalapi/maps.py", line 510, in get_dimdicts
    raise ValueError()
ValueError

Distribution.reduce does not appear to consider UnstructuredMap, which leads to the indices used by the input UnstructuredMap to not be propagated to the output UnstructuredMap.

Dominant language
Python
Stars
5
Forks
1
PR merge metrics
No merged PRs in 30d

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.

More from enthought/distarray

All issues in enthought/distarray

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.