{"id":21140879,"url":"https://github.com/glotzerlab/hoomd-benchmarks","last_synced_at":"2025-07-09T04:31:45.811Z","repository":{"id":36363997,"uuid":"213991572","full_name":"glotzerlab/hoomd-benchmarks","owner":"glotzerlab","description":"A collection of benchmarks for HOOMD-blue","archived":false,"fork":false,"pushed_at":"2024-10-29T14:00:28.000Z","size":82328,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":9,"default_branch":"trunk","last_synced_at":"2024-10-29T17:11:35.466Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/glotzerlab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-09T18:16:33.000Z","updated_at":"2024-10-29T14:00:45.000Z","dependencies_parsed_at":"2023-12-11T14:32:52.087Z","dependency_job_id":"e4b7df2b-189e-4c56-ad35-0a98a684b2b7","html_url":"https://github.com/glotzerlab/hoomd-benchmarks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glotzerlab%2Fhoomd-benchmarks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glotzerlab%2Fhoomd-benchmarks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glotzerlab%2Fhoomd-benchmarks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glotzerlab%2Fhoomd-benchmarks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/glotzerlab","download_url":"https://codeload.github.com/glotzerlab/hoomd-benchmarks/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225483061,"owners_count":17481290,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-20T07:18:40.281Z","updated_at":"2024-11-20T07:18:40.831Z","avatar_url":"https://github.com/glotzerlab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HOOMD-blue benchmarks\n\nThis repository contains performance benchmarks for [HOOMD-blue][hoomd]. Use the benchmarks to test\nyour HOOMD-blue installation, check the performance of simulations on your hardware, or compare\nsimulation performance between different versions, build configurations, or systems.\n\n## Requirements\n\n* HOOMD-blue \u003e=3.0\n* numpy\n* pandas\n\n## Usage\n\n1. Clone this repository:\n  * `git clone --branch trunk --depth 1 https://github.com/glotzerlab/hoomd-benchmarks.git`\n  * `cd hoomd-benchmarks`\n2. Run a specific benchmark with options:\n  * `python3 -m hoomd_benchmarks.md_pair_lj --device GPU`\n  * `mpirun -n 2 python3 -m hoomd_benchmarks.md_pair_wca --device GPU -N 1000000 -v`\n  * `mpirun -n 4 python3 -m hoomd_benchmarks.hpmc_sphere --device CPU -N 4000 --repeat 10`\n3. Run the full benchmarks suite:\n  * `python3 -m hoomd_benchmarks --device CPU`\n  * `mpirun -n 8 python3 -m hoomd_benchmarks --device CPU`\n\nThe first execution will take some time as the benchmark generates the requested input\nconfiguration. Subsequent runs with the same paramters will read input configurations from\n`initial_configuration_cache/` if it exists. Activate the verbose `-v` command line option to see\nstatus messages during the initial configuration generation and the benchmark execution.\n\n## Scripting\n\nWithout the verbose flag, each benchmark module writes only a single performance number to stdout.\nUse this in conjunction with scripts to execute a number of benchmarks and compare the results.\nPython scripts can import the `hoomd_benchmarks` module and call the `Benchmark` classes directly.\nSee their docstrings for details.\n\n## Common options\n\nThe following command line options are available for both the full test suite and individual\ntests:\n\n* `--device`: Set what device to execute the benchmark on. Either `CPU` or `GPU`.\n* `-N`: Number of particles.\n* `--rho`: Number density.\n* `--dimensions`: Number of dimensions. Either `2` or `3`.\n* `--warmup_steps`: Number of timesteps to run before timing.\n* `--benchmark_steps`: Number of timesteps to run in the benchmark.\n* `--repeat`: Number of times to repeat the run.\n* `--verbose`: Enable verbose output.\n\nWhen using the Python API, pass these options to the benchmark's constructor.\n\nWhen running the full benchmark suite, `benchmark_steps` and `warmup_steps` set the number of steps\nfor **typical** benchmarks. Some unusually fast or slow benchmarks may scale the given value to\na larger or smaller number of actual steps.\n\nWhen running individual benchmarks, `benchmark_steps`, and `warmup_steps` set the exact number of\nsteps to run with no scaling.\n\n## The benchmark suite\n\nRun the full suite with `python3 -m hoomd_benchmarks \u003coptions\u003e`.\n\nThe full suite accepts the following command line options in addition to the common options:\n\n* `--benchmarks`: Select the benchmarks to run by class name using `fnmatch` syntax.\n* `--output`: Add column of benchmark results to or create the output CSV file.\n* `--name`: Name identifying this benchmark run (leave unset to use the HOOMD-blue version).\n\n## Benchmarks\n\nRun any benchmark individually with `python3 -m hoomd_benchmarks.\u003cbenchmark_name\u003e \u003coptions\u003e`.\nSome benchmarks have additional command line options, find these with\n`python3 -m hoomd_benchmarks.\u003cbenchmark_name\u003e --help`.\n\n### Simulation benchmarks\n\nSimulation benchmarks execute simulation runs with models representative of research use-cases and\nreport performance in time steps per second (MD) and trial moves per second per particle (HPMC).\n\n* `hpmc_sphere` - Hard particle Monte Carlo simulation of spheres (diameter=1.0, d=0.1).\n* `md_pair_lj` - Molecular dynamics simulation with the Lennard-Jones pair potential with the NVT\n  integration method (epsilon=1, sigma=1, r_cut=2.5, kT=1.2, tau=0.5).\n* `md_pair_opp` - Molecular dynamics simulation with theOPP pair potential with the NVT\n  integration method (C1=1.7925807855607998, C2=1.7925807855607998, eta1=15, eta2=3, k=7.0,\n  phi=5.5, r_cut=2.557, kT=1.2, tau=0.5).\n* `md_pair_table` - Molecular dynamics simulation with the Lennard-Jones pair potential with the NVT\n  integration method (epsilon=1, sigma=1, r_cut=2.5, kT=1.2, tau=0.5) - evaluated using\n  ``hoomd.md.pair.Table``.\n* `md_pair_wca` - Molecular dynamics simulation with the WCA pair potential with the NVT\n  integration method (epsilon=1, sigma=1, r_cut=2**(1/6), kT=1.2, tau=0.5).\n\n### Microbenchmarks\n\nMicrobenchmarks exercise a portion of the code and report performance with a metric specific to each\nmicrobenchmark.\n\n* `microbenchmark_box_reisze` - Measure the time steps per second of a sim with only box resize.\n* `microbenchmark_empty_simulation` - Measure the time per step with an empty Simulation object.\n* `microbenchmark_custom_trigger` - Measure the time taken per step to evaluate a custom trigger.\n* `microbenchmark_custom_updater` - Measure the time taken per step to call a custom updater.\n* `microbenchmark_custom_force` - Measure the time taken per step to use a constant custom force.\n* `microbenchmark_get_snapshot` - Measure the time taken to call State.get_snapshot.\n* `microbenchmark_set_snapshot` - Measure the time taken to call State.set_snapshot.\n* `write_gsd` - Measure how many GSD frames (containing particle positions) can be written per\n  second.\n* `write_gsd_log` - Measure how many GSD frames (containing 1 logged value) can be written per\n  second.\n* `write_hdf5_log` - Measure how many HDF5 frames (containing 1 logged value) can be written per\n  second.\n\n## Change log\n\n`hoomd_benchmarks` does not have a formal release cycle. Examine the git commit history to see the\nchanges.\n\n## Contributing to HOOMD-blue\n\nContributions are welcome via [pull requests][pulls]. Please report bugs and suggest feature\nenhancements via the [issue tracker][issues]. See [CONTRIBUTING.md](CONTRIBUTING.md) and\n[ARCHITECTURE.md](ARCHITECTURE.md) for more information.\n\n## Checking for performance regressions\n\nTo check for performance regressions before each HOOMD-relase:\n\n1. Build the release candidate in `$HOME/build/hoomd/releases/\u003crelease\u003e`\n2. Run `job-gl-cpu.sh` and `job-gl-gpu.sh` on Great Lakes.\n3. Run `python report.py` to generate the report.\n\n## License\n\n**HOOMD-blue** is available under the [3-clause BSD license](LICENSE).\n\n[pulls]: https://github.com/glotzerlab/hoomd-benchmarks/pulls\n[issues]: https://github.com/glotzerlab/hoomd-benchmarks/issues\n[hoomd]: http://glotzerlab.engin.umich.edu/hoomd-blue/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglotzerlab%2Fhoomd-benchmarks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglotzerlab%2Fhoomd-benchmarks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglotzerlab%2Fhoomd-benchmarks/lists"}