-
Notifications
You must be signed in to change notification settings - Fork 31
[WIP] Allocation implementation for mpibind modifier #646
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
base: develop
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have a few suggestions and a question (let me know if they are unclear or you think another approach is better).
@@ -24,6 +25,7 @@ class Amg2023( | |||
WeakScaling, | |||
ThroughputScaling, | |||
Caliper, | |||
Mpibind, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does this class exist?
name="greedy:0", | ||
description="Run mpibind in very greedy mode", | ||
) | ||
depends_on = ["mpibind"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think these should be passed as alternate modes for the allocation modifier: I'd prefer this was passed as something like an mpibind
variable (with all these possible values)
return f"{base_string} {mpi_string}{mpi_end}" | ||
else: | ||
mpi_end = self._usage_mode | ||
return f"{base_string} {mpi_string}{mpi_end}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this is just adding an extra option onto the mpi command invocation.
I'd recommend modifying _init_batch_and_cmd_opts
to include this extra option, vs doing string manipulation on the command.
def mpibind(self, executable_name, executable, app_inst=None): | ||
pre_exec = [] | ||
post_exec = [] | ||
output_file = "{experiment_run_dir}/{experiment_name}.out" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(question) is .out
the output captured by Ramble from running the experiment? And then parse_mpibind_output.py
is searching for output from mpibind
that is generated as part of running that experiment? I don't know how mpibind works: are these values determined by mpibind
itself (i.e. not known before running the experiment)?
} | ||
|
||
output_file = "mpibind_log_file.json" | ||
with open(output_file, "w") as json_file: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks relative: are you sure it runs with the basedir you want? You might want to specify an abspath (e.g. as another argument to parse_mpibind_output
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@rfhaque Are you still wanting to merge this? If yes, please update and mark ready for review. If not, please close this PR.
Description
Alternative implementation for mpibind(#608), moving all mpi-command editing to the allocation modifier, where this already takes place by default. Functionality remains the same.
Example command:
benchpark experiment init --dest=saxpy saxpy mpibind=v +openmp
So far, modes include: off, on, v, vv, greedy:0
Adding/modifying a benchmark (docs: Adding a Benchmark)
experiments/benchmark_name/experiment.py
to define a single node and multi-node experiments.github/workflows/run.yml