xref: /libCEED/README.md (revision 90d5dd7fa4bdcac3cba73a78b59e204d4c9a698d)
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## Install
60
61To install libCEED, run
62
63    make install prefix=/usr/local
64
65or (e.g., if creating packages),
66
67    make install prefix=/usr DESTDIR=/packaging/path
68
69### pkg-config
70
71In addition to library and header, libCEED provides a
72[pkg-config](https://en.wikipedia.org/wiki/Pkg-config) file that can be
73used to easily compile and link.
74[For example](https://people.freedesktop.org/~dbn/pkg-config-guide.html#faq),
75if `$prefix` is a standard location or you set the environment variable
76`PKG_CONFIG_PATH`,
77
78    cc `pkg-config --cflags --libs ceed` -o myapp myapp.c
79
80will build `myapp` with libCEED.  This can be used with the source or
81installed directories.  Most build systems have support for pkg-config.
82
83## Contact
84
85You can reach the libCEED team by emailing [ceed-users@llnl.gov](mailto:ceed-users@llnl.gov)
86or by leaving a comment in the [issue tracker](https://github.com/CEED/libCEED/issues).
87
88## Copyright
89
90The following copyright applies to each file in the CEED software suite, unless
91otherwise stated in the file:
92
93> Copyright (c) 2017, Lawrence Livermore National Security, LLC. Produced at the
94> Lawrence Livermore National Laboratory. LLNL-CODE-734707. All Rights reserved.
95
96See files LICENSE and NOTICE for details.
97