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

..03-May-2022-

autotune/H11-Jun-2019-1,305875

benchmarks/H11-Jun-2019-5,6653,612

doc/H03-May-2022-3,8242,768

examples/H11-Jun-2019-480205

fflas-ffpack/H11-Jun-2019-66,01053,597

macros/H11-Jun-2019-2,8192,293

tests/H11-Jun-2019-16,22210,754

tutorials/H11-Jun-2019-1,220519

.gitignoreH A D11-Jun-20192.5 KiB128126

.travis.ymlH A D11-Jun-20192.5 KiB10795

AUTHORSH A D11-Jun-2019679 3127

COPYINGH A D11-Jun-201917.7 KiB340281

COPYING.LESSERH A D11-Jun-201925.9 KiB503418

ChangeLogH A D11-Jun-20197.7 KiB217198

INSTALLH A D11-Jun-201915.8 KiB378294

Makefile.amH A D11-Jun-20192.5 KiB8942

README.mdH A D11-Jun-20195.2 KiB11383

TODOH A D11-Jun-20192.3 KiB5145

_clang-formatH A D11-Jun-20191.5 KiB5351

autogen.shH A D11-Jun-2019564 2919

configure.acH A D11-Jun-201910 KiB358272

fflas-ffpack-config.inH A D03-May-20222.7 KiB13181

fflas-ffpack.pc.inH A D11-Jun-2019507 1413

incremente-versionsH A D11-Jun-20194 KiB13695

README.md

1# FFLAS-FFPACK: Finite Field Linear Algebra Subroutines/Package
2
3CI Inria: [![Build Status](https://ci.inria.fr/linbox/buildStatus/icon?job=FFLAS-FFPACK)](https://ci.inria.fr/linbox/view/LinBox%20ecosystem/job/FFLAS-FFPACK/)
4
5Travis: [![Build Status](https://travis-ci.org/linbox-team/fflas-ffpack.svg?branch=master)](https://travis-ci.org/linbox-team/fflas-ffpack/)
6
7## PURPOSE
8
9The FFLAS-FFPACK library provides a set of basic routines for linear algebra over a finite field or the ring of integers with dense and sparse matrices.
10
11It is inspired by the BLAS interface (Basic Linear Algebra Subprograms) and the LAPACK library for numerical linear algebra, and shares part of their design. Yet it differs in many aspects due to the specifities of computing over exact domains such as a finite fields and the field of rationals:
12- it is generic with respect to the finite field, so as to accomodate a large variety of field sizes and implementations;
13- consequently all routines use the C++ template genericity and the library is primarily meant to be used as a source code library, to be included and compiled in the user's software.
14- However, we also provide a compiled version instantiating most common routines over the most common finite fields.
15
16## LICENSE
17
18FFLAS-FFPACK is distributed unded the terms of the GNU LGPL v2.1 or later (see LICENSE).
19
20## REQUIREMENTS:
21- a C++ compiler supporting C++11 standard. This means g++ v4.7 or greater, clang++ v3.4 or greater, icpc v16 or greater (earlier versions of clang and icpc might also work but have not been tested)
22- A BLAS library conforming to either the C or Fortran BLAS standard: OpenBLAS (recommended), or ATLAS. Make sure to use a single threaded version of the BLAS library.
23- [Givaro](https://github.com/linbox-team/givaro) version at least 4.0.1, providing the implementations of the coefficient fields/rings.
24
25## INSTALLATION
26
27In brief:
28```./configure <options> && make && make install```
29
30The most commonly used option include:
31- `--with-blas-libs=<libs>` : to specify the arguments for the linker to find the BLAS
32- `--enable-precompilation` : to precompile the standard templates specializations (and gain some compilation time later on)
33
34Type `./configure --help` to list all options available.
35Note that `givaro` is automatically detected by pkg-config, so you no longer need to pass a `--with-givaro=...` option.
36You may need to set the `PKG_CONFIG_PATH` environment variable to `<givaro-prefix>/lib/pkgconfig` if you have installed it in a non standard directory.
37
38For example on a x86_64 architecture:
39- Using OpenBLAS in Fedora:
40 - install the package `openblas-devel.x86_64`,
41 - run `./configure --with-blas-libs="-lopenblas"`
42- Using OpenBLAS in Debian, Ubuntu, Mint, and all debian based distribution:
43 - avoid using the distribution's package, as it is threaded by default. You need to
44   compile openblas yourself on these systems,
45 - run `./configure --with-blas-libs="-lopenblas"`
46- Using ATLAS in Debian, Ubuntu, Mint:
47 - install the package `libatlas-dev`,
48 - run `./configure --with-blas-libs="-latlas -lcblas"`
49- Using ATLAS in Fedora:
50 - install the package `atlas-devel.x86_64`,
51 - run `./configure --with-blas-libs="-L/usr/lib64/atlas -lsatlas"`.
52- Using Accelerate Framework on OS-X:
53 - run `./configure --with-blas-libs="-framework Accelerate"`.
54- Using BLIS
55 - Configure BLIS with, say, `./configure --enable-cblas auto`.
56 - run fflas/ffpack's `./configure --with-blas-libs="-lblis -lpthread"`.
57
58
59Then, simply run `make; make autotune; make install; make check`
60Note that running the `autotune` target is optional but recommended as it will tune up the thresholds of various algorithms to your specific target host.
61`make check` is also optional but recommended as a sanity check.
62
63see INSTALL for further details.
64
65## KNOWN BUGS
66
67 - `test-ftrsm` fails due to a problem with multiprecision arithmetic used with small fields (not used in practice). See https://github.com/linbox-team/fflas-ffpack/issues/29
68
69## AVAILABILITY
70
71 from [linbox-team/fflas-ffpack](https://github.com/linbox-team/fflas-ffpack)
72
73## AUTHORS
74
75The FFLAS-FFPACK group (see AUTHORS file for a list of contributors).
76
77## Citing FFLAS-FFPACK
78
79If your research depends on the FFLAS-FFPACK library, please consider citing the project as
80
81```
82@manual{fflas-ffpack,
83title = {{FFLAS-FFPACK}: {F}inite {F}ield {L}inear {A}lgebra {S}ubroutines / {P}ackage},
84author = {The FFLAS-FFPACK group},
85edition = {v2.4.1},
86year = {2019},
87note = {\url{http://github.com/linbox-team/fflas-ffpack}}
88}
89```
90
91Or you may also consider citing the related research article:
92```
93@article{DGP:2008,
94author = {Jean-Guillaume Dumas and Pascal Giorgi and Cl{\'e}ment Pernet},
95title = {Dense Linear Algebra over Word-Size Prime Fields: the FFLAS and FFPACK Packages},
96journal = {ACM Trans. on Mathematical Software (TOMS)},
97volume = {35},
98number = {3},
99year = {2008},
100issn = {0098-3500},
101pages = {1--42},
102doi = {10.1145/1391989.1391992},
103publisher = {ACM Press},
104address = {New York, NY, USA}
105}
106```
107
108## Contact and discussion
109
110For any bug report, feature or help request, please file an issue on github's [issue tracker](https://github.com/linbox-team/fflas-ffpack/issues).
111
112Please address any other request, suggestion and comment to the discussion group [ffpack-devel](http://groups.google.com/group/ffpack-devel).
113