Skip to content

Add compiler modifier for MAX_TASKS_PER_NODE, MAX_MPITASKS_PER_NODE, and mpirun arguments #2965

Description

@mrnorman

On Summit, we have an issue where the PE layout will be different for GPU and CPU runs. CPU runs should use 84 tasks per node while GPU runs should use 36 or fewer. I'd like to use the compiler as the modifier for this, e.g.,

<MAX_TASKS_PER_NODE compiler="pgigpu">36</MAX_TASKS_PER_NODE>
<MAX_MPITASKS_PER_NODE compiler="pgigpu">36</MAX_MPITASKS_PER_NODE>
<MAX_TASKS_PER_NODE compiler="!pgigpu">84</MAX_TASKS_PER_NODE>
<MAX_MPITASKS_PER_NODE compiler="!pgigpu">84</MAX_MPITASKS_PER_NODE>

<mpirun mpilib="spectrum-mpi">
<!-- Use a helper script to tweak jsrun options -->
<executable>/gpfs/alpinetds/world-shared/csc190/e3sm/mpirun.summit</executable>
<!-- <executable>jsrun</executable> -->
<arguments compiler="pgigpu">
  <arg name="num_tasks"> -n {{ total_tasks }} -N $MAX_MPITASKS_PER_NODE -gpu </arg>
</arguments>
<arguments compiler="!pgigpu">
  <arg name="num_tasks"> -n {{ total_tasks }} -N $MAX_MPITASKS_PER_NODE </arg>
</arguments>
</mpirun>

It seems that CIME is not currently able to use a compiler modifier for these fields when parsing the XML file, but I think this will be necessary for CIME to support Summit's configurations.

Metadata

Metadata

Assignees

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions