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

Add (new) mpl benchmarks #404

Merged
merged 2 commits into from
Nov 1, 2022
Merged

Conversation

Firobe
Copy link
Contributor

@Firobe Firobe commented Oct 21, 2022

Close #401

Add msort_ints, msort_strings, primes, tokens, raytracer from https://github.com/MPLLang/parallel-ml-bench/tree/main/ocaml/bench to the parallel benchs (with 1, 2, 4, 8, 16, 32 cores each) on Turing and Navajo.

@Firobe Firobe force-pushed the mpl-benchmarks branch 4 times, most recently from c8e1ca8 to c071892 Compare October 24, 2022 11:49
@Firobe Firobe marked this pull request as ready for review October 24, 2022 11:50
@Firobe Firobe changed the title [WIP] Add (new) mpl benchmarks Add (new) mpl benchmarks Oct 24, 2022
@Firobe Firobe force-pushed the mpl-benchmarks branch 2 times, most recently from 6a57471 to 44a9657 Compare October 24, 2022 16:11
Copy link
Contributor

@Sudha247 Sudha247 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for adding the benchmarks @Firobe!

The config files have the correct benchmarks added to them. But, the benchmarks/mpl/bench directory has more benchmarks that are already present in sandmark. Perhaps we can remove the already available ones? You can see the existing parallel benchmarks in multicore-numerical and other directories with multicore-prefix.

multicore_parallel_navajo_run_config.json Outdated Show resolved Hide resolved
multicore_parallel_run_config.json Outdated Show resolved Hide resolved
@Firobe
Copy link
Contributor Author

Firobe commented Oct 27, 2022

I think it should now be good to go!

Copy link
Contributor

@Sudha247 Sudha247 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the updates. Looks good to me!

@shakthimaan
Copy link
Contributor

Thanks for the review! LGTM.

@shakthimaan shakthimaan merged commit f99a047 into ocaml-bench:main Nov 1, 2022
@Firobe Firobe deleted the mpl-benchmarks branch November 1, 2022 22:10
@kayceesrk
Copy link
Contributor

Do these benchmarks appear on the sandmark nightly results? @shakthimaan

If not, can you make them appear on the nightly results?

@Sudha247
Copy link
Contributor

We should add a macro_bench tag for them to appear in sandmark-nightly, I think.

@kayceesrk
Copy link
Contributor

Do we know that these benchmarks deserve macro_bech tag? In particular, do they run for enough time?

@kayceesrk
Copy link
Contributor

One way to find out is to add the macro_bench tag and then observe the results on the nightly results and tune them appropriately.

@Sudha247
Copy link
Contributor

All the benchmarks have a gt_100s tag, so I take it as they run for more than 100s at least for the one-core version. In that case, we can safely tag them as macro_bench.

@kayceesrk
Copy link
Contributor

kayceesrk commented Jan 10, 2023

In addition to the missing macro_bench tag, the benchmarks are not in the right format to be visualized. In particular for a benchmark to be visualized,

  1. The benchmark should have a serial version with the name foo.
  2. The benchmark should have a parallel version with the name foo_multicore
    • IMPORTANT: Parallel version running on 1 domain is not the same as the sequential version.
  3. The first argument (params or short_name) should be the number of domains. There can be other arguments that follow. When using short_name, the format should be <num_domains>_<other_arg> with an _ separating the number of domains and other arguments.

I also think this is the reason why graph500 results also don't appear in the nightly results.

It appears that this part of the codebase needs a little bit of love and attention. Someone should:

  1. Review all of the current parallel benchmarks to see whether each of the benchmarks that appear to be tagged as macro_bench does appear in the nightly run.
  2. Make an issue with all the benchmarks tagged as macro_bench that doesn't appear in the nightly runs.
  3. Triage each one to identify what the problem is.
  4. Update the documentation so that the contributors know what is the expectation (see previous list).
    • Perhaps convert this to a checklist that the contributors and the reviewers can use.
    • Better built tooling that can catch this.

Unfortunately, the current state is less than ideal. We don't yet have the tools/process to review and catch these before this PR and similar others are merged.

@punchagan
Copy link
Contributor

Thanks for the review of the benchmarks and the notes. I have not looked at the new mpl benchmarks in question in this PR, but I agree that the current state of the benchmarks should be improved.

I also think this is the reason why graph500 results also don't appear in the nightly results.

graph500 results were disabled because the benchmark implementation was not scalable, and we have disabled the results from showing up in the UI until we fix the scalability.

Building a checklist for the contributors and/or reviewers would be a good first step, and then some tooling around making sure at least the easily verifiable checklist requirements are being followed.

@kayceesrk
Copy link
Contributor

Building a checklist for the contributors and/or reviewers would be a good first step, and then some tooling around making sure at least the easily verifiable checklist requirements are being followed.

Tooling here is a bit tricky. One could possibly build this as a jq script that checks for a given benchmark whether serial version exists followed by parallel benchmark named appropriately, etc.

graph500 results were disabled because the benchmark implementation was not scalable, and we have disabled the results from showing up in the UI until we fix the scalability.

Thanks for the clarification here.

@Firobe
Copy link
Contributor Author

Firobe commented Jan 10, 2023

Okay, I'm going to update the mpl benchmarks with the proper tags and naming conventions, and document the expectations w.r.t. naming KC listed in the README.

@kayceesrk
Copy link
Contributor

Thanks @Firobe 👍

@Firobe
Copy link
Contributor Author

Firobe commented Jan 13, 2023

See #439

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add MaPLe benchmarks to Sandmark
5 participants