Skip to content

Feat: proximal module#200

Open
mrava87 wants to merge 39 commits into
PyLops:mainfrom
mrava87:feat-prox
Open

Feat: proximal module#200
mrava87 wants to merge 39 commits into
PyLops:mainfrom
mrava87:feat-prox

Conversation

@mrava87

@mrava87 mrava87 commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

This PR is a starting point of an effort to support distributed proximal operators and solvers from pyproximal in pylops-mpi

To begin with the following operators/solvers are supported:

  • any separable proximal operator (i.e., where prox is taken element-wise) via simple wrapping on the pyproximal operator into a MPIProxOperator
  • A custom distribured proximal operator for L2 norm named MPIL2 which leverages distributed stacking and solvers to solve augumented systems of equations in the prox operator.
  • ProximalGradient and ADMML2 solvers

These already enable the solution of 2 typical use-cases of convex optimization:

  • sparsity promoting inversion: added to reflectivity tutorial
  • TV-reg inversion: added to poststack tutorial - note that for this to be possible, I needed to extend StackedDistributedArray to operate with nested StackedDistributedArray. This will be handled separately in Feat: allow nested stacked arrays #201 and then merged back into here.

However, it is intentional that the operators/solvers implemented here do not always match those in pyproximal with some features currently missing, namely:

TODO:

  • Improve description of separability in MPIProxOperator docstrings
  • Add nccl proxsolver tests
  • Add sparse inversion to reflectivity GPU tutorials

@mrava87 mrava87 self-assigned this Jul 6, 2026
@mrava87

mrava87 commented Jul 20, 2026

Copy link
Copy Markdown
Contributor Author

@rohanbabbar04 I have worked for quite a bit on this new (pretty big) feature... basically I am aiming to add a module called proximal which will implement a distributed version of pyproximal. However, I will be taking it bit by bit, and this is the first PR with minimal components required to be already able to solve a subset of the problem we tackle in pyproximal end-to-end.

It would be great if you could go through and provide your review 😄

@mrava87
mrava87 marked this pull request as ready for review July 20, 2026 22:31
@mrava87
mrava87 requested a review from rohanbabbar04 July 20, 2026 22:32
@rohanbabbar04

Copy link
Copy Markdown
Collaborator

Thanks @mrava87, I will take a look at this in a couple of days.

@mrava87

mrava87 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor Author

Btw I noticed something strange lately.. in some PRs sometimes one action fails just at the start of the tests... but then if I retrigger them they eventually succeed... an example just occurred in this PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants