From 0627da614548e03f48580106bf6082959e4940dd Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Keck <Jean-Baptiste.Keck@imag.fr> Date: Thu, 26 Jul 2018 22:38:57 +0200 Subject: [PATCH] added a target for local library updates --- CMakeLists.txt | 9 +++++++++ hysop/backend/host/fortran/operator/poisson.py | 11 +++++------ setup.py.in | 7 +++---- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bf322b499..0aeb1e1c5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -625,6 +625,7 @@ if(VERBOSE_MODE) message(WARNING "You deactivate c++ to python interface generation. This will disable the Aitken-Schwarz Poisson solver.") endif() message(STATUS " Sources are in : ${CMAKE_SOURCE_DIR}") + message(STATUS " Build is done in : ${CMAKE_BINARY_DIR}") message(STATUS " Project uses MPI : ${USE_MPI}") message(STATUS " Project uses Scales : ${WITH_SCALES}") message(STATUS " Project uses FFTW : ${WITH_FFTW}") @@ -650,3 +651,11 @@ if(VERBOSE_MODE) message("Try to run python -c 'import hysop'. If it fails, add ${HYSOP_PYTHON_INSTALL_DIR} to PYTHONPATH environment variable.") message("Example : \n export PYTHONPATH=${HYSOP_PYTHON_INSTALL_DIR}/:\${PYTHONPATH}\n") endif() + +# Add custom target to install compiled libraries locally +add_custom_target(update_libs + COMMAND find ${CMAKE_SOURCE_DIR}/hysop/ -name '*.so' -type f -delete + COMMAND find ${CMAKE_BINARY_DIR} -name '*.so' -type f -print0 | xargs -0 cp -t ${CMAKE_SOURCE_DIR}/hysop/ + COMMAND [ -f "$ENV{HOME}/.hysop.__init__.py" ] && rm ${CMAKE_SOURCE_DIR}/hysop/__init__.py + COMMAND [ -f "$ENV{HOME}/.hysop.__init__.py" ] && cp $ENV{HOME}/.hysop.__init__.py ${CMAKE_SOURCE_DIR}/hysop/__init__.py + DEPENDS wheel) diff --git a/hysop/backend/host/fortran/operator/poisson.py b/hysop/backend/host/fortran/operator/poisson.py index 3679e01c7..201b994e3 100644 --- a/hysop/backend/host/fortran/operator/poisson.py +++ b/hysop/backend/host/fortran/operator/poisson.py @@ -37,7 +37,7 @@ class PoissonFFTW(FortranFFTWOperator): values=CartesianTopologyDescriptors) assert Fin.nb_components == Fout.nb_components assert Fin.nb_components == 1, \ - "Poisson operator is implemented only for scalar fields" + "Fortran FFTW poisson operator is implemented only for scalar fields" assert Fin.domain is Fout.domain, \ 'only one domain is supported' @@ -66,19 +66,18 @@ class PoissonFFTW(FortranFFTWOperator): if self.discretized: return super(PoissonFFTW, self).discretize() - self.dFin = self.Fin.discrete_fields[self.topology] - self.dFout = self.Fout.discrete_fields[self.topology] + self.dFin = self.get_input_discrete_field(self.Fin) + self.dFout = self.get_output_discrete_field(self.Fout) assert (self.dFin.ghosts == self.dFout.ghosts).all(), \ "Input and output fields must have the same ghosts." + self.ghosts = self.dFin.ghosts.astype(np.float64) # prevent f2py copy @op_apply def apply(self, **kargs): super(PoissonFFTW, self).apply(**kargs) - gh = self.input_fields[self.Fin].ghosts - changeLayout, di, do = self._initialize_mem_layout(self.dFin, self.dFout) # Vectors are given in ZYX layout to Fortran - do = self._solve(di[0], gh) + self._solve(di[0], do[0], self.ghosts) if changeLayout: self.dFout.data[0][...] = -np.ascontiguousarray(do) self.dFout.exchange_ghosts() diff --git a/setup.py.in b/setup.py.in index cbcd22b59..b47c18330 100644 --- a/setup.py.in +++ b/setup.py.in @@ -136,10 +136,9 @@ def create_fortran_extension(name, pyf_file=None, src_dirs=None, sources=None, # --- set f2py options --- f2py_options = ['--no-lower', '--no-wrap-functions'] options = [] - if debug_mode == 1: - options.append(('F2PY_REPORT_ON_ARRAY_COPY', '1')) - if os.uname()[0] == 'Linux': - options.append(('F2PY_REPORT_ATEXIT', '1')) + options.append(('F2PY_REPORT_ON_ARRAY_COPY', '1')) + if os.uname()[0] == 'Linux': + options.append(('F2PY_REPORT_ATEXIT', '1')) # --- set include dir --- inc_dir = parseCMakeVar("@FORTRAN_INCLUDE_DIRS@") -- GitLab