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