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

Improve BENCHMARKING.md with more detailed info. #619

Merged
merged 3 commits into from
Aug 24, 2020

Conversation

tcojean
Copy link
Member

@tcojean tcojean commented Aug 10, 2020

Adds more detailed information on how to benchmark Ginkgo.

Thanks @adam-m-jcbs for his useful review process for the JOSS paper which pointed to a lack of documentation on how to benchmark Ginkgo. I hope that with this PR we can fix this issue. See #597.

Summary:

  • Detail a bit how to use ssget and what to watch out for.
  • Add a benchmark overview section with the most important options.
  • Optionally detail a little how to interact with the GPE after obtaining benchmark results as well as what to watch out for.
  • Detail a little how to obtain more detailed information as well as how to debug Ginkgo through loggers.
  • Update the available options in the script.
  • In addition, I try to change the way we generate the run_all_benchmarks.sh script in order to give the proper rights to this file by default (execution x access).

@tcojean tcojean added is:enhancement An improvement of an existing feature. reg:build This is related to the build system. reg:documentation This is related to documentation. reg:benchmarking This is related to benchmarking. 1:ST:ready-for-review This PR is ready for review labels Aug 10, 2020
@tcojean tcojean self-assigned this Aug 10, 2020
@codecov
Copy link

codecov bot commented Aug 10, 2020

Codecov Report

Merging #619 into develop will not change coverage.
The diff coverage is n/a.

Impacted file tree graph

@@           Coverage Diff            @@
##           develop     #619   +/-   ##
========================================
  Coverage    92.89%   92.89%           
========================================
  Files          303      303           
  Lines        21331    21331           
========================================
  Hits         19815    19815           
  Misses        1516     1516           

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update bc432c4...3ea7874. Read the comment docs.

Copy link
Member

@pratikvn pratikvn left a comment

Choose a reason for hiding this comment

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

LGTM! Pretty comprehensive. It would also be nice to have something like a best-practice guide that explains what settings of Ginkgo the benchmarks should be run for. There we could mention some generic aspects such as:

  1. Compile your code in Release
  2. Make sure the machine has no competing jobs.
  3. The recommended number of warmup iterations (which might be different for solvers, preconds and SpMV)

And Ginkgo specific ones such as:

  1. For adaptive block jacobi, enable the GINKGO_JACOBI_FULL_OPTIMIZATIONS flag with a warning that this uses a lot more memory.
  2. Mention that we also have a overhead benchmarking setup.

and any other ones that I have forgotten

BENCHMARKING.md Outdated Show resolved Hide resolved
BENCHMARKING.md Outdated Show resolved Hide resolved
BENCHMARKING.md Outdated Show resolved Hide resolved
BENCHMARKING.md Outdated Show resolved Hide resolved
@tcojean
Copy link
Member Author

tcojean commented Aug 12, 2020

Thanks for your comments @pratikvn, I integrated your suggestions.

Copy link
Member

@yhmtsai yhmtsai left a comment

Choose a reason for hiding this comment

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

LGTM

BENCHMARKING.md Show resolved Hide resolved
BENCHMARKING.md Show resolved Hide resolved
BENCHMARKING.md Outdated Show resolved Hide resolved
Copy link
Member

@upsj upsj left a comment

Choose a reason for hiding this comment

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

LGTM! A general proposal: If we have interdependent pieces of documentation (BENCHMARKING.md + benchmark commandline options, ...), do you think it would make sense to add a note to the source code to check the dependent documentation? An example would be adding a new preconditioner, spmv algorithm or solver to the benchmarks

@upsj upsj added 1:ST:ready-to-merge This PR is ready to merge. and removed 1:ST:ready-for-review This PR is ready for review labels Aug 17, 2020
@tcojean
Copy link
Member Author

tcojean commented Aug 24, 2020

@upsj how do you suggest to do this? I don't think there is a central place in the source code where we could do this, so would you add a comment in every source file?

@tcojean
Copy link
Member Author

tcojean commented Aug 24, 2020

I opened #623 to discuss the split documentation issue.

@sonarcloud
Copy link

sonarcloud bot commented Aug 24, 2020

Kudos, SonarCloud Quality Gate passed!

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities (and Security Hotspot 0 Security Hotspots to review)
Code Smell A 0 Code Smells

No Coverage information No Coverage information
No Duplication information No Duplication information

warning The version of Java (1.8.0_121) you have used to run this analysis is deprecated and we will stop accepting it from October 2020. Please update to at least Java 11.
Read more here

@tcojean tcojean merged commit f54f421 into develop Aug 24, 2020
@tcojean tcojean deleted the improve_benchmarking_doc branch August 24, 2020 14:04
tcojean added a commit that referenced this pull request Aug 26, 2020
Release 1.3.0 of Ginkgo.

The Ginkgo team is proud to announce the new minor release of Ginkgo version
1.3.0. This release brings CUDA 11 support, changes the default C++ standard to
be C++14 instead of C++11, adds a new Diagonal matrix format and capacity for
diagonal extraction, significantly improves the CMake configuration output
format, adds the Ginkgo paper which got accepted into the Journal of Open Source
Software (JOSS), and fixes multiple issues.

Supported systems and requirements:
+ For all platforms, cmake 3.9+
+ Linux and MacOS
  + gcc: 5.3+, 6.3+, 7.3+, all versions after 8.1+
  + clang: 3.9+
  + Intel compiler: 2017+
  + Apple LLVM: 8.0+
  + CUDA module: CUDA 9.0+
  + HIP module: ROCm 2.8+
+ Windows
  + MinGW and Cygwin: gcc 5.3+, 6.3+, 7.3+, all versions after 8.1+
  + Microsoft Visual Studio: VS 2017 15.7+
  + CUDA module: CUDA 9.0+, Microsoft Visual Studio
  + OpenMP module: MinGW or Cygwin.


The current known issues can be found in the [known issues page](https://github.com/ginkgo-project/ginkgo/wiki/Known-Issues).


Additions:
+ Add paper for Journal of Open Source Software (JOSS). [#479](#479)
+ Add a DiagonalExtractable interface. [#563](#563)
+ Add a new diagonal Matrix Format. [#580](#580)
+ Add Cuda11 support. [#603](#603)
+ Add information output after CMake configuration. [#610](#610)
+ Add a new preconditioner export example. [#595](#595)
+ Add a new cuda-memcheck CI job. [#592](#592)

Changes:
+ Use unified memory in CUDA debug builds. [#621](#621)
+ Improve `BENCHMARKING.md` with more detailed info. [#619](#619)
+ Use C++14 standard instead of C++11. [#611](#611)
+ Update the Ampere sm information and CudaArchitectureSelector. [#588](#588)

Fixes:
+ Fix documentation warnings and errors. [#624](#624)
+ Fix warnings for diagonal matrix format. [#622](#622)
+ Fix criterion factory parameters in CUDA. [#586](#586)
+ Fix the norm-type in the examples. [#612](#612)
+ Fix the WAW race in OpenMP is_sorted_by_column_index. [#617](#617)
+ Fix the example's exec_map by creating the executor only if requested. [#602](#602)
+ Fix some CMake warnings. [#614](#614)
+ Fix Windows building documentation. [#601](#601)
+ Warn when CXX and CUDA host compiler do not match. [#607](#607)
+ Fix reduce_add, prefix_sum, and doc-build. [#593](#593)
+ Fix find_library(cublas) issue on machines installing multiple cuda. [#591](#591)
+ Fix allocator in sellp read. [#589](#589)
+ Fix the CAS with HIP and NVIDIA backends. [#585](#585)

Deletions:
+ Remove unused preconditioner parameter in LowerTrs. [#587](#587)

Related PR: #625
tcojean added a commit that referenced this pull request Aug 27, 2020
The Ginkgo team is proud to announce the new minor release of Ginkgo version
1.3.0. This release brings CUDA 11 support, changes the default C++ standard to
be C++14 instead of C++11, adds a new Diagonal matrix format and capacity for
diagonal extraction, significantly improves the CMake configuration output
format, adds the Ginkgo paper which got accepted into the Journal of Open Source
Software (JOSS), and fixes multiple issues.

Supported systems and requirements:
+ For all platforms, cmake 3.9+
+ Linux and MacOS
  + gcc: 5.3+, 6.3+, 7.3+, all versions after 8.1+
  + clang: 3.9+
  + Intel compiler: 2017+
  + Apple LLVM: 8.0+
  + CUDA module: CUDA 9.0+
  + HIP module: ROCm 2.8+
+ Windows
  + MinGW and Cygwin: gcc 5.3+, 6.3+, 7.3+, all versions after 8.1+
  + Microsoft Visual Studio: VS 2017 15.7+
  + CUDA module: CUDA 9.0+, Microsoft Visual Studio
  + OpenMP module: MinGW or Cygwin.


The current known issues can be found in the [known issues page](https://github.com/ginkgo-project/ginkgo/wiki/Known-Issues).


Additions:
+ Add paper for Journal of Open Source Software (JOSS). [#479](#479)
+ Add a DiagonalExtractable interface. [#563](#563)
+ Add a new diagonal Matrix Format. [#580](#580)
+ Add Cuda11 support. [#603](#603)
+ Add information output after CMake configuration. [#610](#610)
+ Add a new preconditioner export example. [#595](#595)
+ Add a new cuda-memcheck CI job. [#592](#592)

Changes:
+ Use unified memory in CUDA debug builds. [#621](#621)
+ Improve `BENCHMARKING.md` with more detailed info. [#619](#619)
+ Use C++14 standard instead of C++11. [#611](#611)
+ Update the Ampere sm information and CudaArchitectureSelector. [#588](#588)

Fixes:
+ Fix documentation warnings and errors. [#624](#624)
+ Fix warnings for diagonal matrix format. [#622](#622)
+ Fix criterion factory parameters in CUDA. [#586](#586)
+ Fix the norm-type in the examples. [#612](#612)
+ Fix the WAW race in OpenMP is_sorted_by_column_index. [#617](#617)
+ Fix the example's exec_map by creating the executor only if requested. [#602](#602)
+ Fix some CMake warnings. [#614](#614)
+ Fix Windows building documentation. [#601](#601)
+ Warn when CXX and CUDA host compiler do not match. [#607](#607)
+ Fix reduce_add, prefix_sum, and doc-build. [#593](#593)
+ Fix find_library(cublas) issue on machines installing multiple cuda. [#591](#591)
+ Fix allocator in sellp read. [#589](#589)
+ Fix the CAS with HIP and NVIDIA backends. [#585](#585)

Deletions:
+ Remove unused preconditioner parameter in LowerTrs. [#587](#587)

Related PR: #627
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1:ST:ready-to-merge This PR is ready to merge. is:enhancement An improvement of an existing feature. reg:benchmarking This is related to benchmarking. reg:build This is related to the build system. reg:documentation This is related to documentation.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants