2020
DOI: 10.25080/majora-342d178e-00c
|View full text |Cite
|
Sign up to set email alerts
|

High-performance operator evaluations with ease of use: libCEED's Python interface

Abstract: libCEED is a new lightweight, open-source library for highperformance matrix-free Finite Element computations. libCEED offers a portable interface to high-performance implementations, selectable at runtime, tuned for a variety of current and emerging computational architectures, including CPUs and GPUs. libCEED's interface is purely algebraic, facilitating co-design with vendors and enabling unintrusive integration in new and legacy software. In this work, we present libCEED's newly-available Python interface,… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
5
0

Year Published

2021
2021
2021
2021

Publication Types

Select...
3
2

Relationship

3
2

Authors

Journals

citations
Cited by 5 publications
(5 citation statements)
references
References 8 publications
0
5
0
Order By: Relevance
“…For instance, a CeedVector object is exposed as libceed.Vector in Python, and supports no-copy host and GPU device interperability with Python arrays from the NumPy (Harris et al, 2020) or Numba (Lam et al, 2015) packages. The interested reader can find more details on libCEED's Python interface in Barra et al (2020).…”
Section: High-level Languagesmentioning
confidence: 99%
“…For instance, a CeedVector object is exposed as libceed.Vector in Python, and supports no-copy host and GPU device interperability with Python arrays from the NumPy (Harris et al, 2020) or Numba (Lam et al, 2015) packages. The interested reader can find more details on libCEED's Python interface in Barra et al (2020).…”
Section: High-level Languagesmentioning
confidence: 99%
“…The dot product of vector variables, discussed in Section 4.2 is defined by the expression ('i,i', v, u), which is transpiled to einsum('cq,qd,ir,qe,is->crdse', v.det, v.bf, v.I, u.bf, u.I) in the matrix mode, with data sizes for 1024 tri-linear hexahedral elements {'c': 1024, 'q': 8, 'd': 8, 'i': 3, 'r': 3, 'e': 8, 's': 3} crdse (1024, 3, 8, 3, 8 4), (0, 1), (0, 2), (0, 1)] and to einsum('cq,qd,ir,qe,cie->crd', v.det, v.bf, v.I, u.bf, u.dofs) in the vector mode, with data sizes {'c': 1024, 'q': 8, 'd': 8, 'i': 3, 'r': (3,4), (0, 3), (0, 2), (0, 1)] Note that the same expressions work also with scalar variables, but the transpilation result is different.…”
Section: Vector Dot Product Expressionmentioning
confidence: 99%
“…path: [(0, 4), (2,3), (1,3), (1, 2), (0, 1)] Note also the special tensor Psg of shape (D, D, D(D + 1)/2) which extracts the basis function gradient components and stores them in a vector. This tensor has only D nonzeros (ones), however this sparsity is not exploited.…”
Section: Linear Elasticity Expressionmentioning
confidence: 99%
See 1 more Smart Citation
“…libCEED is CEED's low-level API library that provides portable and performant evaluation of high-order operators (Abdelfattah et al 2020). It is a C99 library with no required dependencies, and with Fortran and Python interfaces (see for details on the Python interface (Barra et al 2020)). One of the challenges with high-order methods is that a global sparse matrix is no longer a good representation of a high-order linear operator, both with respect to the FLOPs needed for its evaluation, as well as the memory transfer needed for a matvec.…”
Section: Libceedmentioning
confidence: 99%