{"id":19914935,"url":"https://github.com/ruslkhay/sm24","last_synced_at":"2026-05-09T12:37:38.285Z","repository":{"id":259041760,"uuid":"875009223","full_name":"ruslkhay/SM24","owner":"ruslkhay","description":"Representation of OMP + MPI capabilities on Moscow State University supercomputer","archived":false,"fork":false,"pushed_at":"2024-12-12T10:57:48.000Z","size":1634,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-28T16:22:23.915Z","etag":null,"topics":["cpp","mathematical-modelling","mpi","omp-parallel","supercomputing"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ruslkhay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-10-18T22:20:23.000Z","updated_at":"2025-06-03T19:30:43.000Z","dependencies_parsed_at":"2024-11-27T03:16:49.676Z","dependency_job_id":null,"html_url":"https://github.com/ruslkhay/SM24","commit_stats":null,"previous_names":["ruslkhay/sm24"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ruslkhay/SM24","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruslkhay%2FSM24","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruslkhay%2FSM24/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruslkhay%2FSM24/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruslkhay%2FSM24/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruslkhay","download_url":"https://codeload.github.com/ruslkhay/SM24/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruslkhay%2FSM24/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32819779,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"online","status_checked_at":"2026-05-09T02:00:06.633Z","response_time":123,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cpp","mathematical-modelling","mpi","omp-parallel","supercomputing"],"created_at":"2024-11-12T21:37:36.860Z","updated_at":"2026-05-09T12:37:38.245Z","avatar_url":"https://github.com/ruslkhay.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n# Overview:\n\n\nThis program solves Dirichlet problem\n```math\nk(x, y) = \n\\begin{cases} \n-\\Delta{u} = f(x,y), \u0026 (x,y) \\in D \\\\ \nu(x, y) = 0, \u0026 (x,y) \\in \\gamma\n\\end{cases} \n```\n\n\nfor a D, that is right trapezoid with next nodes:\n$A(0,0)$, $B(3,0)$, $C(2,3)$, $D(0,3)$, - $\\gamma$ is its boarder and $f(x, y) = 1 \\quad \\forall (x,y) \\in D$.\n\nThe goal is to build accurate and parallel solution, using **OpenMP** and \n**MPI** libraries. Moreover launch it on Moscow State University \n[Polus](http://hpc.cmc.msu.ru/polus) computing complex.\n\n\n## Project description\n\n1. [Mathematical model of solution](docs/math_model.md).\n2. [Difference Scheme for Solving the Problem](docs/diff_schema.md)\n3. [Method for Solving Systems of Linear Algebraic Equations](docs/math_model.md)\n4. [OpenMP implementation](docs/omp.md)\n5. [Solution plots](docs/sol_images.md)\n6. [MPI implementation](docs/mpi.md)\n6. [MPI/OpenMP implementation](docs/mpi+omp.md)\n\n## Results representation\n\n### Heatmap for solution on grid (M, N) = (160, 180)\n\u003cimg src=\"docs/figures/omp_160_180_4.png\"\u003e\n\n# Installation\nClone repository and download python package manager and create venv\n```\ncurl -sSL https://pdm-project.org/install-pdm.py | python3 -\npdm install\n```\n\n## For IMP Polus:\nTo automatically send required code `./Polus/` to your remote Polus space\ngo to `dodo.py`, change user name in line 15 correspondingly to yours and run\n```\ndoit send\n```\nAfter that switch to remote.\nExtract `sm24.zip` archive and go to `your_folder_name/Polus/`.\n\n### Launch\nYou can manfully change grid size in *.cpp files. To change number of processes\nor threads open needed *.lsf.\n1. `bsub \u003c mpi.lsf` - runs MPI+OpenMP version\n2. `bsub \u003c omp.lsf` - runs OpenMP version\n\n## For local testing:\nRun CLI command from root directory to create executables:\n```\ndoit build\n```\nOnly `main.cpp`, `mainMPI.cpp` and `mainMPIOpenMP.cpp` are targeted. \n\n### Launch\nYou can manfully change grid size or number of threads in \n1. `./main` - run basic and OpenMP version of program\n2. `mpirun -np N ./mpi` - runs MPI version with N processes\n3. `mpirun -np N ./ompmpi` - runs MPI+OpenMP version with N processes\n\nAll output data would be saved in `build` directory.\nTo create the heatmaps run from root directory command `doit figures`.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruslkhay%2Fsm24","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fruslkhay%2Fsm24","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruslkhay%2Fsm24/lists"}