Skip to content
Snippets Groups Projects
Commit fe831443 authored by Stephan Seitz's avatar Stephan Seitz Committed by Martin Bauer
Browse files

Add pystencils.autodiff

parent a145360b
Branches test_martin2
No related merge requests found
...@@ -55,6 +55,7 @@ All options: ...@@ -55,6 +55,7 @@ All options:
- `alltrafos`: pulls in additional dependencies for loop simplification e.g. libisl - `alltrafos`: pulls in additional dependencies for loop simplification e.g. libisl
- `bench_db`: functionality to store benchmark result in object databases - `bench_db`: functionality to store benchmark result in object databases
- `interactive`: installs dependencies to work in Jupyter including image I/O, plotting etc. - `interactive`: installs dependencies to work in Jupyter including image I/O, plotting etc.
- `autodiff`: enable derivation of adjoint kernels and generation of Torch/Tensorflow operations
- `doc`: packages to build documentation - `doc`: packages to build documentation
Options can be combined e.g. Options can be combined e.g.
......
...@@ -13,6 +13,12 @@ from .simp import AssignmentCollection ...@@ -13,6 +13,12 @@ from .simp import AssignmentCollection
from .slicing import make_slice from .slicing import make_slice
from .sympyextensions import SymbolCreator from .sympyextensions import SymbolCreator
try:
import pystencils_autodiff
autodiff = pystencils_autodiff
except ImportError:
pass
__all__ = ['Field', 'FieldType', 'fields', __all__ = ['Field', 'FieldType', 'fields',
'TypedSymbol', 'TypedSymbol',
'make_slice', 'make_slice',
......
"""
Provides tools for generation of auto-differentiable operations.
See https://github.com/theHamsta/pystencils_autodiff
Installation:
.. code-block:: bash
pip install pystencils-autodiff
"""
import os
if 'CI' not in os.environ:
raise NotImplementedError('pystencils-autodiff is not installed. Run `pip install pystencils-autodiff`')
import distutils
import io
import os import os
import sys import sys
import io
from setuptools import setup, find_packages
import distutils
from distutils.extension import Extension
from contextlib import redirect_stdout from contextlib import redirect_stdout
from distutils.extension import Extension
from importlib import import_module from importlib import import_module
from setuptools import find_packages, setup
if '--use-cython' in sys.argv: if '--use-cython' in sys.argv:
USE_CYTHON = True USE_CYTHON = True
sys.argv.remove('--use-cython') sys.argv.remove('--use-cython')
else: else:
USE_CYTHON = False USE_CYTHON = False
quick_tests = [ quick_tests = [
'test_datahandling.test_kernel', 'test_datahandling.test_kernel',
'test_blocking_staggered.test_blocking_staggered', 'test_blocking_staggered.test_blocking_staggered',
...@@ -52,6 +52,7 @@ class SimpleTestRunner(distutils.cmd.Command): ...@@ -52,6 +52,7 @@ class SimpleTestRunner(distutils.cmd.Command):
for test in quick_tests: for test in quick_tests:
self._run_tests_in_module(test) self._run_tests_in_module(test)
def readme(): def readme():
with open('README.md') as f: with open('README.md') as f:
return f.read() return f.read()
...@@ -69,13 +70,13 @@ def cython_extensions(*extensions): ...@@ -69,13 +70,13 @@ def cython_extensions(*extensions):
try: try:
sys.path.insert(0, os.path.abspath('doc')) sys.path.insert(0, os.path.abspath('doc'))
from version_from_git import version_number_from_git from version_from_git import version_number_from_git
version=version_number_from_git()
version = version_number_from_git()
with open("RELEASE-VERSION", "w") as f: with open("RELEASE-VERSION", "w") as f:
f.write(version) f.write(version)
except ImportError: except ImportError:
version = open('RELEASE-VERSION', 'r').read() version = open('RELEASE-VERSION', 'r').read()
setup(name='pystencils', setup(name='pystencils',
description='Speeding up stencil computations on CPUs and GPUs', description='Speeding up stencil computations on CPUs and GPUs',
version=version, version=version,
...@@ -88,7 +89,7 @@ setup(name='pystencils', ...@@ -88,7 +89,7 @@ setup(name='pystencils',
packages=['pystencils'] + ['pystencils.' + s for s in find_packages('pystencils')], packages=['pystencils'] + ['pystencils.' + s for s in find_packages('pystencils')],
install_requires=['sympy>=1.1', 'numpy', 'appdirs', 'joblib'], install_requires=['sympy>=1.1', 'numpy', 'appdirs', 'joblib'],
package_data={'pystencils': ['include/*.h', 'backends/cuda_known_functions.txt']}, package_data={'pystencils': ['include/*.h', 'backends/cuda_known_functions.txt']},
ext_modules = cython_extensions("pystencils.boundaries.createindexlistcython"), ext_modules=cython_extensions("pystencils.boundaries.createindexlistcython"),
classifiers=[ classifiers=[
'Development Status :: 4 - Beta', 'Development Status :: 4 - Beta',
'Framework :: Jupyter', 'Framework :: Jupyter',
...@@ -108,6 +109,7 @@ setup(name='pystencils', ...@@ -108,6 +109,7 @@ setup(name='pystencils',
'alltrafos': ['islpy', 'py-cpuinfo'], 'alltrafos': ['islpy', 'py-cpuinfo'],
'bench_db': ['blitzdb', 'pymongo', 'pandas'], 'bench_db': ['blitzdb', 'pymongo', 'pandas'],
'interactive': ['matplotlib', 'ipy_table', 'imageio', 'jupyter', 'pyevtk'], 'interactive': ['matplotlib', 'ipy_table', 'imageio', 'jupyter', 'pyevtk'],
'autodiff': ['pystencils-autodiff'],
'doc': ['sphinx', 'sphinx_rtd_theme', 'nbsphinx', 'doc': ['sphinx', 'sphinx_rtd_theme', 'nbsphinx',
'sphinxcontrib-bibtex', 'sphinx_autodoc_typehints', 'pandoc'], 'sphinxcontrib-bibtex', 'sphinx_autodoc_typehints', 'pandoc'],
}, },
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment