diff --git a/README.md b/README.md index a46fc85be936a488ebc616e6d0984834144e9fbb..b810c2e9b543d722d06d01e2187cfe37978c22fa 100644 --- a/README.md +++ b/README.md @@ -81,4 +81,7 @@ Many thanks go to the [contributors](https://i10git.cs.fau.de/pycodegen/pystenci If you use pystencils in a publication, please cite the following articles: Overview: - - M. Bauer et al, Code Generation for Massively Parallel Phase-Field Simulations. Association for Computing Machinery, 2019. https://doi.org/10.1145/3295500.3356186 \ No newline at end of file + - M. Bauer et al, Code Generation for Massively Parallel Phase-Field Simulations. Association for Computing Machinery, 2019. https://doi.org/10.1145/3295500.3356186 + +Performance Modelling: + - D. Ernst et al, Analytical performance estimation during code generation on modern GPUs. Journal of Parallel and Distributed Computing, 2023. https://doi.org/10.1016/j.jpdc.2022.11.003 diff --git a/pystencils/backends/cbackend.py b/pystencils/backends/cbackend.py index 0ee8d0e43d8ca7eca932dcae30a044e09df4ccdc..5c8259699247d3c20f893c933c71bf37058010ed 100644 --- a/pystencils/backends/cbackend.py +++ b/pystencils/backends/cbackend.py @@ -151,8 +151,8 @@ class CustomCodeNode(Node): def undefined_symbols(self): return self._symbols_read - self._symbols_defined - def __eq___(self, other): - return self._code == other._code + def __eq__(self, other): + return type(self) == type(other) and self._code == other._code def __hash__(self): return hash(self._code) diff --git a/pystencils/rng.py b/pystencils/rng.py index c75c3f9727720d2d313adee3cda3eead520334c7..6e9bc95480cf83654ce4b4b0b7d783fbb0c6718b 100644 --- a/pystencils/rng.py +++ b/pystencils/rng.py @@ -61,6 +61,15 @@ class RNGBase(CustomCodeNode): return ", ".join([str(s) for s in self.result_symbols]) + " \\leftarrow " + \ self._name.capitalize() + "_RNG(" + ", ".join([str(a) for a in self.args]) + ")" + def _hashable_content(self): + return (self._name, *self.result_symbols, *self.args) + + def __eq__(self, other): + return type(self) == type(other) and self._hashable_content() == other._hashable_content() + + def __hash__(self): + return hash(self._hashable_content()) + class PhiloxTwoDoubles(RNGBase): _name = "philox_double2"