{"id":16574942,"url":"https://github.com/fedeizzo/particleswarmoptimization-openmpi","last_synced_at":"2025-03-05T17:16:32.224Z","repository":{"id":77067904,"uuid":"548289214","full_name":"fedeizzo/ParticleSwarmOptimization-OpenMPI","owner":"fedeizzo","description":"High Performance Computing course project 2022","archived":false,"fork":false,"pushed_at":"2022-12-14T10:55:59.000Z","size":31298,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-16T05:12:50.101Z","etag":null,"topics":["c","cluster-analysis","concurrent-programming","openmpi","parallel-computing"],"latest_commit_sha":null,"homepage":"https://fedeizzo.github.io/ParticleSwarmOptimization-OpenMPI/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fedeizzo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2022-10-09T09:05:51.000Z","updated_at":"2023-05-16T10:03:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"630663de-cc23-49f7-b9f7-b71097d3107b","html_url":"https://github.com/fedeizzo/ParticleSwarmOptimization-OpenMPI","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/fedeizzo%2FParticleSwarmOptimization-OpenMPI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fedeizzo%2FParticleSwarmOptimization-OpenMPI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fedeizzo%2FParticleSwarmOptimization-OpenMPI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fedeizzo%2FParticleSwarmOptimization-OpenMPI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fedeizzo","download_url":"https://codeload.github.com/fedeizzo/ParticleSwarmOptimization-OpenMPI/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242067715,"owners_count":20066751,"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":["c","cluster-analysis","concurrent-programming","openmpi","parallel-computing"],"created_at":"2024-10-11T21:46:07.456Z","updated_at":"2025-03-05T17:16:32.183Z","avatar_url":"https://github.com/fedeizzo.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Documentation](https://github.com/fedeizzo/ParticleSwarmOptimization-OpenMPI/actions/workflows/docs.yaml/badge.svg)\n![Docker build](https://github.com/fedeizzo/ParticleSwarmOptimization-OpenMPI/actions/workflows/docker-image.yaml/badge.svg)\n\n# Particle Swarm Optimization OpenMPI\n\u003c!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-refresh-toc --\u003e\n**Table of Contents**\n\n- [Particle Swarm Optimization OpenMPI](#particle-swarm-optimization-openmpi)\n    - [Build](#build)\n        - [Binary](#binary)\n        - [Docker](#docker)\n        - [Nix](#nix)\n        - [Udocker](#udocker)\n\t- [Run](#run)\n        - [Local](#local)\n        - [Cluster (through PBS)](#cluster-through-pbs)\n\t- [Report](#report)\n    - [Dependencies](#dependencies)\n\n\u003c!-- markdown-toc end --\u003e\n\n*ParticleSwarmOptimization-openMPI* provides an basic implementation of [PSO](https://en.wikipedia.org/wiki/Particle_swarm_optimization) with support for cluster computation through [OpenMPI](https://www.open-mpi.org/), moreover it uses [OpenMP](https://www.openmp.org/) for thread parallelization.\n\n| \u003ca href=\"https://fedeizzo.github.io/ParticleSwarmOptimization-OpenMPI/report.pdf\" target=\"_blank\"\u003e\u003cb\u003eLong report\u003c/b\u003e\u003c/a\u003e | \u003ca href=\"https://fedeizzo.github.io/ParticleSwarmOptimization-OpenMPI/short-report.pdf\" target=\"_blank\"\u003e\u003cb\u003eShort report\u003c/b\u003e\u003c/a\u003e | \u003ca href=\"https://fedeizzo.github.io/ParticleSwarmOptimization-OpenMPI/presentation.pdf\" target=\"_blank\"\u003e\u003cb\u003ePresentation\u003c/b\u003e\u003c/a\u003e |\n|--------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------|\n| [![](assets/report-thumbnail.png)](https://fedeizzo.github.io/ParticleSwarmOptimization-OpenMPI/report.pdf)              | [![](assets/short-report-thumbnail.png)](https://fedeizzo.github.io/ParticleSwarmOptimization-OpenMPI/short-report.pdf)         | [![](assets/presentation-thumbnail.png)](https://fedeizzo.github.io/ParticleSwarmOptimization-OpenMPI/presentation.pdf)        |\n\n## Results\n\n| **Sphere**             | **Easom**             | **Ackley**             |\n|------------------------|-----------------------|------------------------|\n| ![](assets/sphere.gif) | ![](assets/easom.gif) | ![](assets/ackley.gif) |\n\n## Build\n### Binary\n```bash\nmake\n```\n\n### Docker\n```bash\nmake docker-build\n```\n\nwith optional argument `DOCKER_TAG`\n\n```bash\nmake DOCKER_TAG=mytag docker-build\n```\n\n### Nix\n```\nnix build .\n```\n\n### Udocker\n```bash\nmake cluster-pull\n```\n\n## Run\n### Local\n```bash\n./bin/particle-swarm-optimization pso-data.ini\n```\n\nor\n\n```bash\nmpirun -n \u003cprocessesNumber ./bin/particle-swarm-optimization -u pso-data.ini\n```\n\nfor optional arguments please execute `./bin/particle-swarm-optimization --help`.\n\n\n### Cluster (through PBS)\nNumber of runs should be specified directly inside [this script](./scripts/generate_cluster_runs.sh)\n```bash\nmake cluster-run\n```\n\n## Report\n```bash\nmake report\n```\n\nor\n\n```bash\nnix build .#report\n```\n\n## Dependencies\nIf you have installed [nix package manager](https://nixos.org)\n```bash\nnix shell\n```\n\notherwise dependencies are described below.\n\nBuild:\n\n* OpenMPI\n* sqlite C library\n* make\n* pkg-config\n* OpenMP\n\nPython dependencies for jupyter analysis:\n\n* numpy\n* jupyterlab or jupyter notebook\n* pandas\n* matplotlib\n\nDocumentation and report generation:\n\n* pandoc\n* doxygen\n* latex with following packages:\n  * adjustbox\n  * babel-german\n  * background\n  * bidi\n  * collectbox\n  * csquotes\n  * everypage\n  * filehook\n  * footmisc\n  * footnotebackref\n  * framed\n  * fvextra\n  * letltxmacro\n  * ly1\n  * mdframed\n  * mweights\n  * needspace\n  * pagecolor\n  * sourcecodepro\n  * sourcesanspro\n  * titling\n  * ucharcat\n  * ulem\n  * unicode-math\n  * upquote\n  * xecjk\n  * xurl\n  * zref\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffedeizzo%2Fparticleswarmoptimization-openmpi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffedeizzo%2Fparticleswarmoptimization-openmpi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffedeizzo%2Fparticleswarmoptimization-openmpi/lists"}