From edbf0335f5d5dfd4d2e8e6619dc09ef60aba376f Mon Sep 17 00:00:00 2001 From: JM Etancelin <jean-matthieu.etancelin@univ-pau.fr> Date: Thu, 18 Mar 2021 10:31:18 +0100 Subject: [PATCH] Fix ccode for sympy<1.7 compatibility --- hysop/backend/device/codegen/symbolic/expr.py | 15 ++++++++++----- hysop/backend/device/opencl/opencl_printer.py | 10 +++++++--- hysop/tools/field_utils.py | 6 +++++- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/hysop/backend/device/codegen/symbolic/expr.py b/hysop/backend/device/codegen/symbolic/expr.py index acea3e347..ce7385f2f 100644 --- a/hysop/backend/device/codegen/symbolic/expr.py +++ b/hysop/backend/device/codegen/symbolic/expr.py @@ -1,14 +1,19 @@ +from hysop.backend.device.opencl.opencl_types import basetype as cl_basetype, \ + components as cl_components, \ + vtype as cl_vtype +from hysop.backend.device.codegen.base.variables import ctype_to_dtype import sympy as sm from hysop.symbolic import Symbol, Expr from hysop.symbolic.array import OpenClSymbolicBuffer, OpenClSymbolicNdBuffer from hysop.tools.types import check_instance, first_not_None, to_tuple, to_list from hysop.tools.numerics import is_fp, is_signed, is_unsigned, is_integer, is_complex -from sympy.printing.c import C99CodePrinter -from hysop.backend.device.codegen.base.variables import ctype_to_dtype -from hysop.backend.device.opencl.opencl_types import basetype as cl_basetype, \ - components as cl_components, \ - vtype as cl_vtype +from packaging import version +if version.parse(sp.__version__) > version.parse("1.7"): + from sympy.printing.c import C99CodePrinter +else: + from sympy.printing.ccode import C99CodePrinter + InstructionTermination = '' diff --git a/hysop/backend/device/opencl/opencl_printer.py b/hysop/backend/device/opencl/opencl_printer.py index 17e42a0fa..7624591e5 100644 --- a/hysop/backend/device/opencl/opencl_printer.py +++ b/hysop/backend/device/opencl/opencl_printer.py @@ -1,7 +1,11 @@ -import sympy as sm -from sympy.printing.c import C99CodePrinter -from hysop.tools.types import check_instance from hysop.backend.device.opencl.opencl_types import OpenClTypeGen +from hysop.tools.types import check_instance +import sympy as sm +from packaging import version +if version.parse(sp.__version__) > version.parse("1.7"): + from sympy.printing.c import C99CodePrinter +else: + from sympy.printing.ccode import C99CodePrinter # /!\ TODO complete known_functions list with OpenCL builtins # - keys are sympy function names (beware to capital letters) diff --git a/hysop/tools/field_utils.py b/hysop/tools/field_utils.py index 7b7b008be..bc4c7c52a 100644 --- a/hysop/tools/field_utils.py +++ b/hysop/tools/field_utils.py @@ -5,8 +5,12 @@ from hysop.tools.sympy_utils import nabla, partial, subscript, subscripts, \ exponent, exponents, xsymbol, get_derivative_variables from sympy.printing.str import StrPrinter, StrReprPrinter -from sympy.printing.c import C99CodePrinter from sympy.printing.latex import LatexPrinter +from packaging import version +if version.parse(sp.__version__) > version.parse("1.7"): + from sympy.printing.c import C99CodePrinter +else: + from sympy.printing.ccode import C99CodePrinter class BasePrinter(object): -- GitLab