Skip to content

Commit 52e45af

Browse files
authored
Merge pull request #1095 from Libensemble/develop
Release/v 1.0.0
2 parents 0ffcc5f + 7607d2c commit 52e45af

File tree

191 files changed

+6057
-4054
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

191 files changed

+6057
-4054
lines changed

.flake8

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ max-line-length = 120
44
ignore =
55
# E203 is not PEP 8 compliant. https://github.com/PyCQA/pycodestyle/issues/373
66
E203
7-
# Not worrying about spaces around arithmetic operations
8-
E226
97
# Linebreaks before/after unary operators are okay
108
W503, W504
119
exclude =
@@ -27,28 +25,23 @@ per-file-ignores =
2725
# systems/versions of MPI:
2826
libensemble/tests/standalone_tests/mpi_launch_test/create_mpi_jobs.py:E402
2927

30-
# Similar reasoning for configuring mpi4py
31-
libensemble/tests/unit_tests/test_executor.py:E402
32-
3328
# Matplotlib needs something set before import
3429
scripts/*:E402
3530

3631
# Ignoring linelength in APOSMM
3732
libensemble/gen_funcs/*aposmm.py:E501
3833
examples/gen_funcs/*aposmm.py:E501
34+
libensemble/tests/functionality_tests/test_mpi_runners.py:E501
35+
libensemble/tests/functionality_tests/test_mpi_runners_zrw_supernode_uneven.py:E501
3936

4037
# Need to set something before the APOSMM import
4138
libensemble/tests/scaling_tests/warpx/run_libensemble_on_warpx.py:E402
4239
examples/calling_scripts/run_libensemble_on_warpx.py:E402
43-
libensemble/gen_funcs/persistent_aposmm.py:E402, E501
4440
libensemble/tests/regression_tests/test_persistent_aposmm*:E402
4541
libensemble/tests/regression_tests/test_persistent_gp_multitask_ax.py:E402
4642
libensemble/tests/regression_tests/test_ytopt_heffte.py:E402
4743
libensemble/tests/functionality_tests/test_uniform_sampling_then_persistent_localopt_runs.py:E402
4844
libensemble/tests/functionality_tests/test_active_persistent_worker_abort.py:E402
49-
libensemble/tests/functionality_tests/test_mpi_runners.py:E501
50-
libensemble/tests/functionality_tests/test_mpi_runners_zrw_supernode_uneven.py:E501
51-
libensemble/tests/deprecated_tests/test_old_aposmm*:E402
5245
libensemble/tests/unit_tests/test_persistent_aposmm.py:E402
5346

5447
# Allow undefined name '__version__'

.github/dependabot.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# .github/dependabot.yml
2+
# Dependabot configuration file
3+
# See
4+
# https://docs.github.com/en/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/keeping-your-actions-up-to-date-with-dependabot
5+
# https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/about-dependabot-version-updates
6+
7+
version: 2
8+
9+
updates:
10+
- package-ecosystem: github-actions
11+
directory: /
12+
schedule:
13+
interval: daily
14+
15+
- package-ecosystem: pip
16+
directory: /
17+
schedule:
18+
interval: daily
19+
20+
- package-ecosystem: gitsubmodule
21+
directory: /
22+
schedule:
23+
interval: daily

.github/workflows/ci.yml

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,10 @@ jobs:
3030
python-version: "3.10"
3131
mpi-version: "mpich"
3232
comms-type: t
33-
# - os: ubuntu-latest
34-
# mpi-version: "openmpi"
35-
# python-version: "3.10"
36-
# comms-type: l
37-
# - os: windows-latest
38-
# python-version: "3.10"
39-
# comms-type: l
40-
# mpi-version: "msmpi"
41-
# - os: windows-latest
42-
# python-version: "3.10"
43-
# comms-type: m
44-
# mpi-version: "msmpi"
45-
33+
- os: ubuntu-latest
34+
mpi-version: "openmpi"
35+
python-version: "3.10"
36+
comms-type: l
4637
env:
4738
HYDRA_LAUNCHER: "fork"
4839
TERM: xterm-256color
@@ -113,13 +104,12 @@ jobs:
113104
# run: pip install mpi4py
114105

115106
- name: Install mpi4py and MPI from conda
116-
if: matrix.python-version != '3.10' && matrix.os != 'windows-latest'
107+
if: (matrix.python-version != '3.10' && matrix.os == 'ubuntu-latest') || matrix.os == 'macos-latest'
117108
run: |
118-
conda install ${{ matrix.mpi-version }}
119-
conda install mpi4py
109+
conda install mpi4py ${{ matrix.mpi-version }}
120110
121111
- name: Install mpi4py from pip, MPI from conda
122-
if: matrix.python-version == '3.10' && matrix.os != 'windows-latest'
112+
if: matrix.python-version == '3.10' && matrix.os == 'ubuntu-latest'
123113
run: |
124114
conda install ${{ matrix.mpi-version }}
125115
pip install mpi4py
@@ -135,7 +125,7 @@ jobs:
135125
- name: Install surmise
136126
if: matrix.os != 'macos-latest' && steps.cache.outputs.cache-hit != 'true'
137127
run: |
138-
pip install --upgrade git+https://github.com/surmising/surmise.git@develop
128+
pip install --upgrade git+https://github.com/bandframework/surmise.git@develop
139129
140130
- name: Build ytopt and dependencies
141131
if: matrix.python-version != '3.11' && matrix.os != 'windows-latest' && matrix.os != 'macos-latest'
@@ -222,11 +212,6 @@ jobs:
222212
pip install -e .
223213
flake8 libensemble
224214
225-
- name: Activate API unit test if using mpich
226-
if: matrix.mpi-version == 'mpich'
227-
run: |
228-
mv libensemble/tests/unit_tests/mpich-only_test_ensemble.py libensemble/tests/unit_tests/test_ensemble.py
229-
230215
- name: Remove ytopt-heffte test on Python 3.11 (easy way)
231216
if: matrix.python-version == '3.11'
232217
run: |

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
repos:
22
- repo: https://github.com/pre-commit/pre-commit-hooks
3-
rev: v4.3.0
3+
rev: v4.4.0
44
hooks:
55
- id: end-of-file-fixer
66
exclude: ^(.*\.xml|.*\.svg)$

.readthedocs.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,3 @@ python:
1818
path: .
1919
extra_requirements:
2020
- docs
21-
system_packages: false

.spell

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ apoints
44
numer
55
hist
66
inout
7+
slac

.wci.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ name: libEnsemble
22
icon: https://raw.githubusercontent.com/Libensemble/libensemble/main/docs/images/libE_logo.png
33
headline: Tool for running dynamic ensembles.
44
description: |
5-
libEnsemble is a Python toolkit for coordinating workflows of asynchronous
6-
and dynamic ensembles of calculations.
5+
libEnsemble is a Python toolkit for running dynamic ensembles of calculations.
76
87
Users write generator and simulator functions to express their ensembles.
98
A library of example functions is available which can be modified as needed.
@@ -17,8 +16,8 @@ description: |
1716
language: Python
1817

1918
release:
20-
version: 0.10.2
21-
date: 2023-07-24
19+
version: 1.0.0
20+
date: 2023-09-25
2221

2322
documentation:
2423
general: https://libensemble.readthedocs.io

CHANGELOG.rst

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,75 @@ GitHub issues are referenced, and can be viewed with hyperlinks on the `github r
88

99
.. _`github releases page`: https://github.com/Libensemble/libensemble/releases
1010

11+
Release 1.0.0
12+
--------------
13+
14+
:Date: September 25, 2023
15+
16+
New capabilities:
17+
18+
* *libE_specs* option `final_gen_send` returns last results to the generator (replaces `final_fields`). #1086
19+
* *libE_specs* option `reuse_output_dir` allows reuse of workflow and ensemble directories. #1028 #1041
20+
* *libE_specs* option `calc_dir_id_width` no. of digits for calc ID in output sim/gen directories. #1052 / #1066
21+
* Added `gen_num_procs` and `gen_num_gpus` *libE_specs* (and *persis_info*) options for resourcing a generator. #1068
22+
* Added `gpu_env_fallback` option to platform fields - specifies a GPU environment variable (for non-MPI usage). #1050
23+
* New MPIExecutor `submit()` argument `mpi_runner_type` specifies an MPI runner for current call only. #1054
24+
* Allow oversubscription when using the `num_procs` *gen_specs["out"]* option. #1058
25+
* sim/gen_specs can use `outputs` in place of `out` to be consistent with `inputs`. #1075
26+
* Executor can be obtained from `libE_info` (4th parameter) in user functions. #1078
27+
28+
Breaking changes:
29+
30+
* *libE_specs* option `final_fields` is removed in favor of `final_gen_send`. #1086
31+
* *libE_specs* option `kill_canceled_sims` now defaults to **False**. #1062
32+
* *parse_args* is not run automatically by `Ensemble` constructor.
33+
34+
Updates to **Object Oriented** Ensemble interface:
35+
36+
* Added `parse_args` as option to `Ensemble` constructor. #1065
37+
* The *executor* can be passed as an option to the `Ensemble` constructor. #1078
38+
* Better handling of `Ensemble.add_random_streams` and `ensemble.persis_info`. #1074
39+
40+
Output changes:
41+
42+
* The worker ID suffix is removed from sim/gen output directories. #1041
43+
* Separate *ensemble.log* and *libE_stats.txt* for different workflows directories. #1027 #1041
44+
* Defaults to four digits for sim/gen ID in output directories (adds digits on overflow). #1052 / #1066
45+
46+
Bug fixes:
47+
48+
* Resolved PETSc/OpenMPI issue (when using the Executor). #1064
49+
* Prevent `mpi4py` validation running during local comms (when using OO interface). #1065
50+
51+
Performance changes:
52+
53+
* Optimize `kill_cancelled_sims` function. #1043 / #1063
54+
* *safe_mode* defaults to **False** (for performance). #1053
55+
56+
Updates to example functions:
57+
58+
* Multiple regression tests and examples ported to use OO ensemble interface. #1014
59+
60+
Update forces examples:
61+
62+
* Make persistent generator the default for both simple and GPU examples (inc. updated tutorials).
63+
* Update to object oriented interface.
64+
* Added separate variable resources example for forces GPU.
65+
* Rename `multi_task` example to `multi_app`.
66+
67+
Documentation:
68+
69+
* General overhaul and simplification of documentation. #992
70+
71+
:Note:
72+
73+
* Tested platforms include Linux, MacOS, Windows, and major systems such as Frontier (OLCF), Polaris, and Perlmutter (NERSC). The major system tests ran heterogeneous workflows.
74+
* Tested Python versions: (Cpython) 3.7, 3.8, 3.9, 3.10, 3.11.
75+
76+
:Known Issues:
77+
78+
* See known issues section in the documentation.
79+
1180
Release 0.10.2
1281
--------------
1382

@@ -63,7 +132,7 @@ New capabilities:
63132
* Allow users to specify their own system configurations.
64133
* These changes remove a number of tweaks that were needed for particular platforms.
65134

66-
* Resource management supports GPU and non-GPU simulations in the same ensemble. #993
135+
* Resource management supports GPU and non-GPU simulations in the same ensemble. #993
67136
* User's can specify `num_procs` and `num_gpus` in the generator for each evaluation.
68137

69138
* Pydantic models are used for validating major libE input (input can be provided as classes or dictionaries). #878

0 commit comments

Comments
 (0)