{"id":17321058,"url":"https://github.com/lkeegan/blockcg","last_synced_at":"2025-03-27T03:15:37.546Z","repository":{"id":97229184,"uuid":"133989567","full_name":"lkeegan/blockCG","owner":"lkeegan","description":"Reference implementations of SBCGrQ and other Block Conjugate-Gradient iterative Krylov solvers in C++/Eigen","archived":false,"fork":false,"pushed_at":"2018-09-24T10:42:53.000Z","size":1829,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-01T08:31:09.477Z","etag":null,"topics":["block-solvers","conjugate-gradient","krylov-methods","lattice-qcd","rhmc"],"latest_commit_sha":null,"homepage":"","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/lkeegan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2018-05-18T18:18:37.000Z","updated_at":"2024-02-15T14:59:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"f3802556-0f19-40d3-862d-24f4762169ca","html_url":"https://github.com/lkeegan/blockCG","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/lkeegan%2FblockCG","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkeegan%2FblockCG/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkeegan%2FblockCG/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkeegan%2FblockCG/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lkeegan","download_url":"https://codeload.github.com/lkeegan/blockCG/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245773180,"owners_count":20669719,"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":["block-solvers","conjugate-gradient","krylov-methods","lattice-qcd","rhmc"],"created_at":"2024-10-15T13:34:50.253Z","updated_at":"2025-03-27T03:15:37.514Z","avatar_url":"https://github.com/lkeegan.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# blockCG [![Build Status](https://travis-ci.org/lkeegan/blockCG.svg?branch=master)](https://travis-ci.org/lkeegan/blockCG) [![codecov](https://codecov.io/gh/lkeegan/blockCG/branch/master/graph/badge.svg)](https://codecov.io/gh/lkeegan/blockCG)\nReference implementations of several Block Conjugate-Gradient iterative solvers in C++, including the SBCGrQ multi-shift block CG solver used in [http://arxiv.org/abs/1808.01829](http://arxiv.org/abs/1808.01829). The block solvers are implemented in [inc/block_solvers.hpp](inc/block_solvers.hpp), with some simple examples of their use in [test/solvers.cpp](test/solvers.cpp) and [benchmark.cpp](benchmark.cpp).\n\nBlock solvers are a variant of iterative Krylov solvers that act on multiple RHS vectors, and can converge significantly faster than standard solvers. For more details of the solvers implemented here, along with references to the original formulations, see the [documentation](doc/blockCG.pdf).\n\nThis code uses the [Eigen](http://eigen.tuxfamily.org) C++ template library for the small dense matrix operations, and the [Catch2](https://github.com/catchorg/Catch2) test framework, both included.\n\n## Implemented solvers\n\nBlock     | Multishift Block | Standard \n--------- | ---------------- | --------\n BCG      | SBCGrQ           | CG\n BCGrQ    |                  | SCG\n\n## Use\nTo compile and run the tests in debug mode to check everything is working:\n```\nmkdir Debug\ncd Debug\ncmake .. -DCMAKE_BUILD_TYPE=Debug\nmake tests\n```\nTo compile and run the example benchmark code that compares the SCG and SBCGrQ solvers:\n```\nmkdir Release\ncd Release\ncmake .. -DCMAKE_BUILD_TYPE=Release\nmake benchmark\n./benchmark 1e3 1e-3 1e-10\n```\nwhere\n- 1e3 is the \"lattice volume\": proportional to the size of the sparse matrix\n- 1e-3 is the \"mass\": inversely related to the condition number of the matrix\n- 1e-10 is the stopping criterion for the relative residual.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flkeegan%2Fblockcg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flkeegan%2Fblockcg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flkeegan%2Fblockcg/lists"}