xref: /libCEED/setup.py (revision a8d322087fa8f150327cdc2bf14a171452b711ec)
1# Copyright (c) 2017, Lawrence Livermore National Security, LLC. Produced at
2# the Lawrence Livermore National Laboratory. LLNL-CODE-734707. All Rights
3# reserved. See files LICENSE and NOTICE for details.
4#
5# This file is part of CEED, a collection of benchmarks, miniapps, software
6# libraries and APIs for efficient high-order finite element and spectral
7# element discretizations for exascale applications. For more information and
8# source code availability see http://github.com/ceed.
9#
10# The CEED research is supported by the Exascale Computing Project 17-SC-20-SC,
11# a collaborative effort of two U.S. Department of Energy organizations (Office
12# of Science and the National Nuclear Security Administration) responsible for
13# the planning and preparation of a capable exascale ecosystem, including
14# software, applications, hardware, advanced system engineering and early
15# testbed platforms, in support of the nation"s exascale computing imperative.
16# pylint: disable=no-name-in-module,import-error,unused-variable
17import os
18from setuptools import setup
19
20# ------------------------------------------------------------------------------
21# Setup
22# ------------------------------------------------------------------------------
23def version():
24  with open(os.path.abspath("ceed.pc.template")) as template:
25    ceed_version = [line.split("Version:", 1)[1].strip() for line in template if
26                    line.startswith("Version: ")]
27  return ceed_version[0]
28
29description = """
30libCEED: the Code for Efficient Extensible Discretization API Library
31=====================================================================
32
33This low-level API library provides the efficient high-order discretization
34methods developed by the ECP co-design Center for Efficient Exascale
35Discretizations (CEED). While our focus is on high-order finite elements, the
36approach is mostly algebraic and thus applicable to other discretizations in
37factored form, as explained in the API documentation.
38
39One of the challenges with high-order methods is that a global sparse matrix is
40no longer a good representation of a high-order linear operator, both with
41respect to the FLOPs needed for its evaluation, as well as the memory transfer
42needed for a matvec.  Thus, high-order methods require a new "format" that still
43represents a linear (or more generally non-linear) operator, but not through a
44sparse matrix.
45
46libCEED is to provides such a format, as well as supporting implementations and
47data structures, that enable efficient operator evaluation on a variety of
48computational device types (CPUs, GPUs, etc.). This new operator description is
49algebraic and easy to incorporate in a wide variety of applications, without
50significant refactoring of their own discretization infrastructure.
51"""
52
53classifiers = """
54Intended Audience :: Developers
55Intended Audience :: Science/Research
56License :: OSI Approved :: BSD License
57Operating System :: POSIX
58Programming Language :: C
59Programming Language :: C++
60Programming Language :: CUDA
61Programming Language :: Fortran
62Programming Language :: Python
63Topic :: Scientific/Engineering
64Topic :: Software Development :: Libraries
65"""
66
67setup(name="libceed",
68      version=version(),
69      description="libceed python bindings",
70      long_description="\n".join(description),
71      classifiers= classifiers.split("\n")[1:-1],
72      keywords=["libCEED"],
73      platforms=["POSIX"],
74      license="BSD 2",
75
76      url="https://github.com/CEED/libCEED",
77
78      author="libCEED Team",
79      author_email="ceed-users@llnl.gov",
80
81      requires=["numpy"],
82      packages=["libceed"],
83      package_dir={"libceed": "python"},
84
85      setup_requires=["cffi"],
86      cffi_modules=["python/build_ceed_cffi.py:ffibuilder"],
87)
88
89# ------------------------------------------------------------------------------
90