{"id":28716179,"url":"https://github.com/amirabbasasadi/rockyml","last_synced_at":"2025-06-15T02:39:36.679Z","repository":{"id":65293119,"uuid":"569471513","full_name":"amirabbasasadi/RockyML","owner":"amirabbasasadi","description":"⛰️ RockyML - A High-Performance Scientific Computing Framework for Non-smooth Machine Learning Problems","archived":false,"fork":false,"pushed_at":"2023-04-07T01:53:16.000Z","size":19539,"stargazers_count":19,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-13T16:30:14.531Z","etag":null,"topics":["cplusplus","cpp","deep-learning","deep-neural-networks","distributed-computing","high-performance","machine-learning","mpi","optimization","parallel-computing","scientific-computing"],"latest_commit_sha":null,"homepage":"https://amirabbasasadi.github.io/RockyML","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/amirabbasasadi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-11-22T22:43:54.000Z","updated_at":"2024-11-14T09:50:11.000Z","dependencies_parsed_at":"2025-04-13T16:30:22.564Z","dependency_job_id":"9edcfaa5-2bab-4d1f-98d4-78e94845f8e3","html_url":"https://github.com/amirabbasasadi/RockyML","commit_stats":{"total_commits":214,"total_committers":1,"mean_commits":214.0,"dds":0.0,"last_synced_commit":"ab8a70e0416b1edb4a56941ac405feb958cbd9f0"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/amirabbasasadi/RockyML","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amirabbasasadi%2FRockyML","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amirabbasasadi%2FRockyML/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amirabbasasadi%2FRockyML/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amirabbasasadi%2FRockyML/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amirabbasasadi","download_url":"https://codeload.github.com/amirabbasasadi/RockyML/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amirabbasasadi%2FRockyML/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259914053,"owners_count":22931297,"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":["cplusplus","cpp","deep-learning","deep-neural-networks","distributed-computing","high-performance","machine-learning","mpi","optimization","parallel-computing","scientific-computing"],"created_at":"2025-06-15T02:39:36.065Z","updated_at":"2025-06-15T02:39:36.664Z","avatar_url":"https://github.com/amirabbasasadi.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp\u003e\u003cimg align=\"center\" src=\"/logo/rockyml-poster-white-2500.png\"\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/C%2B%2B-17-blueviolet?style=flat\"\u003e\n  \u003ca href=\"https://amirabbasasadi.github.io/RockyML\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/view-Documentation-red?\"\u003e\u003c/a\u003e\n  \u003cimg src=\"http://img.shields.io/github/actions/workflow/status/amirabbasasadi/RockyML/ctest.yml?branch=main\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/commit-activity/m/amirabbasasadi/RockyML\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/amirabbasasadi/RockyML\"\u003e\n  \u003ca href=\"https://zenodo.org/badge/latestdoi/569471513\"\u003e\u003cimg src=\"https://zenodo.org/badge/569471513.svg\" alt=\"DOI\"\u003e\u003c/a\u003e\n\u003c/p\u003e  \n\u003cbr\u003e\n\u003cbr\u003e\n\u003cp align=\"center\"\u003e📔 Documentation : \u003ca target=\"_blank\" href=\"https://amirabbasasadi.github.io/RockyML\"\u003eamirabbasasadi.github.io/RockyML\u003c/a\u003e \u003c/p\u003e\n\n## Tutorials\n\n### Zagros Tutorials\n- [Using with CMake](https://amirabbasasadi.github.io/RockyML/build.html)\n- [Create your first optimizer with Dena and Zagros](https://amirabbasasadi.github.io/RockyML/zagros_minimal.html)\n- [Define a custom optimization problem in Zagros](https://amirabbasasadi.github.io/RockyML/zagros_system.html)\n- [Block optimization for large problems](https://amirabbasasadi.github.io/RockyML/block_optimization.html)\n- [Distributed optimization](https://amirabbasasadi.github.io/RockyML/zagros_distributed.html)\n- [Designing search algorithms using Dena](https://amirabbasasadi.github.io/RockyML/dena.html)\n- [Test problems for benchmarking optimizers](https://amirabbasasadi.github.io/RockyML/landscapes.html)\n\n## Components\n### Zagros\nDesign Goals:\n- Providing a language called Dena for designing arbitrary complex optimizers by combining \n  - Modular and parallel search strategies: Genetic, PSO, EDA, ...\n  - Communication strategies for distributed optimization on top of MPI\n  - Analyzer strategies for analyzing objective functions\n  - Blocking strategies for block optimization\n  - Logging strategies for tracking optimization experiments on local system or a remote server\n- Hybrid parallelism: multi-threading in each node and message passing across nodes (MPI)\n- ‌Block optimization for using memory-intensive optimizers for large number of variables\n\n```cpp\n#include \u003cmpi.h\u003e\n#include \u003crocky/zagros/benchmark.h\u003e\n#include \u003crocky/zagros/flow.h\u003e\n\nusing namespace rocky::zagros;\nusing namespace rocky::zagros::dena;\n\nint main(int argc, char* argv[]){\n    MPI_Init(\u0026argc, \u0026argv);\n    \n    // define the optimization problem\n    const int dim = 100;\n    benchmark::rastrigin\u003cfloat\u003e problem(dim);\n\n    // recording the result of optimization\n    local_log_handler log_handler(\"result.csv\");\n\n    // define the optimizer\n    auto optimizer = container::create(\"A\", 300)\n                    \u003e\u003e init::uniform(\"A\") \n                    \u003e\u003e run::n_times(500,\n                            mutate::gaussian(\"A\")\n                            \u003e\u003e run::with_probability(0.2,\n                                crossover::differential_evolution(\"A\")\n                            )\n                            \u003e\u003e log::local::best(\"A\", log_handler)\n                        );\n\n    // create a runtime for executing the optimizer \n    basic_runtime\u003cfloat, dim\u003e runtime(\u0026problem);\n    runtime.run(optimizer);\n\n    MPI_Finalize();\n    return 0;\n}\n```\n\n\n### Etna (Work in progress)\nBuilding blocks for designing non-differentiable neural networks\n\n- Fast, low overhead, and thread-safe \n- Various components:\n  - Standard deep learning layers\n  - Discrete and integer layers\n  - Combinatorial layers\n  - Stochastic layers\n  - Dynamic layers\n\n\n## About\n### Publications\nIf you use RockyML in your research, please cite it as follows:\n```bib\n@software{RockyML,\n  author = {Asadi, Amirabbas},\n  doi = {10.5281/zenodo.7612838},\n  month = {2},\n  title = {{RockyML, A Scientific Computing Framework for Non-smooth Machine Learning Problems}},\n  url = {https://github.com/amirabbasasadi/RockyML},\n  year = {2023}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famirabbasasadi%2Frockyml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famirabbasasadi%2Frockyml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famirabbasasadi%2Frockyml/lists"}