Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
254 commits
Select commit Hold shift + click to select a range
eed3f6d
fix issue
YigitElma Dec 25, 2024
b7e9435
update jac_chunk_size assignment
YigitElma Dec 25, 2024
ab7402e
try putting the grid accross devices
YigitElma Dec 25, 2024
2a7ab0d
fix issue with none constants
YigitElma Dec 25, 2024
afa349c
revert jnp.asarrays in grid
YigitElma Dec 25, 2024
04af924
replicate state vector on all deviecs
YigitElma Dec 25, 2024
aa4f9aa
allow variable number of gpus, copy some data to every device
YigitElma Dec 25, 2024
d676888
not put back to one device for testing
YigitElma Dec 25, 2024
d3d2663
handle num_device=1 case
YigitElma Dec 25, 2024
ec05139
update
YigitElma Dec 25, 2024
ea0b584
fix typo
YigitElma Dec 25, 2024
f353649
fix issue
YigitElma Dec 25, 2024
a7847df
it was a stupid mistake
YigitElma Dec 25, 2024
5c0f811
I don't know why this was changed
YigitElma Dec 25, 2024
c976088
put the copying inside the jitted part
YigitElma Dec 26, 2024
e15f7b2
shard A, Z and D too
YigitElma Dec 26, 2024
36cd4e1
fix
YigitElma Dec 26, 2024
7e82f6d
fix
YigitElma Dec 26, 2024
c963c1a
don't shard A
YigitElma Dec 26, 2024
ebd8dd1
clean up
YigitElma Dec 26, 2024
172d211
shard tangents too
YigitElma Dec 26, 2024
bd986be
shard v in different way
YigitElma Dec 26, 2024
163801e
don't cover set_device for coverage
YigitElma Dec 26, 2024
528c17c
Merge branch 'master' into yge/multigpu
YigitElma Jan 24, 2025
33b7c0b
add getter for parallel force objective
YigitElma Jan 29, 2025
35dd7b0
add notebook for testing
YigitElma Jan 29, 2025
e9c6e63
build and distribute objectives in getter
YigitElma Jan 29, 2025
9f19885
maybe use same grid res
YigitElma Jan 30, 2025
57ab00c
add build flag to getter
YigitElma Jan 30, 2025
b28bc4e
do not jit the ObjectiveFunction because jax doesn't allow it
YigitElma Jan 30, 2025
c8f4826
move extra stuff
YigitElma Feb 5, 2025
c3a4803
move whole objective on gpu
YigitElma Feb 5, 2025
b599b91
add pconcat function normal concatenate doesn't accepts arrays from d…
YigitElma Feb 6, 2025
05f705a
use more pconcat
YigitElma Feb 6, 2025
7c36f3a
test not passing constants
YigitElma Feb 6, 2025
66a4f95
try something
YigitElma Feb 6, 2025
293b6f0
try something
YigitElma Feb 6, 2025
5088395
instead replicate eq every device
YigitElma Feb 6, 2025
2c93a6a
try something
YigitElma Feb 6, 2025
84179d1
return replicated eq and use that otherwise outer eq and obj eq are n…
YigitElma Feb 6, 2025
1ee3452
reorder steps
YigitElma Feb 6, 2025
088324f
copy params to device before passing to function
YigitElma Feb 10, 2025
97c3dec
add device_id for forcebalance
YigitElma Feb 11, 2025
2b7e007
update notebook
YigitElma Feb 11, 2025
856a115
delete old line
YigitElma Feb 11, 2025
27d0c73
add testing cell
YigitElma Feb 11, 2025
3015545
clean up
YigitElma Feb 11, 2025
c8481e1
move params to device for printing too
YigitElma Feb 11, 2025
e9ae2da
Merge branch 'master' into yge/multigpu
YigitElma Feb 11, 2025
a800fd4
update notebook to plot grid
YigitElma Feb 11, 2025
69161c2
made it WORK! pass all params on given device, merge arrays on cpu or…
Feb 11, 2025
8b044eb
Merge remote-tracking branch 'refs/remotes/origin/yge/multigpu' into …
YigitElma Feb 12, 2025
23f6612
fix formatting after cluster
YigitElma Feb 12, 2025
1e1dfeb
fix some problems for testing and docs
YigitElma Feb 12, 2025
dc34d8e
Merge branch 'master' into yge/multigpu
YigitElma Feb 12, 2025
fd7638b
ignore multidevice for notebook tests, add additional warnings for gp…
YigitElma Feb 12, 2025
0a77b1a
add changelog, fix notebook tests
YigitElma Feb 12, 2025
637c1c2
Merge branch 'master' into yge/multigpu
dpanici Feb 12, 2025
306ae44
add warning for deriv_mode blocked and moving array to CPU
YigitElma Feb 12, 2025
f5dd1fa
add option to suppress cpu warning
YigitElma Feb 12, 2025
3326426
make upper case
YigitElma Feb 12, 2025
fef9a90
clean up set_device
YigitElma Feb 12, 2025
7e09142
nuch of clean up
YigitElma Feb 12, 2025
927e8aa
Merge branch 'master' into yge/multigpu
YigitElma Feb 12, 2025
c32d7b4
clean up, fix issues
YigitElma Feb 13, 2025
e2c0f77
fix set_device config['device'] problem
YigitElma Feb 13, 2025
2052633
update notebook and add device_id to all objectives
YigitElma Feb 13, 2025
0d4cc47
fix missing docs
YigitElma Feb 13, 2025
12ba4db
initial test for proximal
YigitElma Feb 13, 2025
f446804
add obj._device attr for cleaner device_put
YigitElma Feb 13, 2025
e5ed5cb
jit what you can, use pconcat
YigitElma Feb 13, 2025
6dd7611
fix device jit issue
YigitElma Feb 13, 2025
b3e961f
make _device None for single device cases
YigitElma Feb 13, 2025
bfb371c
ok now it is fixed
YigitElma Feb 13, 2025
b6b4337
Merge branch 'master' into yge/multigpu
YigitElma Feb 13, 2025
62e827e
implement multicpu, add a test, need to make it work tho
YigitElma Feb 14, 2025
315b4ed
improve test
YigitElma Feb 14, 2025
3edf125
Merge branch 'master' into yge/multigpu
YigitElma Feb 14, 2025
5053e4a
Merge branch 'master' into yge/multigpu
YigitElma Feb 25, 2025
865a2f8
fix formatting
YigitElma Feb 25, 2025
3b4f847
implement MPI to objective function,update tutorial
YigitElma Feb 25, 2025
5444157
add comments
YigitElma Feb 25, 2025
a47667e
remove redundant lines, fix changelog, update minor stuff
YigitElma Feb 25, 2025
482e8d9
automize obj device placement
YigitElma Feb 25, 2025
a08c348
Merge branch 'master' into yge/multigpu
YigitElma Feb 25, 2025
f75ae6a
add errors for context manager, it must be used by parallel objective…
YigitElma Feb 27, 2025
17c14ba
update proximal jvp methods, divide constraint and objective part, ad…
YigitElma Feb 27, 2025
a9366bf
fix for multiple node cases, each process will see only one CPU devic…
YigitElma Feb 27, 2025
7be080f
document more
YigitElma Feb 27, 2025
b37073f
document more, fix backend print
YigitElma Feb 27, 2025
6587728
Merge branch 'master' into yge/multigpu
YigitElma Feb 28, 2025
fc8438b
Merge branch 'master' into yge/multigpu
YigitElma Mar 4, 2025
cf7409c
Merge branch 'master' into yge/multigpu
YigitElma Mar 7, 2025
63bedfb
Merge branch 'master' into yge/multigpu
YigitElma May 6, 2025
6743bbb
Merge branch 'master' into yge/multigpu
YigitElma May 15, 2025
b4362b4
fixes after merge
YigitElma May 15, 2025
f76e986
first commit for multiple objective per rank change, need testing
YigitElma May 16, 2025
199b09f
fix blocked mode jac_chunk_size error, now if there is a different su…
YigitElma May 18, 2025
1cf917d
fixes after debugging multiple bjective per rank, update tutorials
YigitElma May 18, 2025
4446c7f
fix syntax error
YigitElma May 18, 2025
844ccea
fix the formatting of the notebook
YigitElma May 19, 2025
9f84878
Merge branch 'master' into yge/multigpu
YigitElma May 19, 2025
81e2377
update the memory allocator for GPU
YigitElma May 19, 2025
c67035d
fix the formatting for good
YigitElma May 19, 2025
e107635
remove repeated jnp.where instead add self._obj_per_rank
YigitElma May 20, 2025
9d20529
Merge branch 'master' into yge/multigpu
rahulgaur104 May 20, 2025
1ea7605
add CPU model name, they have to be the same anyways
YigitElma May 20, 2025
50522ba
has to be string
YigitElma May 20, 2025
ebd1af7
Update desc/__init__.py
YigitElma May 20, 2025
76de8db
Merge branch 'master' into yge/multigpu
YigitElma May 20, 2025
50e5239
make the CPU initialization automatic
YigitElma May 21, 2025
464a115
add error for 1 device case with MPI, fix syntax
YigitElma May 21, 2025
834e9cf
fixes for multiple CPU data transfer
YigitElma May 21, 2025
65ac31f
don't try to initialize twice
YigitElma May 21, 2025
d62a832
test
YigitElma May 21, 2025
6b5e1f2
test
YigitElma May 21, 2025
8f30c38
test
YigitElma May 21, 2025
023df01
add distributed initilize back, update error for empty ranks
YigitElma May 21, 2025
a8027a3
distributed initialize will require bunch of additional code since it…
YigitElma May 22, 2025
646e037
fix error check
YigitElma May 22, 2025
b14571a
gather cpu infor ranks by MPI
YigitElma May 22, 2025
e93d0c9
add notes to the backend print
YigitElma May 22, 2025
17c8bf7
Merge branch 'master' into yge/multigpu
YigitElma May 30, 2025
85932c4
Merge branch 'master' into yge/multigpu
dpanici Jun 3, 2025
c6dc38c
Merge branch 'master' into yge/multigpu
YigitElma Jun 3, 2025
8c951a7
fix the jax.local_devices error for gpu backend
YigitElma Jun 3, 2025
4b018f7
fix the scripts os path
YigitElma Jun 3, 2025
857c43c
add the script with nvtx
YigitElma Jun 3, 2025
28c05b0
add force balance nvtx script, make the nvtx scripts more demanding
YigitElma Jun 3, 2025
d5f9efa
for hackathon purposes add nvtx flags, add 2 node script
YigitElma Jun 4, 2025
c68c1c7
solve concatenation bug for scalar and non-sclaar objective grad/jaco…
YigitElma Jun 4, 2025
2920db2
Merge branch 'master' into yge/multigpu
YigitElma Jun 9, 2025
cf6074b
change hstack to vstack to fix concat error
dpanici Jun 10, 2025
dc50352
add more and more nvtx flags for stages
YigitElma Jun 12, 2025
bd5aa6a
fix some of the annotations
YigitElma Jun 12, 2025
b86d98a
add annotate to unpacking
YigitElma Jun 12, 2025
85298cf
jit whatever you can, works on cpu, hopefull will on GPUs. unpack_sta…
YigitElma Jun 12, 2025
eb4e844
jit the functions on the proper device
YigitElma Jun 12, 2025
5fbef6e
move the jitted function out of self to prevent recompilation for com…
YigitElma Jun 12, 2025
161cf2d
add one more annotate
YigitElma Jun 12, 2025
8172f8c
fix the jvp jit
YigitElma Jun 12, 2025
0322f09
remove numpy calls to use cuda aware mpi
YigitElma Jun 12, 2025
57f13d9
jit the proximal too, re add the numpy calls until we figure out how …
YigitElma Jun 12, 2025
5b15199
add annotations and use jit for proximal everywhere
YigitElma Jun 12, 2025
57cb64a
add more flags, form lists outside
YigitElma Jun 12, 2025
85acda1
fix block_until_ready
YigitElma Jun 12, 2025
9951c57
no mpi benchmark case
YigitElma Jun 12, 2025
687e3af
Merge branch 'master' into yge/multigpu
YigitElma Jun 13, 2025
fe96f2e
increase maxiter
YigitElma Jun 13, 2025
8fc2769
remove constants from args
YigitElma Jun 13, 2025
c802dd1
Merge branch 'master' into yge/multigpu
YigitElma Jun 30, 2025
63f7b5d
remove jit_with_device, remove some debugging
YigitElma Jun 30, 2025
8fa1771
update changelog
YigitElma Jun 30, 2025
16adfc9
update tutorials
YigitElma Jun 30, 2025
87b3e9d
Merge branch 'master' into yge/multigpu
YigitElma Jul 1, 2025
7ea15d0
Merge branch 'master' into yge/multigpu
YigitElma Aug 19, 2025
9bbe8b3
clean debugging code
YigitElma Aug 19, 2025
f7eaa4a
remove debug utility function get_parallel_forcebalance, it wasn't me…
YigitElma Aug 19, 2025
d8c346c
Merge branch 'master' into yge/multigpu
YigitElma Aug 19, 2025
b5713d8
Update desc/objectives/objective_funs.py
YigitElma Aug 19, 2025
12acdf8
fix static args
YigitElma Aug 19, 2025
90927c0
add initial attempt for mpi tests
YigitElma Aug 19, 2025
566238d
I don't know why this worked??? add some extra tests
YigitElma Aug 19, 2025
589cd4a
Merge branch 'master' into yge/multigpu
YigitElma Aug 19, 2025
2258419
clean up redundant jits
YigitElma Aug 20, 2025
26eb98a
fix the failing test, had to build it before and used correct method …
YigitElma Aug 20, 2025
5ac14ac
add back the space
YigitElma Aug 20, 2025
e20d259
Merge branch 'master' into yge/multigpu
YigitElma Aug 20, 2025
85283e7
I don't know why I need to add _static_attrs to _static_attrs only fo…
YigitElma Aug 20, 2025
c08ca9d
make the mpi test work
YigitElma Aug 20, 2025
3e9ebca
remove redundant function
YigitElma Aug 20, 2025
cfe9329
add more tests, remove some no-coverage commands
YigitElma Aug 20, 2025
054d5b2
add compute and derivatove tests, some clean-up
YigitElma Aug 20, 2025
b1a5412
Merge remote-tracking branch 'origin/master' into yge/multigpu
YigitElma Aug 25, 2025
6de096c
fix the stupid bug, another reason why #1728 is necessary
YigitElma Aug 25, 2025
b3abedb
add tests, check errors/warnings
YigitElma Aug 25, 2025
eeb8412
try to re-use code as much as possible, add oversubscribe to prevent …
YigitElma Aug 25, 2025
dd711c9
fix tests
YigitElma Aug 25, 2025
a6da955
try to fix test
YigitElma Aug 25, 2025
c21896a
try to fix test
YigitElma Aug 25, 2025
345de47
Merge branch 'master' into yge/multigpu
YigitElma Aug 25, 2025
89399bf
write coverage to separate files to prevent error
YigitElma Aug 25, 2025
6c33270
update changelog
YigitElma Aug 25, 2025
6c71205
address my own comments
YigitElma Aug 26, 2025
974f629
remove redundant change to make reviewing easier
YigitElma Aug 26, 2025
0d6aee4
use Bcast for arrays instead of bcast which uses pickling and allegdl…
YigitElma Aug 26, 2025
b78fc8e
seems like FixParameters is changing dim_x? The tests that use FixPar…
YigitElma Aug 28, 2025
d1fea4f
Merge remote-tracking branch 'origin/master' into yge/multigpu
YigitElma Aug 28, 2025
26329d1
update changelog and docs
YigitElma Aug 28, 2025
b6ea6c9
use Gatherv for passing Jacobian and compute data
YigitElma Aug 30, 2025
8b08ed9
resolve the scrambled array issue, add test for Proximal derivatives
YigitElma Aug 31, 2025
e6698c8
remove pconcat since it is not needed anymore
YigitElma Aug 31, 2025
2599588
fix dimensional issue, add linear constraint projection test too
YigitElma Aug 31, 2025
0acc8a6
trying to fix CUDA aware MPI
YigitElma Sep 2, 2025
d067a5c
trying to fix CUDA aware MPI, add block until ready
YigitElma Sep 2, 2025
349f283
make the device transfer based on desc_config[mpi-cuda] which is Fals…
YigitElma Sep 2, 2025
09b2455
add comment
YigitElma Sep 2, 2025
8c049f2
remove some block until ready s
YigitElma Sep 2, 2025
10c5740
Merge branch 'master' into yge/multigpu
YigitElma Sep 2, 2025
c56b196
fix the unintended copy by returning the new stuff and overwriting th…
YigitElma Sep 3, 2025
b04523c
Merge branch 'master' into yge/multigpu
dpanici Sep 3, 2025
8a54002
Merge branch 'master' into yge/multigpu
YigitElma Sep 4, 2025
d043d6b
Merge branch 'master' into yge/multigpu
YigitElma Oct 16, 2025
8624a98
Merge branch 'master' into yge/multigpu
YigitElma Oct 28, 2025
ebd432d
Merge branch 'master' into yge/multigpu
YigitElma Dec 17, 2025
6759476
Merge branch 'master' into yge/multigpu
YigitElma Feb 3, 2026
3aae658
gather arrays on CPU, need to add a size check later
YigitElma Feb 3, 2026
493b96b
add size check for the transfer
YigitElma Feb 3, 2026
36244aa
resurrect memory warning
YigitElma Feb 6, 2026
601a82e
fix the proximal grad problem, must implement proper vjp later
YigitElma Feb 9, 2026
d0a68e2
Merge remote-tracking branch 'origin/master' into yge/multigpu
YigitElma Feb 9, 2026
5c7a749
add some possible fix to memory issue, not pleasant yet
YigitElma Feb 9, 2026
d888d9d
ok, since J is commited to a device, computation should follow where …
YigitElma Feb 9, 2026
7969a96
reduce xtol, CI runner has a different processor which fails, cannot …
YigitElma Feb 10, 2026
bd5a9df
Merge branch 'master' into yge/multigpu
ddudt Mar 13, 2026
8c2d69b
Merge branch 'master' into yge/multigpu
ddudt Mar 31, 2026
8b56a78
Merge branch 'master' into yge/multigpu
ddudt Mar 31, 2026
9076875
Merge branch 'master' into yge/multigpu
YigitElma Apr 9, 2026
38b274b
Merge branch 'master' into yge/multigpu
ddudt Apr 10, 2026
1435648
add device_id to PlasmaCoilSetMinDistance
daniel-dudt Apr 10, 2026
9c5fb2d
Merge branch 'master' into yge/multigpu
ddudt Apr 13, 2026
f5a6a76
resolve the todo, do not allow linear constraints to have different d…
YigitElma Apr 14, 2026
7fa6b93
remove redundant changes
YigitElma Apr 14, 2026
fb56268
Merge branch 'master' into yge/multigpu
YigitElma Apr 20, 2026
73ee624
Merge branch 'master' into yge/multigpu
YigitElma May 3, 2026
179487c
formatting after merge conflict
YigitElma May 3, 2026
c09ff3c
fix test
YigitElma May 4, 2026
90e5324
Merge remote-tracking branch 'origin/master' into yge/multigpu
YigitElma May 4, 2026
23cee26
update pytest marks
YigitElma May 4, 2026
40b5e9e
remove some unnecessary changes
YigitElma May 5, 2026
4c1d99e
clean up comments
daniel-dudt May 7, 2026
e6d3824
Merge branch 'master' into yge/multigpu
ddudt May 18, 2026
09e1991
remove indent
YigitElma May 19, 2026
80d2d29
allow array-like inputs for rank_per_objective
YigitElma May 19, 2026
5b46eec
update tutorial
YigitElma May 19, 2026
85e47f0
update the test to compare actual optimization results
YigitElma May 19, 2026
396a736
update the tutorial
YigitElma May 19, 2026
321ee3b
update docstring for set_device
YigitElma May 19, 2026
0f860c9
Merge branch 'master' into yge/multigpu
YigitElma May 19, 2026
bb7f57b
Update desc/objectives/objective_funs.py
YigitElma May 21, 2026
edabdf1
Update desc/objectives/objective_funs.py
YigitElma May 21, 2026
42987a1
Update desc/objectives/objective_funs.py
YigitElma May 21, 2026
9abc3c7
fix constants issue
YigitElma May 25, 2026
b928d91
clean-up multidevice set_device and print backend, update some error …
YigitElma May 25, 2026
3318793
update error/warning messages, update notebook
YigitElma May 26, 2026
26ee6e5
Merge branch 'master' into yge/multigpu
ddudt Jun 1, 2026
a652105
Merge branch 'master' into yge/multigpu
ddudt Jun 1, 2026
40268f1
update the message in test
YigitElma Jun 1, 2026
333557d
Merge branch 'master' into yge/multigpu
daniel-dudt Jun 23, 2026
8dc5792
Merge branch 'master' into yge/multigpu
YigitElma Jul 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 141 additions & 0 deletions .github/workflows/mpi_tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
name: MPI tests

on:
push:
branches:
- master
- dev
pull_request:
branches:
- master
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
mpi_tests:
runs-on: ubuntu-latest
env:
GH_TOKEN: ${{ github.token }}

strategy:
matrix:
python-version: ["3.12"]

steps:
- uses: actions/checkout@v4

- name: Filter changes
id: changes
uses: dorny/paths-filter@v3
with:
filters: |
has_changes:
- 'desc/**'
- 'tests/test_mpi*'
- 'requirements.txt'
- 'devtools/dev-requirements.txt'
- 'setup.cfg'
- '.github/workflows/mpi_tests.yml'

- name: Check for relevant changes
id: check_changes
run: echo "has_changes=${{ !contains(github.event.pull_request.labels.*.name, 'only-docs-comments') && steps.changes.outputs.has_changes }}" >> $GITHUB_ENV

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Check full Python version
run: |
python --version
python_version=$(python --version 2>&1 | cut -d' ' -f2)
echo "Python version: $python_version"
echo "version=$python_version" >> $GITHUB_ENV

- name: Install MPI (OpenMPI + compiler)
if: env.has_changes == 'true'
run: |
sudo apt-get update
sudo apt-get install -y libopenmpi-dev openmpi-bin

- name: Set up virtual environment
run: |
python -m venv .venv-${{ env.version }}
source .venv-${{ env.version }}/bin/activate
python -m pip install --upgrade pip
pip install -r devtools/dev-requirements.txt
pip install matplotlib==3.9.2
# install mpi4py after OpenMPI is available
pip install mpi4py

- name: Action Details
if: env.has_changes == 'true'
run: |
source .venv-${{ env.version }}/bin/activate
which python
python --version
mpirun --version
pip list

- name: Test with pytest (MPI setup)
if: env.has_changes == 'true'
run: |
source .venv-${{ env.version }}/bin/activate
python -m pytest -v -m mpi_setup\
--durations=0 \
--cov-report xml:cov.xml \
--cov-config=setup.cfg \
--cov=desc/ \
--db ./prof.db

- name: Test with pytest (MPI run)
if: env.has_changes == 'true'
run: |
source .venv-${{ env.version }}/bin/activate
# ensure each MPI rank writes to a different coverage file
mpirun -n 3 --oversubscribe \
bash -c 'COVERAGE_FILE=.coverage.$OMPI_COMM_WORLD_RANK \
python -m pytest -v -m mpi_run \
--durations=0 \
--cov=desc/ \
--cov-config=setup.cfg \
--cov-append \
--cov-report='

- name: Run MPI tutorials
if: env.has_changes == 'true'
run: |
source .venv-${{ env.version }}/bin/activate
mpirun -n 2 --oversubscribe python docs/notebooks/tutorials/mpi-tutorials/mpi-eq-solve.py
mpirun -n 2 --oversubscribe python docs/notebooks/tutorials/mpi-tutorials/mpi-proximal.py

- name: Combine coverage files
if: always() && env.has_changes == 'true'
run: |
source .venv-${{ env.version }}/bin/activate
coverage combine
coverage xml -o cov.xml

- name: save coverage file
if: always() && env.has_changes == 'true'
uses: actions/upload-artifact@v4
with:
name: mpi_test_artifact-${{ matrix.python-version }}
path: |
./cov.xml
./mpl_results.html
./prof.db

- name: Upload coverage
if: env.has_changes == 'true'
id : codecov
uses: codecov/codecov-action@v5
with:
name: codecov-umbrella
files: ./cov.xml
fail_ci_if_error: true
verbose: true
5 changes: 2 additions & 3 deletions .github/workflows/notebook_tests.yml
Comment thread
YigitElma marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,12 @@ concurrency:

jobs:
notebook_tests:

runs-on: ubuntu-latest
env:
GH_TOKEN: ${{ github.token }}
strategy:
matrix:
python-version: ['3.10']
python-version: ["3.10"]
group: [1, 2, 3]

steps:
Expand All @@ -45,7 +44,6 @@ jobs:
id: check_changes
run: echo "has_changes=${{ !contains(github.event.pull_request.labels.*.name, 'only-docs-comments') && steps.changes.outputs.has_changes }}" >> $GITHUB_ENV


- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
Expand Down Expand Up @@ -94,6 +92,7 @@ jobs:
pytest -v --nbmake "./docs/notebooks" \
--nbmake-timeout=2000 \
--ignore=./docs/notebooks/zernike_eval.ipynb \
--ignore=./docs/notebooks/tutorials/multi_device.ipynb \
--splits 3 \
--group ${{ matrix.group }} \
--splitting-algorithm least_duration
6 changes: 5 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ New Features
- Adds ``desc.objectives.DeflationOperator``, a new objective class which can be used to apply deflation techniques to equilibrium and optimization problems to find multiple local minima or multiple solutions from a single initial point, either by wrapping an existing ``desc.objectives._Objective`` object or by including as an additional penalty or constraint. Also adds a tutorial showing this functionality.
- Sub-objectives of an `ObjectiveFunction` can now have different `use_jit` values than the `ObjectiveFunction`. These objectives have to be built before building the `ObjectiveFunction`.
- Adds ``num_neighbors`` parameter to ``CoilSetMinDistance`` that limits the pairwise distance computation to the nearest neighbors per coil, reducing memory useage for large coilsets.
- Adds initial support for multi-device optimization with MPI. This allows to compute derivatives and costs on multiple devices (GPUs/CPUs), and to split memory usage during these operations across devices. See the [documentation](https://desc-docs.readthedocs.io/en/stable/notebooks/tutorials/multi_device.html) for details. Couple important notes:
- MPI is not a default dependency of DESC, so, to use MPI functionality, the users should verify their MPI installation themselves.
- Using MPI is recommended only for the cases where you get out-of-memory error. If your problem fits to single GPU memory, it's unlikely that MPI will give speed improvement.
- MPI is not implemented for matrix decompositions (i.e. QR/SVD/Cholesky) which default optimizer ``lsq-exact`` uses. For the cases where Jacobian doesn't fit to GPU memory, matrix decompositions will be performed on CPU and will be slow. Feel free to open a PR, if you have knowledge on parallel QR/SVD or Cholesky.
- CUDA-aware MPI is not supported yet.
- Method to plot frequency spectrum of inverse stream map in field line coordinates ``Bounce2D.plot_angle_spectrum``.
- Method to compute bounce integrals in batches is now added to the public API ``Bounce2D.batch``.
- Initiated deprecation of ``Bounce2D.compute_fieldline_length`` in favor of ``eq.compute("V_psi")``.
Expand Down Expand Up @@ -128,7 +133,6 @@ New Features
- Able to set weights to zero, excluding certain coils from the objective.



Bug Fixes

- Fixes straight field line equilibrium conversion, see #1880
Expand Down
Loading
Loading