xref: /libCEED/README.md (revision d8f1a76495ffe89ca6666a1cfedc84fccf273b03)
1# libCEED: the CEED API Library
2
3## Code for Efficient Extensible Discretization
4
5This repository contains an initial low-level API library for the efficient
6high-order discretization methods developed by the ECP co-design [Center for
7Efficient Exascale Discretizations (CEED)](http://ceed.exascaleproject.org).
8While our focus is on high-order finite elements, the approach is mostly
9algebraic and thus applicable to other discretizations in factored form, see the
10[API documentation](doc/libCEED.md).
11
12One of the challenges with high-order methods is that a global sparse matrix is
13no longer a good representation of a high-order linear operator, both with
14respect to the FLOPs needed for its evaluation, as well as the memory transfer
15needed for a matvec.  Thus, high-order methods require a new "format" that still
16represents a linear (or more generally non-linear) operator, but not through a
17sparse matrix.
18
19The goal of libCEED is to propose such a format, as well as supporting
20implementations and data structures, that enable efficient operator evaluation
21on a variety of computational device types (CPUs, GPUs, etc.). This new operator
22description is based on algebraically [factored form](doc/libCEED.md), which is
23easy to incorporate in a wide variety of applications, without significant
24refactoring of their own discretization infrastructure.
25
26The repository is part of the [CEED software
27suite](http://ceed.exascaleproject.org/software/), a collection of software
28benchmarks, miniapps, libraries and APIs for efficient exascale discretizations
29based on high-order finite element and spectral element methods.  See
30http://github.com/ceed for more information and source code availability.
31
32The CEED research is supported by the [Exascale Computing Project](https://exascaleproject.org/exascale-computing-project)
33(17-SC-20-SC), a collaborative effort of two U.S. Department of Energy
34organizations (Office of Science and the National Nuclear Security
35Administration) responsible for the planning and preparation of a
36[capable exascale ecosystem](https://exascaleproject.org/what-is-exascale),
37including software, applications, hardware, advanced system engineering and early
38testbed platforms, in support of the nation’s exascale computing imperative.
39
40For more details on the CEED API see http://ceed.exascaleproject.org/ceed-code/.
41
42## Building
43
44The CEED library, `libceed`, is a C99 library with no external dependencies.
45It can be built using
46
47    make
48
49## Testing
50
51The test suite produces [TAP](https://testanything.org) output and is run by:
52
53    make test
54
55or, using the `prove` tool distributed with Perl (recommended)
56
57    make prove
58
59## Contact
60
61You can reach the libCEED team by emailing [ceed-users@llnl.gov](mailto:ceed-users@llnl.gov)
62or by leaving a comment in the [issue tracker](https://github.com/CEED/libCEED/issues).
63
64## Copyright
65
66The following copyright applies to each file in the CEED software suite, unless
67otherwise stated in the file:
68
69> Copyright (c) 2017, Lawrence Livermore National Security, LLC. Produced at the
70> Lawrence Livermore National Laboratory. LLNL-CODE-734707. All Rights reserved.
71
72See files LICENSE and NOTICE for details.
73