Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release/v 1.0.0 #1090

Merged
merged 77 commits into from
Sep 25, 2023
Merged
Show file tree
Hide file tree
Changes from 41 commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
9f42a54
remove unneeded symlinks leftover from theme experiments
jlnav Sep 21, 2023
cd5dcc1
remove unneeded symlinks leftover from theme experiments (#1091)
jlnav Sep 21, 2023
156e64a
Typos
jmlarson1 Sep 21, 2023
5f33861
Fix quickstart example
shuds13 Sep 21, 2023
65ae56f
Debugging advice in FAQ
shuds13 Sep 21, 2023
0844b91
Add release notes for v1.0
shuds13 Sep 21, 2023
81e807b
Fix highlighted lines
shuds13 Sep 21, 2023
3aa3004
Update version to v1.0.0
shuds13 Sep 21, 2023
973e790
Update CHANGELOG.rst
wildsm Sep 22, 2023
30d4cdc
Update executor.rst
wildsm Sep 22, 2023
7774e34
Update overview.rst
wildsm Sep 22, 2023
d5c9a5f
Update allocator.rst
wildsm Sep 22, 2023
80bed12
Update generator.rst
wildsm Sep 22, 2023
613c821
Fix WCI description
shuds13 Sep 22, 2023
f10e45c
Update overview.rst
wildsm Sep 22, 2023
e44b746
Update zero_resource_workers.rst
wildsm Sep 22, 2023
dd2c130
Update calib_cancel_tutorial.rst
wildsm Sep 22, 2023
3617b2e
Update forces_gpu_tutorial.rst
wildsm Sep 22, 2023
2048b3e
Update utilities.rst
wildsm Sep 22, 2023
6c0b4f1
Update libE_specs.rst
wildsm Sep 22, 2023
2ebe551
Update running_libE.rst
wildsm Sep 22, 2023
2976a4c
Update local_sine_tutorial.rst
wildsm Sep 22, 2023
7ed8438
Update ensemble.py
wildsm Sep 22, 2023
f8277e9
Update print_fields.py
wildsm Sep 22, 2023
079697c
Update welcome.rst
wildsm Sep 22, 2023
d31e248
Update platforms_index.rst
wildsm Sep 22, 2023
f01addd
Update platforms.py
wildsm Sep 22, 2023
9230459
Update test_GPU_gen_resources.py
wildsm Sep 22, 2023
6c0e836
Update test_mpi_gpu_settings_env.py
wildsm Sep 22, 2023
4bb5352
Update test_persistent_uniform_sampling_running_mean.py
wildsm Sep 22, 2023
740df2c
Update test_persistent_surmise_calib.py
wildsm Sep 22, 2023
18cf447
Update test_with_app_persistent_aposmm_tao_nm.py
wildsm Sep 22, 2023
4a52e0b
Update run_libe_forces.py
wildsm Sep 22, 2023
4095ea1
Update readme.md
wildsm Sep 22, 2023
d9f1ffb
Update run_libe_forces.py
wildsm Sep 22, 2023
bf3d4ac
Update run_libe_forces.py
wildsm Sep 22, 2023
7473a8f
Update run_libe_forces.py
wildsm Sep 22, 2023
8a54dc3
Update forces.c
wildsm Sep 22, 2023
dc8935b
Update test_executor.py
wildsm Sep 22, 2023
71870a9
Slight formatting
jmlarson1 Sep 22, 2023
cd1219b
organize rst_formatting_guidelines
jlnav Sep 22, 2023
269a8b2
organize rst_formatting_guidelines, remove unneeded symlinks? (#1092)
jlnav Sep 22, 2023
79890d4
replace most references to funcX with Globus Compute
jlnav Sep 22, 2023
c0458cc
Merge remote-tracking branch 'remotes/origin/release/v_1.0.0' into fi…
jlnav Sep 22, 2023
658aa9d
Fixes/into v1.0 release (#1093)
jlnav Sep 22, 2023
596f3fe
whitespace
jmlarson1 Sep 22, 2023
3b183a9
tiny typos/grammar in platform_specs
jlnav Sep 22, 2023
dadc700
remove extra commas in aposmm.rst
jlnav Sep 22, 2023
19df847
Subsection adjustments, dirs->directories
jlnav Sep 22, 2023
e8c2ec9
Wording/edits
jmlarson1 Sep 22, 2023
3e760b7
persis_info.rst edits
jmlarson1 Sep 22, 2023
8e3a344
platform_specs.rst edits
jmlarson1 Sep 22, 2023
4a469b4
Merge remote-tracking branch 'remotes/origin/release/v_1.0.0' into fi…
jlnav Sep 22, 2023
fd089db
executor.rst edits
jmlarson1 Sep 22, 2023
2983089
typo
jmlarson1 Sep 22, 2023
7618fa2
Update CHANGELOG.rst
wildsm Sep 22, 2023
a5ad38c
blacken
jmlarson1 Sep 22, 2023
5a26191
typo
jmlarson1 Sep 22, 2023
332c3be
Reword
jmlarson1 Sep 22, 2023
7ef1bc9
Typo
jmlarson1 Sep 22, 2023
04a6258
Typo
jmlarson1 Sep 22, 2023
dd57666
reword
jmlarson1 Sep 22, 2023
e3c435c
Typo
jmlarson1 Sep 22, 2023
3d41eca
Small edits
jmlarson1 Sep 22, 2023
4132d64
Light wording
jmlarson1 Sep 22, 2023
fb332bb
flake8 exceptions (apparently) not need any more
jmlarson1 Sep 22, 2023
593cbef
Merge pull request #1094 from Libensemble/fixes/into_v1.0_release
shuds13 Sep 22, 2023
bca3442
Update to FAQ
shuds13 Sep 22, 2023
4987898
Update release notes
shuds13 Sep 22, 2023
09fc9c2
Only slight edits
jmlarson1 Sep 22, 2023
b0b6cc5
Merge branch 'release/v_1.0.0' of https://github.com/Libensemble/libe…
jmlarson1 Sep 22, 2023
c2aa551
blacken-docs
jmlarson1 Sep 22, 2023
dc84b9f
isort
jmlarson1 Sep 22, 2023
a2951ed
Fix typo
shuds13 Sep 22, 2023
a0ca02b
fix typo
shuds13 Sep 22, 2023
ec8fe00
Update release date
shuds13 Sep 22, 2023
4190ead
Update date in .wci.yml
shuds13 Sep 25, 2023
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
7 changes: 3 additions & 4 deletions .wci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ name: libEnsemble
icon: https://raw.githubusercontent.com/Libensemble/libensemble/main/docs/images/libE_logo.png
headline: Tool for running dynamic ensembles.
description: |
libEnsemble is a Python toolkit for coordinating workflows of asynchronous
and dynamic ensembles of calculations.
libEnsemble is a Python toolkit for running dynamic ensembles of calculations.

Users write generator and simulator functions to express their ensembles.
A library of example functions is available which can be modified as needed.
Expand All @@ -17,8 +16,8 @@ description: |
language: Python

release:
version: 0.10.2
date: 2023-07-24
version: 1.0.0
date: 2023-09-22

documentation:
general: https://libensemble.readthedocs.io
Expand Down
65 changes: 65 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,71 @@ GitHub issues are referenced, and can be viewed with hyperlinks on the `github r

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

Release 1.0.0
--------------

:Date: September 22, 2023

New capabilities:

* *libE_specs* option `final_gen_send` returns last results to the generator (replaces `final_fields`). #1086
* *libE_specs* option `reuse_output_dir` allows reuse of workflow and ensemble directories. #1028 #1041
* *libE_specs* option `calc_dir_id_width` no. of digits for calc ID in output sim/gen dirs. #1052 / #1066
* Added `gen_num_procs` and `gen_num_gpus` *libE_specs* (and *persis_info*) options for resourcing a generator. #1068
* Added `gpu_env_fallback` option to platform fields - specifies a GPU environment variable (for non-MPI usage). #1050
* New MPIExecutor `submit()` argument `mpi_runner_type` specifies an MPI runner for current call only. #1054
* Allow oversubscription when using the `num_procs` *gen_specs["out"]* option. #1058
* sim/gen_specs can use `outputs` in place of `out` to be consistent with `inputs`. #1075
* Executor can be obtained from `libE_info` (4th parameter) in user functions. #1078

Breaking changes:

* *libE_specs* option `final_fields` is removed in favor of `final_gen_send`. #1086
* *libE_specs* option `kill_canceled_sims` now defaults to **False**. #1062
* *parse_args* is not run automatically by `Ensemble` constructor.

Updates to **Object Oriented** ensemble interface:

* Added `parse_args` as option to `Ensemble` constructor. #1065
* The *executor* can be passed as an option to the `Ensemble` constructor. #1078
* Better handling of `Ensemble.add_random_streams` and `ensemble.persis_info`. #1074

* Output changes:
* The worker ID suffix is removed from sim/gen output directories. #1041
* Separate *ensemble.log* and *libE_stats.txt* for diff workflows directories. #1027 #1041
* Defaults to four digits for sim/gen ID in output dirs (adds digits on overflow). #1052 / #1066

Bug fixes:
* Resolved PETSc/OpenMPI issue (when using the Executor). #1064
* Prevent `mpi4py` validation running during local comms (when using OO interface). #1065

Performance changes:
* Optimize `kill_cancelled_sims` function. #1043 / #1063
* *safe_mode* defaults to **False** (for performance). #1053

Updates to example functions:

* Multiple regression tests and examples ported to use OO ensemble interface. #1014

* Update forces examples:
* Make persistent generator the default for both simple and GPU examples (inc. updated tutorials).
* Update to object oriented interface.
* Added separate variable resources example for forces GPU.
* Rename `multi_task` example to `multi_app`.

Documentation:

* General overhaul and simplification of documentation. #992

:Note:

* Tested platforms include Linux, MacOS, Windows, and major systems such as Frontier (OLCF), Polaris, and Perlmutter (NERSC). The major system tests ran heterogeneous workflows.
* Tested Python versions: (Cpython) 3.7, 3.8, 3.9, 3.10, 3.11.

:Known issues:

* See known issues section in the documentation.

Release 0.10.2
--------------

Expand Down
12 changes: 11 additions & 1 deletion docs/FAQ.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,17 @@ Frequently Asked Questions

If you have any additional questions, feel free to contact us through Support_.

.. _Support: https://github.com/Libensemble/libensemble#resources
.. _Support: https://libensemble.readthedocs.io/en/main/introduction.html#resources


Debugging
---------

We recommend using the following options to help debug workflows::

from libensemble import logger
logger.set_level("DEBUG")
libE_specs["safe_mode"] = True

Common Errors
-------------
Expand Down
1 change: 0 additions & 1 deletion docs/_static/libE_logo.png

This file was deleted.

1 change: 0 additions & 1 deletion docs/_static/libE_logo_white.png

This file was deleted.

2 changes: 1 addition & 1 deletion docs/advanced_installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ The following packages may be installed separately to enable additional features
.. _Balsam: https://balsam.readthedocs.io/en/latest/
.. _conda-forge: https://conda-forge.org/
.. _Conda: https://docs.conda.io/en/latest/
.. _Globus Compute: https://funcx.readthedocs.io/en/latest/
.. _Globus Compute: https://www.globus.org/compute
.. _GitHub: https://github.com/Libensemble/libensemble
.. _MPICH: https://www.mpich.org/
.. _NumPy: http://www.numpy.org
Expand Down
8 changes: 4 additions & 4 deletions docs/data_structures/libE_specs.rst
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@ libEnsemble is primarily customized by setting options within a ``LibeSpecs`` cl
.. tab-item:: General

"comms" [str] = ``"mpi"``:
Manager/Worker communications mode. ``'mpi'``, ``'local'``, or ``'tcp'``
Manager/Worker communications mode: ``'mpi'``, ``'local'``, or ``'tcp'``.
"nworkers" [int]:
Number of worker processes in ``"local"`` or ``"tcp"``.
"mpi_comm" [MPI communicator] = ``MPI.COMM_WORLD``:
libEnsemble MPI communicator.
"dry_run" [bool] = ``False``:
Whether libEnsemble should immediately exit after validating all inputs
Whether libEnsemble should immediately exit after validating all inputs.
"abort_on_exception" [bool] = ``True``:
In MPI mode, whether to call ``MPI_ABORT`` on an exception.
If ``False``, an exception will be raised by the manager.
Expand All @@ -45,7 +45,7 @@ libEnsemble is primarily customized by setting options within a ``LibeSpecs`` cl
On libEnsemble shutdown, number of seconds after which workers considered timed out,
then terminated.
"kill_canceled_sims" [bool] = ``False``:
Try to kill sims with ``"cancel_requested"`` set ``True``.
Try to kill sims with ``"cancel_requested"`` set to ``True``.
If ``False``, the manager avoids this moderate overhead.
"disable_log_files" [bool] = ``False``:
Disable ``ensemble.log`` and ``libE_stats.txt`` log files.
Expand Down Expand Up @@ -74,7 +74,7 @@ libEnsemble is primarily customized by setting options within a ``LibeSpecs`` cl

"ensemble_copy_back" [bool] = ``False``:
Whether to copy back contents of ``ensemble_dir_path`` to launch
location. Useful if ``ensemble_dir_path`` located on node-local storage.
location. Useful if ``ensemble_dir_path`` is located on node-local storage.

"reuse_output_dir" [bool] = ``False``:
Whether to allow overwrites and access to previous ensemble and workflow directories in subsequent runs.
Expand Down
2 changes: 1 addition & 1 deletion docs/executor/executor.rst
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ See the Executor APIs for optional arguments.
:task.finished: (boolean) True means task has finished running - not whether it was successful.
:task.success: (boolean) Did task complete successfully (e.g., the returncode is zero)?
:task.runtime: (int) Time in seconds that task has been running.
:task.submit_time: (int) Time since epoch that task was submitted
:task.submit_time: (int) Time since epoch that task was submitted.
:task.total_time: (int) Total time from task submission to completion (only available when task is finished).

Run configuration attributes - some will be autogenerated:
Expand Down
4 changes: 2 additions & 2 deletions docs/executor/overview.rst
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,8 @@ Example use-cases:
See the :doc:`Executor<executor>` or :doc:`MPIExecutor<mpi_executor>` interface
for the complete API.

See :doc:`Running on HPC Systems<../platforms/platforms_index>` to see, with
diagrams, how common options such as ``libE_specs["dedicated_mode"]`` affect the
See :doc:`Running on HPC Systems<../platforms/platforms_index>` for illustrations
of how common options such as ``libE_specs["dedicated_mode"]`` affect the
run configuration on clusters and supercomputers.

Advanced Features
Expand Down
6 changes: 3 additions & 3 deletions docs/function_guides/allocator.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ The ``alloc_f`` is unique since it is called by libEnsemble's manager instead of
For allocation functions, as with the other user functions, the level of complexity can
vary widely. We encourage experimenting with:

1. Prioritization of simulations,
1. Prioritization of simulations
2. Sending results immediately or in batch
3. Assigning varying resources to evaluations

Expand All @@ -26,7 +26,7 @@ Most ``alloc_f`` function definitions written by users resemble::

where:

* :ref:`W<funcguides-workerarray>` is an array containing worker state info,
* :ref:`W<funcguides-workerarray>` is an array containing worker state info
* :ref:`H<funcguides-history>` is the *trimmed* History array, containing rows from the generator
* :ref:`libE_info<libE_info_alloc>` is a set of statistics to determine the progress of work or exit conditions

Expand Down Expand Up @@ -76,7 +76,7 @@ dictionary values to give to those workers:

This Work dictionary instructs each worker to call the ``sim_f`` (``tag: 1``)
with data from ``"x"`` and a given ``"H_row"`` from the
History array. A worker specific ``persis_info`` is also given.
History array. A worker-specific ``persis_info`` is also given.

Constructing these arrays and determining which workers are available
for receiving data is simplified by use of the ``AllocSupport`` class
Expand Down
6 changes: 3 additions & 3 deletions docs/function_guides/generator.rst
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ Persistent Generators
While non-persistent generators return after completing their calculation, persistent
generators do the following in a loop:

1. Receive simulation results and metadata. Exit if metadata instructs
1. Receive simulation results and metadata; exit if metadata instructs
2. Perform analysis
3. Send subsequent simulation parameters

Expand Down Expand Up @@ -160,7 +160,7 @@ a worker can be initiated in *active receive* mode by the allocation
function (see :ref:`start_only_persistent<start_only_persistent_label>`).
The persistent worker can then send and receive from the manager at any time.

Ensure there are no communication deadlocks in this mode. In manager/worker message exchanges, only the worker-side
Ensure there are no communication deadlocks in this mode. In manager--worker message exchanges, only the worker-side
receive is blocking by default (a non-blocking option is available).

Cancelling Simulations
Expand All @@ -173,7 +173,7 @@ Previously submitted simulations can be cancelled by sending a message to the ma

- If a generated point is cancelled by the generator **before sending** to another worker for simulation, then it won't be sent.
- If that point has **already been evaluated** by a simulation, the ``cancel_requested`` field will remain ``True``.
- If that point is **currently being evaluated**, a kill signal will be sent to the corresponding worker. It must be manually processed in the simulation function
- If that point is **currently being evaluated**, a kill signal will be sent to the corresponding worker; it must be manually processed in the simulation function.

The :doc:`Borehole Calibration tutorial<../tutorials/calib_cancel_tutorial>` gives an example
of the capability to cancel pending simulations.
Expand Down
41 changes: 21 additions & 20 deletions docs/introduction.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,29 +20,30 @@ and an exit condition. Run the following via ``python this_file.py --comms local
from libensemble.specs import ExitCriteria, GenSpecs, SimSpecs
from libensemble.tools import add_unique_random_streams

sampling = Ensemble(parse_args=True)
sampling.sim_specs = SimSpecs(
sim_f=six_hump_camel,
inputs=["x"],
outputs=[("f", float)],
)
sampling.gen_specs = GenSpecs(
gen_f=uniform_random_sample,
outputs=[("x", float, (2,))],
user={
"gen_batch_size": 500,
"lb": np.array([-3, -2]),
"ub": np.array([3, 2]),
},
)

sampling.persis_info = add_unique_random_streams({}, sampling.nworkers + 1)
sampling.exit_criteria = ExitCriteria(sim_max=101)

if __name__ == "__main__":
sampling = Ensemble(parse_args=True)
sampling.sim_specs = SimSpecs(
sim_f=six_hump_camel,
inputs=["x"],
outputs=[("f", float)],
)
sampling.gen_specs = GenSpecs(
gen_f=uniform_random_sample,
outputs=[("x", float, (2,))],
user={
"gen_batch_size": 500,
"lb": np.array([-3, -2]),
"ub": np.array([3, 2]),
},
)

sampling.persis_info = add_unique_random_streams({}, sampling.nworkers + 1)
sampling.exit_criteria = ExitCriteria(sim_max=101)
sampling.run()
sampling.save_output(__file__)
print("Some output data:\n", sampling.H[["x", "f"]][:10])

if sampling.is_manager:
print("Some output data:\n", sampling.H[["x", "f"]][:10])

See the :doc:`tutorial<tutorials/local_sine_tutorial>` for a step-by-step beginners guide.

Expand Down
2 changes: 0 additions & 2 deletions docs/introduction_latex.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
.. include:: introduction.rst

.. _across: https://libensemble.readthedocs.io/en/develop/platforms/platforms_index.html#funcx-remote-user-functions
.. _APOSMM: https://link.springer.com/article/10.1007/s12532-017-0131-4
.. _AWA: https://link.springer.com/article/10.1007/s12532-017-0131-4
.. _Balsam: https://balsam.readthedocs.io/en/latest/
Expand All @@ -14,7 +13,6 @@
.. _DFO-LS: https://github.com/numericalalgorithmsgroup/dfols
.. _ECNoise: https://www.mcs.anl.gov/~wild/cnoise/
.. _example user scripts: https://libensemble.readthedocs.io/en/main/examples/examples_index.html
.. _funcX: https://funcx.org/
.. _GitHub: https://github.com/Libensemble/libensemble
.. _GitHub Actions: https://github.com/Libensemble/libensemble/actions
.. _IPAC manuscript: https://doi.org/10.18429/JACoW-ICAP2018-SAPAF03
Expand Down
8 changes: 4 additions & 4 deletions docs/platforms/platforms_index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -144,18 +144,18 @@ libE_specs option.
When using the MPI Executor, it is possible to override the detected information using the
`custom_info` argument. See the :doc:`MPI Executor<../executor/mpi_executor>` for more.

.. _funcx_ref:
.. _globus_compute_ref:

Globus Compute - Remote User Functions
--------------------------------------

*Alternatively to much of the above*, if libEnsemble is running on some resource with
internet access (laptops, login nodes, other servers, etc.), workers can be instructed to
launch generator or simulator user function instances to separate resources from
themselves via `Globus Compute`_, a distributed, high-performance function-as-a-service platform:
themselves via `Globus Compute`_ (formerly funcX), a distributed, high-performance function-as-a-service platform:

.. image:: ../images/funcxmodel.png
:alt: running_with_funcx
:alt: running_with_globus_compute
:scale: 50
:align: center

Expand Down Expand Up @@ -196,7 +196,7 @@ argument. For example::
globus_compute_endpoint = "3af6dc24-3f27-4c49-8d11-e301ade15353",
)

See the ``libensemble/tests/scaling_tests/funcx_forces`` directory for a complete
See the ``libensemble/tests/scaling_tests/globus_compute_forces`` directory for a complete
remote-simulation example.

Instructions for Specific Platforms
Expand Down
10 changes: 5 additions & 5 deletions docs/resource_manager/overview.rst
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ along with the work request (simulation).
In the calling script, use a ``gen_specs["out"]`` field called ``resource_sets``:

.. code-block:: python
:emphasize-lines: 4
:emphasize-lines: 6

gen_specs = {
"gen_f": gen_f,
Expand Down Expand Up @@ -133,7 +133,7 @@ For example, in *CUDA_variable_resources*, the environment variable
``CUDA_VISIBLE_DEVICES`` is set to slots:

.. code-block:: python
:emphasize-lines: 3
:emphasize-lines: 2

resources = Resources.resources.worker_resources
resources.set_env_to_slots("CUDA_VISIBLE_DEVICES") # Use convenience function.
Expand Down Expand Up @@ -195,12 +195,12 @@ Varying generator resources

By default, generators are not allocated resources in dynamic mode. Fixed resources
for the generator can be set using the *libE_specs* options
``gen_num_procs`` and ``gen_num_gpus``, which takes an integer value.
If only ``gen_num_gpus`` is set, then number of processors will match.
``gen_num_procs`` and ``gen_num_gpus``, which take integer values.
If only ``gen_num_gpus`` is set, then the number of processors will be set to match.

To vary generator resources, ``persis_info`` settings can be used in allocation
functions before calling the ``gen_work`` support function. This takes the
same options (``gen_num_procs`` and ``gen_num_gpus``)
same options (``gen_num_procs`` and ``gen_num_gpus``).

Alternatively, the setting ``persis_info["gen_resources"]`` can also be set to
a number of resource sets.
Expand Down
4 changes: 2 additions & 2 deletions docs/resource_manager/zero_resource_workers.rst
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ In general, the number of resource sets should be set to enable the maximum
concurrency desired by the ensemble, taking into account generators and simulators.

Users can set generator resources using the *libE_specs* options
``gen_num_procs`` and/or ``gen_num_gpus``, which take an integer values.
If only ``gen_num_gpus`` is set, then number of processors will match.
``gen_num_procs`` and/or ``gen_num_gpus``, which take integer values.
If only ``gen_num_gpus`` is set, then the number of processors is set to match.

To vary generator resources, ``persis_info`` settings can be used in allocation
functions before calling the ``gen_work`` support function. This takes the
Expand Down
Loading
Loading