diff --git a/cmake/HysopVersion.cmake b/cmake/HysopVersion.cmake index 8bc6ff1493dfb7c91d1666af3436f8b35f38a858..c62cd8e1c9f0a6e61e5ea0c46b438c4f4171433e 100644 --- a/cmake/HysopVersion.cmake +++ b/cmake/HysopVersion.cmake @@ -1,5 +1,5 @@ # --- set hysop current version --- set(MAJOR_VERSION 2) -set(MINOR_VERSION 1) +set(MINOR_VERSION 0) set(PATCH_VERSION 0) -set(HYSOP_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}-alpha") +set(HYSOP_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}-rc1") diff --git a/hysop/backend/device/codegen/base/utils.py b/hysop/backend/device/codegen/base/utils.py index 253b22c7284969988b74b10525bda1ccbf2cca80..c49157541c2b5ab3f10c91bc1df573e3f7199532 100644 --- a/hysop/backend/device/codegen/base/utils.py +++ b/hysop/backend/device/codegen/base/utils.py @@ -135,3 +135,16 @@ class ArgDict(WriteOnceDict): # max_fun = sqrt(16**nb) = 2**(2*nb) def hash(self,string): return hashlib.sha1(string).hexdigest()[:4] + + +class SortedDict(dict): + def keys(self): + keys = super(SortedDict, self).keys() + return sorted(keys, key=str) + + def values(self): + return iter(self.__getitem__[k] for k in self.keys()) + + def iteritems(self): + return iter((k, self.__getitem__(k)) for k in self.keys()) + diff --git a/hysop/backend/device/codegen/kernels/custom_symbolic.py b/hysop/backend/device/codegen/kernels/custom_symbolic.py index 52db53e32c6b377781cab8aa77458e9a440a21ad..b141135efb8b4df7784d208e021529290fed7b16 100644 --- a/hysop/backend/device/codegen/kernels/custom_symbolic.py +++ b/hysop/backend/device/codegen/kernels/custom_symbolic.py @@ -237,7 +237,7 @@ class SymbolicCodegenContext(object): array_sizes = {} dfields = set(f.dfield for f in (expr_info.input_dfields.values() + - expr_info.output_dfields.values())) + expr_info.output_dfields.values())) for dfield in dfields: field = dfield._field diff --git a/hysop/backend/device/kernel_autotuner.py b/hysop/backend/device/kernel_autotuner.py index 9ac7834784fe6960c8656b53c8565471583e1453..f402942bf036ec4a503070aa163cf0c223ad2dc9 100644 --- a/hysop/backend/device/kernel_autotuner.py +++ b/hysop/backend/device/kernel_autotuner.py @@ -22,7 +22,7 @@ class KernelAutotuner(object): FULL_RESULTS_KEY = '__FULL_RESULTS__' DUMP_LAST_TUNED_KERNEL = False - STORE_FULL_KERNEL_SOURCES = False + STORE_FULL_KERNEL_SOURCES = True @staticmethod def _hash_func(): diff --git a/hysop/operator/base/min_max.py b/hysop/operator/base/min_max.py index 3f2332fbf922a5e7fd84f0b9baad4f3f0f87d351..33eca8d0526499f3703ed72226749abbe75179d6 100644 --- a/hysop/operator/base/min_max.py +++ b/hysop/operator/base/min_max.py @@ -221,15 +221,16 @@ class MinMaxFieldStatisticsBase(object): if (Fmin is not None): fmin = Fmin().copy() for i in components: - fmin[i] = dfield.data[i].nanmin().get() + fmin[i] = dfield.data[i].min().get() Fmin.value = fmin * coeffs['Fmin'] if (Fmax is not None): fmax = Fmax().copy() for i in components: - fmax[i] = dfield.data[i].nanmax().get() + fmax[i] = dfield.data[i].max().get() Fmax.value = fmax * coeffs['Fmax'] if (Finf is not None): self.Finf.value = npw.maximum(npw.abs(Fmin()), npw.abs(Fmax())) * coeffs['Finf'] + # TODO mpi reduce @debug def get_node_requirements(self):