• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

include/H09-Apr-2018-524279

tests/H03-May-2022-3321

.gitignoreH A D09-Apr-20188 22

README.mdH A D09-Apr-20182.2 KiB7052

README.md

1Blaze-Iterative
2===============
3
4This is a set of iterative linear system solvers intended for use
5with the Blaze library, a high-performance C++ linear algebra library
6(https://bitbucket.org/blaze-lib/).
7The API is currently based on a tag-dispatch system to choose a particular algorithm.
8
9Currently implemented algorithms:
10- Conjugate Gradient (CG)
11- BiCGSTAB
12
13
14Planned algorithms:
15- Preconditioned CG
16- Preconditioned BiCGSTAB
17- (Preconditioned) BiCGSTAB(l)
18- GMRES
19- Arnoldi
20- Lanczos
21
22Potential algorithms (if sufficient interest):
23- LSQR
24- LSMR
25
26
27Please open an issue to discuss/request features.
28
29
30Installation
31------------
32Installing BlazeIterative is done via the usual CMake procedure:
33- create an out-of-tree build directory (highly recommended)
34- run cmake
35- build and install using your favorite build systems
36
37An example of the process on a linux-like system might be (from the BlazeIterative root):
38```bash
39mkdir build && cd build
40ccmake .. # This is where you set your install location, defaults to /usr/local on my machine
41make && make install
42```
43
44The library headers will install to `${CMAKE_INSTALL_PREFIX}/include/BlazeIterative`.
45The cmake files that allow you to `find_package(BlazeIterative)` are installed in
46`${CMAKE_INSTALL_PREFIX}/share/BlazeIterative/cmake`.
47If `CMAKE_INSTALL_PREFIX` is on your `CMAKE_PREFIX_PATH`, then `find_package(BlazeIterative)` should
48work without any issues (tested with cmake 3.9).
49
50
51Using BlazeIterative in your projects
52-------------------------------------
53BlazeIterative is developed using CMake, so it is easy to use in another CMake project.
54The installation process exports the target: "BlazeIterative::BlazeIterative", which
55should be linked against. This will take care of linking against Blaze, but you still
56must find the blaze package in your own project (if anyone knows how to solve the transitive
57dependency problem in cmake, please teach me!).
58This is a minimal example of a CMakeLists.txt for a project using BlazeIterative.
59
60```cmake
61project(MyReallyComplicatedProject)
62
63find_package(blaze)
64find_package(BlazeIterative)
65
66add_executable(myCoolExecutable main.cpp)
67target_link_libraries(myCoolExecutable PUBLIC BlazeIterative::BlazeIterative)
68```
69
70