Skip to content

Commit c2c1212

Browse files
committed
Organize cleanup
1 parent 60f33b1 commit c2c1212

5 files changed

Lines changed: 77 additions & 15 deletions

File tree

docs/platforms/example_scripts.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,3 +78,10 @@ System Examples
7878
.. literalinclude:: ../../examples/libE_submission_scripts/summit_submit_mproc.sh
7979
:caption: /examples/libE_submission_scripts/summit_submit_mproc.sh
8080
:language: bash
81+
82+
.. dropdown:: Cobalt - Intermediate node with Multiprocessing
83+
84+
.. literalinclude:: ../../examples/libE_submission_scripts/cobalt_submit_mproc.sh
85+
:caption: /examples/libE_submission_scripts/cobalt_submit_mproc.sh
86+
:language: bash
87+

docs/platforms/summit.rst

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,56 @@ Users on login nodes submit batch runs to the launch nodes.
1212
Batch scripts and interactive sessions run on the launch nodes. Only the launch
1313
nodes can submit MPI runs to the compute nodes via ``jsrun``.
1414

15-
These docs are maintained to guide libEnsemble's usage on three-tier systems similar to Summit.
15+
These docs are maintained to guide libEnsemble's usage on three-tier systems and/or
16+
`jsrun` systems similar to Summit.
1617

18+
Configuring Python
19+
------------------
20+
21+
Begin by loading the Python 3 Anaconda module::
22+
23+
$ module load python
24+
25+
You can now create and activate your own custom conda_ environment::
26+
27+
conda create --name myenv python=3.10
28+
export PYTHONNOUSERSITE=1 # Make sure get python from conda env
29+
. activate myenv
30+
31+
If you are installing any packages with extensions, ensure that the correct compiler
32+
module is loaded. If using mpi4py_, this must be installed from source,
33+
referencing the compiler. Currently, mpi4py must be built with gcc::
34+
35+
module load gcc
36+
37+
With your environment activated, run ::
38+
39+
CC=mpicc MPICC=mpicc pip install mpi4py --no-binary mpi4py
40+
41+
Installing libEnsemble
42+
----------------------
43+
44+
Obtaining libEnsemble is now as simple as ``pip install libensemble``.
45+
Your prompt should be similar to the following line:
46+
47+
.. code-block:: console
48+
49+
(my_env) user@login5:~$ pip install libensemble
50+
51+
.. note::
52+
If you encounter pip errors, run ``python -m pip install --upgrade pip`` first
53+
54+
Or, you can install via ``conda``:
55+
56+
.. code-block:: console
57+
58+
(my_env) user@login5:~$ conda config --add channels conda-forge
59+
(my_env) user@login5:~$ conda install -c conda-forge libensemble
60+
61+
See :doc:`here<../advanced_installation>` for more information on advanced options
62+
for installing libEnsemble.
1763
Special note on resource sets and Executor submit options
64+
1865
---------------------------------------------------------
1966

2067
When using the portable MPI run configuration options (e.g., num_nodes) to the

libensemble/resources/platforms.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ class Aurora(Platform):
143143
scheduler_match_slots: bool = True
144144

145145

146+
# On SLURM systems, let srun assign free GPUs on the node
146147
class Frontier(Platform):
147148
mpi_runner: str = "srun"
148149
cores_per_node: int = 64
@@ -153,16 +154,6 @@ class Frontier(Platform):
153154
scheduler_match_slots: bool = False
154155

155156

156-
class Summit(Platform):
157-
mpi_runner: str = "jsrun"
158-
cores_per_node: int = 42
159-
logical_cores_per_node: int = 168
160-
gpus_per_node: int = 6
161-
gpu_setting_type: str = "option_gpus_per_task"
162-
gpu_setting_name: str = "-g"
163-
scheduler_match_slots: bool = False
164-
165-
166157
# Example of a ROCM system
167158
class GenericROCm(Platform):
168159
mpi_runner: str = "mpich"
@@ -201,6 +192,16 @@ class Polaris(Platform):
201192
scheduler_match_slots: bool = True
202193

203194

195+
class Summit(Platform):
196+
mpi_runner: str = "jsrun"
197+
cores_per_node: int = 42
198+
logical_cores_per_node: int = 168
199+
gpus_per_node: int = 6
200+
gpu_setting_type: str = "option_gpus_per_task"
201+
gpu_setting_name: str = "-g"
202+
scheduler_match_slots: bool = False
203+
204+
204205
class Known_platforms(BaseModel):
205206
"""A list of platforms with known configurations.
206207

libensemble/tests/functionality_tests/test_mpi_gpu_settings.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353

5454
# Import libEnsemble items for this test
5555
from libensemble.libE import libE
56-
from libensemble.resources.platforms import Aurora, Frontier, PerlmutterGPU, Platform, Polaris
56+
from libensemble.resources.platforms import Aurora, Frontier, PerlmutterGPU, Platform, Polaris, Summit
5757
from libensemble.sim_funcs import six_hump_camel
5858
from libensemble.sim_funcs.var_resources import gpu_variable_resources as sim_f
5959
from libensemble.tools import add_unique_random_streams, parse_args
@@ -203,7 +203,7 @@
203203
del libE_specs["platform_specs"]
204204

205205
# Fourth set - use platform setting ------------------------------------------------------------
206-
for platform in ["perlmutter_g", "polaris", "aurora"]:
206+
for platform in ["summit", "frontier", "perlmutter_g", "polaris", "aurora"]:
207207
print(f"\nRunning GPU setting checks (via known platform) for {platform} ------------------- ")
208208
libE_specs["platform"] = platform
209209

@@ -221,7 +221,7 @@
221221
del libE_specs["platform"]
222222

223223
# Fifth set - use platform environment setting -----------------------------------------------
224-
for platform in ["perlmutter_g", "polaris", "aurora"]:
224+
for platform in ["summit", "frontier", "perlmutter_g", "polaris", "aurora"]:
225225
print(f"\nRunning GPU setting checks (via known platform env. variable) for {platform} ----- ")
226226
os.environ["LIBE_PLATFORM"] = platform
227227

@@ -239,7 +239,7 @@
239239
del os.environ["LIBE_PLATFORM"]
240240

241241
# Sixth set - use platform_specs with known systems -------------------------------------------
242-
for platform in [Frontier, PerlmutterGPU, Polaris, Aurora]:
242+
for platform in [Summit, Frontier, PerlmutterGPU, Polaris, Aurora]:
243243
print(f"\nRunning GPU setting checks (via known platform - platform_specs) for {platform} ------------------- ")
244244
libE_specs["platform_specs"] = platform()
245245

libensemble/tests/scaling_tests/forces/forces_app/build_forces.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,10 @@ mpicc -O3 -o forces.x forces.c -lm
4545
# Nvidia (nvc) compiler with mpicc and on Cray system with target (Perlmutter)
4646
# mpicc -DGPU -O3 -fopenmp -mp=gpu -o forces.x forces.c
4747
# cc -DGPU -Wl,-znoexecstack -O3 -fopenmp -mp=gpu -target-accel=nvidia80 -o forces.x forces.c
48+
49+
# xl (plain and using mpicc on Summit)
50+
# xlc_r -DGPU -O3 -qsmp=omp -qoffload -o forces.x forces.c
51+
# mpicc -DGPU -O3 -qsmp=omp -qoffload -o forces.x forces.c
52+
53+
# Summit with gcc (Need up to offload capable gcc: module load gcc/12.1.0) - slower than xlc
54+
# mpicc -DGPU -Ofast -fopenmp -Wl,-rpath=/sw/summit/gcc/12.1.0-0/lib64 -lm -foffload=nvptx-none forces.c -o forces.x

0 commit comments

Comments
 (0)