Commit Graph

74 Commits

Author SHA1 Message Date
Guillaume Raffy a5b5345d39 v0.0.4
- improved hibench: this benchmark no longer requires a password for cloning hibridon, now (it's actually been the case for more than one year now) that the repository of hibridon is public.

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958]
2024-11-19 00:09:32 +01:00
Guillaume Raffy 628ac7352a v0.0.3
- added support for all ipr cluster cpus

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958]
2024-11-18 23:04:29 +01:00
Guillaume Raffy 862a3911f0 v0.0.2
- added continuous integration using ipr jenkins

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958]
2024-11-18 16:42:12 +01:00
Guillaume Raffy 0dd0195d45 made tests pass when using univ-rennes vpn
work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958]
2024-11-17 11:33:12 +01:00
Guillaume Raffy 6dded4234a refactored tests:
- split tests into 3:
  - test_benchmarks.py: tests all benchmarks with the most basic resultsdb backend
  - test_resultsdb: tests all resultsdb backends with the most basic benchmark
  - test_clusterbench: tests clusterbench_submit
- made tests more robust (deletes the results foder if it already exists)

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958]
2024-11-17 11:31:48 +01:00
Guillaume Raffy 3d8a0ff4ad added the following automatic parameters (parameters common to all benchmarks):
- host_id (host serial number)
- num_cpus
- iprbench_version

(took inspiration from [https://git.ipr.univ-rennes.fr/cellinfo/maco/src/branch/main/Libs/Benchmark.bash])

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958]
2024-11-13 17:42:01 +01:00
Guillaume Raffy 59a5109ed9 the user can now output the benchmark results to a remote sql database accessed via ssh
note: as the production benchmarks are currently stored at IPR on a database server accessed via ssh, this allows iprbench to store its results to IPR benchmark database.

work rleated to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958]
2024-11-13 14:57:49 +01:00
Guillaume Raffy 86985d3de4 the user can now output the benchmark results to a remote sql database accessed via ssh
note: as the production benchmarks are currently stored at IPR on a database server accessed via ssh, this allows iprbench to store its results to IPR benchmark database.

work rleated to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958]
2024-11-13 14:56:45 +01:00
Guillaume Raffy 5337c41645 fixed stupid copy paste error that caused all the fields to have the same type
work rleated to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958]
2024-11-13 14:47:49 +01:00
Guillaume Raffy ca1f4c1a88 added autoparams `host_fqdn` and `cpu_model`
these parameters are very much needed as they allow to identify the system on which the benchmark is run. Each performance benchmark highly depends on the host it's run on.

work rleated to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958]
2024-11-08 09:12:51 +01:00
Guillaume Raffy 2ee1988721 the user can now choose to save the benchmark results into a sql database (sqlite at the moment)
work rleated to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958]
2024-11-05 15:39:00 +01:00
Guillaume Raffy 2a91af37ff added the ability for the user to choose the resultsdb backend.
This is needed to use a different backend for tests and for production

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958]
2024-10-25 19:19:28 +02:00
Guillaume Raffy 12cc0c0c8a added a mechanism to record benchmark results into a database.
- At the moment, the database backend used is a set of tsv files, but the system is flexible to accomodate other dabase backends (mariadb, sqlite, etc.).

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958]
2024-10-24 18:51:24 +02:00
Guillaume Raffy 25d2e489d5 fixed bug with num_cores that caused test_clusterbench to fail on hibench
work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958]
2024-10-23 16:55:17 +02:00
Guillaume Raffy 98940824e4 Made benchmark `hibench` work
- converted --cmake-path argument in clusterbench-submit into a parameter for benchmark hibench, as it's specific to some benchmarks only

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958]
2024-10-23 14:36:22 +02:00
Guillaume Raffy 6000e20d6b the user of `iprbench-submit` can now choose the cluster he wants to use (previously it was hardcoded to the test cluster `DummyCluster`)
work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958]
2024-10-23 11:18:07 +02:00
Guillaume Raffy fe4d66fb52 moved Singleton class to a better place
work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958]
2024-10-23 10:55:37 +02:00
Guillaume Raffy 6f84732cf6 mamul1 benchmark now gets its source files from iprbench resources rather than a hardcoded directory (which was obviously not satisfactory since iprbench only worked if installed in a specfic location).
work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958] and [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3372]
2024-10-22 17:32:35 +02:00
Guillaume Raffy 011d4eddf9 refactored iprbench to separate ipr benchmark framework from the actual benchmarks
This decoupling allows to write benchmarks as modules that can be used in various situations (from a benchmark job or directly from a user), but this design will allow automatic registering of the benchmark results in a user selectable form (sql database, stdout, etc.)

- separated `hibenchonphysix.py` into `clusterbench.py` (tool to run a benchmark on a cluster) and `hibench.py` (hibridon benchmark module) so that `clusterbench.py` no longer has a knowledge about hibridon.
- there are currently 2 ways to run a bechmark:
  1. as a simple run through `clusterbench-run` command (which will eventually be renamed as iprbench-run since it might be completely independent from the concept of cluster)
  2. as cluster jobs  through `clusterbench-submit` command
- added unit test
- added another benchmark `mamul1` that is used as a unittest because it has 2 benefits over `hibench` benchmark:
   1. it's standalone (no external resources needed)
   2. it's quicker to execute

note: this refactoring work is not complete yet, but the concept  proof is complete (the 2 unittests pass):
- still need to provide the user a way to switch between IpRCluster and DummyCluster(which is only intended to only be used for testing clusterbench))
- still need to run multiple configs of the same benchmark in one run (as hibenchonphysix did)

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958] and [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3372]
2024-10-22 09:16:41 +02:00
Guillaume Raffy fe4a07a67e refactored all iprbench code found in `usecases/ipr/hibench` into a `iprbench` python package
The main motivation for this is to allow the code executed by jobs to benefit from multiple packages (eg iprbench, [stargemm](https://github.com/g-raffy/starbench), cocluto) to perform common missing tasks such as registering the results output in the iprbench database.

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958] and [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3372]
2024-10-10 18:06:09 +02:00
Guillaume Raffy fb6f926cb1 improvements to hibenchonphysix:
- although still hardcoded, made it easier to switch between alambix and physix clusters
- although still hardcoded, made it easier to switch to test mode (quick test)
- removed hardcoded value for all_hosts_groups as it is retreived from cluster node database

nb: changes made on 08/10/2024

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3372]
2024-10-09 15:16:02 +02:00
Guillaume Raffy 3ca66d0063 adapted code to cope with recent change in univ rennes policy that caused github access to require the use of a proxy
As a result, I finally managed to get hibench working on alambix

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3372]
2024-10-08 17:44:22 +02:00
Guillaume Raffy cf1235f62c added the option --cmake-path to allow the user to choose the cmake executable to use.
As a result, the cmake path is no longer hardcoded (the hardcoded one was not suitable for alambix)

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3372]
2024-10-08 17:41:18 +02:00
Guillaume Raffy 5d59650e84 added the --arch-regexp option to allow the user to restrict benchmarks on some architectures
As an example, this allowed me to run the benchmark on alambix50 only for testing purposes.

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3372]
2024-10-08 17:27:05 +02:00
Guillaume Raffy c534d7e135 improved the hosts table to ease adaptation to alambix instead of physix
This hosts description table is still hardcoded, though... at some point it will be better to use external data to make the code more generic (an attempt was made with pandas, but this introduced complexity in the setup so I decided to keep it hardcoded for the moment).

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3372]
2024-10-08 17:22:26 +02:00
Guillaume Raffy 350785bfee fixed regressions introduced in commit [b8c8a1b0e6]
since starbench is now an installable package, there is no starbench.py script anymore; starbench is no longer a simple python script; the existing code that assumed starbench was a simple python needed to be adapted.

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3372]
2024-10-08 17:12:22 +02:00
Guillaume Raffy 2ba66a498d fixed bugs introduced in commit [4e0e3b60bc]
work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3372]
2024-10-08 16:58:40 +02:00
Guillaume Raffy f2ceeb2cdb added a mechanism to prevent starbench to hang in case the executed command fails
I had the case where on_exit() was never called because proc had no value and therefore the attempt to pass proc.pid to on_exit caused an exception before on_exit was called. As a result, the mater thread was waiting its children threads forever, as these child never signaled that they finished.

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3372]
2024-10-08 16:46:53 +02:00
Guillaume Raffy d71bf3f67f added the --results-dir option
- choosing different rsults dir allows to run the same benchmark more than once to have more than one measure
- this makes `hibenchonphysix.py` more decoupled from hibench, in the hope that it will be completely unaware of hibench at some poing (therefore reusable with other benchmarks)
2024-10-07 12:16:47 +02:00
Guillaume Raffy 49aebf38a5 updated documentation regarding last commit's change (rewriting in python)
work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3372]
2024-10-07 12:06:45 +02:00
Guillaume Raffy 4e0e3b60bc rewrote hibench-on-physix.sh in python
this work is preliminary work to add options to make it more generic (eg run something else than hibridon)

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3372]
2024-10-04 18:27:21 +02:00
Guillaume Raffy 46d7fd1fa7 improved showresults.py:
- added the ability to show the performance per clock cycle (eg to see if avx512 has an effect on the computation)
- the cpus are now sorted on x axis depending on their generation

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3372]
2024-10-04 18:24:02 +02:00
Guillaume Raffy 1423090328 showresult.py now dislpays a graphic comparing the performance of hibridon on different cpus
work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3372]
2024-10-01 14:25:56 +02:00
Guillaume Raffy ccb0acd817 improved hibench results parser to retrieve details of configuration (eg mkl version)
work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3372]
2024-09-30 17:47:15 +02:00
Guillaume Raffy 1d66fc1edb added a tool to parse benchmark output files to summarize it into a table, so that it can be exploited to create graphs
work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3372]
2024-09-27 23:58:14 +02:00
Guillaume Raffy c4732fee87 improved usecase file hierarchy to accomodate multiple uses cases 2024-09-27 23:53:24 +02:00
Guillaume Raffy 0693b2c948 refactoring: documented mamul1 source code related to clocks to clarify the meansured times 2024-07-01 09:30:26 +02:00
Guillaume Raffy fb7608ecdd removed hardcoded path 2024-06-30 17:16:39 +02:00
Guillaume Raffy de7c1fb2dd fixed styling errors 2024-06-30 17:15:45 +02:00
Guillaume Raffy 249ef1f3e7 refactored by isolated all core functions and classes into a core.py source file 2024-06-30 16:20:34 +02:00
Guillaume Raffy 68cb7169c7 fixed dangerous-default-value / W0102 potential problem 2024-06-30 16:08:10 +02:00
Guillaume Raffy c05ff89d29 added a complete standalone usage example (mamul1: mutiplication of matrices) in the form of a unit test
note: [matmul] is a copy of [https://github.com/g-raffy/flobe/tree/main/benchmarks/mamul1]
2024-06-30 15:53:03 +02:00
Guillaume Raffy 3dc0d12307 decoupled starbench_cmake_app from git repos information, so that starbench_cmake_app can now be used with any source code provider, not only from git repositories (eg an existing directory tree)
work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3878]
2024-06-28 15:07:37 +02:00
Guillaume Raffy b8c8a1b0e6 turned starbench into an installable package
work related to  [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3878]
2024-06-21 14:48:00 +02:00
Guillaume Raffy a43eb68db5 fixed all styling warnings and comments, and documented the code
work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3872] as I'm planning to reuse starbench to add new automatic benchmarks
2024-06-21 08:50:36 +02:00
Guillaume Raffy dc897e9225 fixed styling errors detected by pylint
work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3878]
2024-06-20 11:51:53 +02:00
Guillaume Raffy f87e564528 reorganized files and documented 2022-06-10 08:39:22 +02:00
g-raffy 165da43619
Create README.md 2022-06-09 15:59:52 +02:00
Guillaume Raffy 2c349315cd the job script is now saved to a location that should avoid it to be written by multiple jobs at the same time, thus avoiding race conditions issues. 2022-06-09 11:16:36 +02:00
Guillaume Raffy 5bc51c78ca fixed bug that caused starbench.py source code to be included twice (and one of them causing syntax errors) 2022-06-09 11:15:00 +02:00