{"id":27012226,"url":"https://github.com/kabicm/lu","last_synced_at":"2025-04-04T11:49:06.191Z","repository":{"id":53538627,"uuid":"254682745","full_name":"kabicm/lu","owner":"kabicm","description":"LU-factorization with Scalapack","archived":false,"fork":false,"pushed_at":"2021-04-05T23:55:24.000Z","size":164,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-05-01T18:16:19.800Z","etag":null,"topics":["distributed","lu-decomposition","lu-factorization","mkl","scalapack"],"latest_commit_sha":null,"homepage":null,"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/kabicm.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}},"created_at":"2020-04-10T16:28:12.000Z","updated_at":"2024-05-01T18:16:19.801Z","dependencies_parsed_at":"2022-09-11T10:02:01.933Z","dependency_job_id":null,"html_url":"https://github.com/kabicm/lu","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/kabicm%2Flu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kabicm%2Flu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kabicm%2Flu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kabicm%2Flu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kabicm","download_url":"https://codeload.github.com/kabicm/lu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247174396,"owners_count":20896075,"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":["distributed","lu-decomposition","lu-factorization","mkl","scalapack"],"created_at":"2025-04-04T11:49:05.656Z","updated_at":"2025-04-04T11:49:06.181Z","avatar_url":"https://github.com/kabicm.png","language":"C++","readme":"# LU \u0026 Cholesky Factorizations with ScaLAPACK\n\n## Building and Installing\n\nMake sure the repo is cloned with the `--recursive` flag, e.g.\n```\ngit clone --recursive https://github.com/kabicm/lu\n```\n\nTo build and run, do the following:\n\n```bash\nmkdir build \u0026\u0026 cd build\nCC=gcc-9 CXX=g++-9 cmake -DSCALAPACK_BACKEND=\u003cscalapack-library\u003e .. # or whatever version of gcc compiler you have\n# \u003cscalapack-library can be: MKL, CRAY_LIBSCI or CUSTOM\u003e\nmake -j\nmpiexec -np \u003cnum MPI ranks\u003e ./lu -N \u003cglobal matrix size\u003e -b \u003cblock size\u003e --p_grid=\u003cprow\u003e,\u003cpcol\u003e -r \u003cnum of repetitions\u003e\n\n# Example for LU:\nmpirun -n 4 ./lu -N 1200 -b 128 --p_grid=2,2 -r 2\nWarning: using only 4 out of 5 processes.\n==========================\n    PROBLEM PARAMETERS:\n==========================\nMatrix size: 1200\nBlock size: 128\nProcessor grid: 2 x 2\nNumber of repetitions: 2\n--------------------------\nTIMINGS [ms] = 353 186\n==========================\n\n# Example for Cholesky (output is structured in the same way):\nmpirun -n 4 ./cholesky -N 1200 -b 128 --p_grid=2,2 -r 2\n```\n\n## Generating and Running the Scripts on Daint\nEnter the params you want to work with into `scripts/params.ini`. Now, move to the source folder and generate the _.sh_ files by running `python3 scripts/generate_launch_files.py`. If you only want to generate scripts for lu, you can pass the argument `algo lu`. For only cholesky on the other hand, pass `algo chol`. If no argument is given, both are generated. You can specify the output folder for the benchmarks with `--dir \u003cpath_to_folder\u003e`. It will default to `./benchmarks`.\n\nAfter having generated the files, run `python3 scripts/launch_on_daint.py`. It will generate allocate nodes for each processor size, at the moment using the heuristic that we have n nodes with 2n ranks. If you launch very large jobs, perhaps you have to change the runtime in  `python3 scripts/generate_launch_files.py` or in the bash scripts directly (it defaults to 2 hours at the moment).\nEach `.sh` file contains all jobs for one specific processor size. \n\n## Authors:\n- Marko Kabic (marko.kabic@cscs.ch)\n- Tal Ben Nun (talbn@inf.ethz.ch)\n- Jens Eirik Saethre (saethrej@ethz.ch)\n- Andre Gaillard (andrega@ethz.ch)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkabicm%2Flu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkabicm%2Flu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkabicm%2Flu/lists"}