{"id":19850010,"url":"https://github.com/neudinger/equadiffmpi","last_synced_at":"2026-05-07T13:41:07.077Z","repository":{"id":157327069,"uuid":"624972544","full_name":"neudinger/equadiffMPI","owner":"neudinger","description":"Distributed diffusion equation C/C++ OpenMP one-sided communication MPI","archived":false,"fork":false,"pushed_at":"2023-04-27T13:58:02.000Z","size":16,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-28T23:11:08.646Z","etag":null,"topics":["bash","boost","cmake","cpp","cpp14","hpc","hpc-applications","hpc-clusters","hwloc","hwloc-library","mpi","one-sided","one-sided-jacobi","openmp","openmpi","physics-simulation","shell","slurm","slurm-cluster"],"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/neudinger.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}},"created_at":"2023-04-07T18:17:42.000Z","updated_at":"2023-04-28T16:32:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"1db6e376-c731-443c-b462-8956c372980b","html_url":"https://github.com/neudinger/equadiffMPI","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/neudinger/equadiffMPI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neudinger%2FequadiffMPI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neudinger%2FequadiffMPI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neudinger%2FequadiffMPI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neudinger%2FequadiffMPI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neudinger","download_url":"https://codeload.github.com/neudinger/equadiffMPI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neudinger%2FequadiffMPI/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264605281,"owners_count":23636050,"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":["bash","boost","cmake","cpp","cpp14","hpc","hpc-applications","hpc-clusters","hwloc","hwloc-library","mpi","one-sided","one-sided-jacobi","openmp","openmpi","physics-simulation","shell","slurm","slurm-cluster"],"created_at":"2024-11-12T13:23:57.278Z","updated_at":"2026-05-07T13:41:02.038Z","avatar_url":"https://github.com/neudinger.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Distributed diffusion equation C/C++ OpenMP one-sided communication MPI\n\n![Linux](https://img.shields.io/badge/Linux-FCC624?style=for-the-badge\u0026logo=linux\u0026logoColor=black) ![C++](https://img.shields.io/badge/c++-%2300599C.svg?style=for-the-badge\u0026logo=c%2B%2B\u0026logoColor=white) ![C](https://img.shields.io/badge/c-%2300599C.svg?style=for-the-badge\u0026logo=c\u0026logoColor=white)\n\n![OpenMPI](https://img.shields.io/badge/OpenMPI-%23f01742.svg?style=for-the-badge\u0026logoColor=white) ![HWLOC](https://img.shields.io/badge/HWLOC-%23f01742.svg?style=for-the-badge\u0026logoColor=white) ![OMP](https://img.shields.io/badge/OpenMp-%23316192.svg?style=for-the-badge)\n\n\n\u003e - Cartesian split\n\u003e - Horizontal split\n\nHybrid computation with multiple parallel computation level :\n\n(Cluster level) -\u003e (Machine level) -\u003e (CPU Level) -\u003e (Core Level)\n\n- Distributed parallel operations layer with MPI domain splitting.\n- Multithreaded parallel operations layer with OpenMP.\n- Vectorized parallel operations layer with cached blocked loops.\n\nUsage of [HWLOC](https://www.open-mpi.org/projects/hwloc/) to gather hierarchical topology and specified thread core process binding.\n\nBoost was used for program_options.\nThe cmake will download and build program_options only if boost is not found.\nOnly this library will be linked to reduce the library loading overhead.\n\n## Cartesian split\n\n```bash\nrm -rf build-cartesian-split/ \u0026\u0026 \\\ncmake -B build-cartesian-split \\\n-DCMAKE_BUILD_TYPE=RelWithDebInfo \\\n-DPRINT_PERF=FALSE \\\n-DOPENMP:BOOL=TRUE -S cartesian-split \u0026\u0026 \\\ncmake --build build-cartesian-split\n```\n\n## Horizontal split\n\nBuild :\n\n```bash\nrm -rf build-horizontal-split/ \u0026\u0026 \\\ncmake -B build-horizontal-split \\\n-DCMAKE_BUILD_TYPE=RelWithDebInfo \\\n-DPRINT_PERF=FALSE \\\n-DOPENMP:BOOL=TRUE -S horizontal-split \u0026\u0026 \\\ncmake --build build-horizontal-split\n```\n\nRun :\n\n```bash\nmpirun \\\n--mca osc pt2pt \\\n--mca orte_base_help_aggregate false \\\n--mca btl_openib_allow_ib true \\\n--mca opal_common_ucx_opal_mem_hooks true \\\n-np ${1} \\\n./build-horizontal-split/bin/stencil \\\n--nbr_of_column 80000 \\\n--nbr_of_row 80000 \\\n--nbr_iters 10000 \\\n--ompthread_nbr ${OMP_NUM_THREADS} \\\n--init_val 1\n```\n\n\n---\n\nC++ 17 was used due to usage of string_view and initializer_list.\\\nMPI for distributed layer.\\\nOpenMP for multithreading purpose.\n\nThis project was built with slurm as cluster node scheduler.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneudinger%2Fequadiffmpi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneudinger%2Fequadiffmpi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneudinger%2Fequadiffmpi/lists"}