# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack.package import * class PyDevito(PythonPackage): """Devito is a Python package to implement optimized stencil computation. (e.g., finite differences, image processing, machine learning) from high-level symbolic problem definitions. Devito builds on SymPy and employs automated code generation and just-in-time compilation to execute optimized computational kernels on several computer platforms, including CPUs, GPUs, and clusters thereof. """ homepage = "https://www.devitoproject.org/" pypi = "devito/devito-4.8.1.tar.gz" license("MIT") version("4.8.1", sha256="56d0957a3226ed2a81c408107a614f04faa896d42c83a8b2bd1c8b1100adf51d") variant("mpi", default=False, description="Enable MPI support") variant("optional", default=False, description="Enable matplolib & pandas support") depends_on("py-pip@9.0.1:", type="build") depends_on("py-setuptools", type="build") depends_on("py-numpy@1.17:", type=("build", "run")) depends_on("py-sympy@1.9:1.11", type=("build", "run")) depends_on("py-scipy", type=("build", "run")) depends_on("py-flake8@2.1.0:", type=("build", "run")) depends_on("py-nbval", type=("build", "run")) depends_on("py-cached-property", type=("build", "run")) depends_on("py-psutil@5.1.0:5", type=("build", "run")) depends_on("py-py-cpuinfo@:9", type=("build", "run")) depends_on("py-cgen@2020.1:", type=("build", "run")) depends_on("py-codepy@2019.1:", type=("build", "run")) depends_on("py-click@:8", type=("build", "run")) depends_on("py-multidict", type=("build", "run")) depends_on("py-anytree@2.4.3:2.8", type=("build", "run")) depends_on("py-pyrevolve@2.1.3:", type=("build", "run")) depends_on("py-distributed@:2023.3", type=("build", "run")) depends_on("py-pytest@7.2:7", type=("build", "run")) depends_on("py-pytest-runner", type=("build", "run")) depends_on("py-pytest-cov", type=("build", "run")) # requirements-mpi.txt depends_on("py-mpi4py@:3", type=("build", "run"), when="+mpi") depends_on("py-ipyparallel@:8.5", type=("build", "run"), when="+mpi") # requirements-optional.txt depends_on("py-matplotlib", type=("build", "run"), when="+optional") depends_on("py-pandas", type=("build", "run"), when="+optional") depends_on("mpi", type=("build", "run"), when="+mpi") depends_on("intel-parallel-studio", type="run", when="%intel@:2021.1.1") depends_on("intel-oneapi-compilers", type="run", when="%intel@2021.1.2:") patch("4.8.1.patch", when="@4.8.1") @run_before("install") def add_examples_dir(self): # Add file `__init__py` to examples/ so it is picked up by setuptools touch("examples/__init__.py") def setup_run_environment(self, env): # Make benchmark.py available env.prepend_path("DEVITO_HOME", self.prefix)