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