pystencils merge requestshttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests2021-11-17T15:50:41+01:00https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/274Fixed integer square root2021-11-17T15:50:41+01:00Markus HolzerFixed integer square rootInteger square roots must be detected as float32 if the simulation is setup for SP.Integer square roots must be detected as float32 if the simulation is setup for SP.Markus HolzerMarkus Holzerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/273Remove interpolator2021-11-17T15:51:55+01:00Markus HolzerRemove interpolatorThe interpolator functionality of pystencils is not used for a long time and it is rather messy.
It will be removed with this MR.The interpolator functionality of pystencils is not used for a long time and it is rather messy.
It will be removed with this MR.Markus HolzerMarkus Holzerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/272Testing2021-11-11T08:09:08+01:00Markus HolzerTestingFixes race condition in the cpu jit. Clean parallel datahandling test cases and tutorial notebook.Fixes race condition in the cpu jit. Clean parallel datahandling test cases and tutorial notebook.Markus HolzerMarkus Holzerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/271Kernel decorator fix2021-11-05T11:06:46+01:00Jan HönigKernel decorator fixI have introduced a change to the kernel decorator, which was completely wrong. Now I reintroduced the kernel decorator and introduced a `kernel_config` decorator, which receives a `CreateKernelConfig`, which is also returned together wi...I have introduced a change to the kernel decorator, which was completely wrong. Now I reintroduced the kernel decorator and introduced a `kernel_config` decorator, which receives a `CreateKernelConfig`, which is also returned together with the list of assignments as a dict. The dict has to be unrolled for `create_kernel`. The `kernel_config` decorator updates the name of the function inside the config.Jan HönigJan Hönighttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/270Fixed kernel_decorator with config parameter2021-11-03T22:23:36+01:00Jan HönigFixed kernel_decorator with config parameterThe current kernel decorator does not work properly with the introduced `CreateKernelConfig`.
This MR fixes that.The current kernel decorator does not work properly with the introduced `CreateKernelConfig`.
This MR fixes that.Jan HönigJan Hönighttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/269Fix printing2021-11-05T10:39:09+01:00Markus HolzerFix printingThe latex printer of the field class is a bit off at the moment. This MR should fix itThe latex printer of the field class is a bit off at the moment. This MR should fix itMarkus HolzerMarkus Holzerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/268Introduce default assignment simplifications2021-11-19T13:35:42+01:00Markus HolzerIntroduce default assignment simplificationsThere are many simplifications in pystencils that are usually not applied. They can be applied now by using a simple argument in the configuration.
Fixes #39There are many simplifications in pystencils that are usually not applied. They can be applied now by using a simple argument in the configuration.
Fixes #39Markus HolzerMarkus Holzerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/267Small clean up2021-11-02T21:51:26+01:00Markus HolzerSmall clean upsmall clean upsmall clean upMarkus HolzerMarkus Holzerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/266Vectorisation bug2021-11-09T11:21:00+01:00Markus HolzerVectorisation bugFixes #41Fixes #41Markus HolzerMarkus Holzerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/265Fix deepcopy issue with Sympy 1.92023-06-01T22:17:18+02:00Michael Kuronmkuron@icp.uni-stuttgart.deFix deepcopy issue with Sympy 1.9Fixes https://i10git.cs.fau.de/pycodegen/pystencils/-/issues/40. Caused by https://github.com/sympy/sympy/pull/21260.Fixes https://i10git.cs.fau.de/pycodegen/pystencils/-/issues/40. Caused by https://github.com/sympy/sympy/pull/21260.Markus HolzerMarkus Holzerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/264Clean up and Bug Fixes2021-10-26T09:55:30+02:00Markus HolzerClean up and Bug FixesFixes #38
Further changes:
- Third party warnings are suppressed now as they just polluted the warning summary in pystencils.
- Removing the math optimisations as they are not used in pystencils. An Issue is created to reintroduce them...Fixes #38
Further changes:
- Third party warnings are suppressed now as they just polluted the warning summary in pystencils.
- Removing the math optimisations as they are not used in pystencils. An Issue is created to reintroduce them again in a clean way in the future
- Removing the joblib workaround as joblib is a hard dependency of pystencils
- Fixing SymPy 1.9 as maximum version
- Removing sympy.multiply_elementwise due to https://github.com/sympy/sympy/issues/22353. A workaround with NumPy is introduced which seems to be way more robust because NumPy has a more static API
- Introducing more extra requires, which are needed to have all features of pystencils
- Minor cleanup of some test cases and the datahandlingMarkus HolzerMarkus Holzerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/263Fixed wrong type hints. Updated setup.py2021-09-16T22:47:01+02:00Jan HönigFixed wrong type hints. Updated setup.pyAdded authors and changed the package's email to a more general solution.Added authors and changed the package's email to a more general solution.Jan HönigJan Hönighttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/262fixed create_kernel parameter data_type="float" to procucde single precision2021-09-14T18:35:29+02:00Christoph Altfixed create_kernel parameter data_type="float" to procucde single precisionCurrently if create_kernel(assignments, data_type="float") is used then the untyped symbols are typed with float64, since the np.dtype("float") creates this during the construction of a new TypedSymbol.
Since data_type or as it is calle...Currently if create_kernel(assignments, data_type="float") is used then the untyped symbols are typed with float64, since the np.dtype("float") creates this during the construction of a new TypedSymbol.
Since data_type or as it is called in cpu.create_kernel type_info can be an string of an C type, At least following the [documentation of cpu.create_kernel](https://i10git.cs.fau.de/pycodegen/pystencils/-/blob/master/pystencils/cpu/kernelcreation.py#L31) this behavior is a bit confusing, since typical the C type specifier "float" is meant to be single precision.
So I added a small function that just replaces "float" with "single" in the symbol_to_type dict, so the untyped symbols get the single precision type.Christoph AltChristoph Althttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/261`create_kernel` API Update2021-11-21T21:58:15+01:00Jan Hönig`create_kernel` API UpdateTo reduce the `kwargs` hell, we introduced dataclasses, which handle the settings of `create_kernel` and similar functions.
In addition we introduced type-hints for the API functions to increase usability and simplify development.To reduce the `kwargs` hell, we introduced dataclasses, which handle the settings of `create_kernel` and similar functions.
In addition we introduced type-hints for the API functions to increase usability and simplify development.Jan HönigJan Hönighttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/260Fix pipeline2021-08-19T07:56:55+02:00Markus HolzerFix pipelineDue to an update of the docker containers, some parts of pystencils need to be adapted.
- The test `test_field_layouts` in `test_buffer_gpu` fails because the `zeros` function of a gpu_array can only deal with continuous data since 2021...Due to an update of the docker containers, some parts of pystencils need to be adapted.
- The test `test_field_layouts` in `test_buffer_gpu` fails because the `zeros` function of a gpu_array can only deal with continuous data since 2021.1. Thus the test case fails now with the `zyxf` field layout. This was fixed by replacing `zeros_like` with `empty_like`
- matplotlib has dropped deprecated functionality. In particular, it is now necessary to distinguish between Axes3D and Axes. This was fixed by using Axes3D now.
- randomgen 1.20.0 [changed](https://github.com/bashtage/randomgen/pull/258) the behavior of `Philox`'s `advance` method. This was fixed by directly seeding to the correct counter value.
- kerncraft 0.8.10 made some internal changes which produces floats now. The problem was introduced in line 516 [in this commit](https://github.com/RRZE-HPC/kerncraft/commit/74930334b46e12194484594b8834bf091665c9ec#diff-7211fed2c4fe4632c06646fa9d1ec6fbd8b74886efb3ebb96ee645f9183c9fdf). In particular the determination of the `counter` variable is now different and produces floats instead of integers. This is probably a kerncraft bug because the loop counters should not be obtained as floats. Later in the code they enter a `range` function and this causes the failure.Markus HolzerMarkus Holzerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/259Increasing the minimal Python version2021-09-10T11:50:35+02:00Jan HönigIncreasing the minimal Python versionIncreasing the minimal Python version to 3.8 to enable features from 3.7 and 3.8. Also, the official support for 3.6 will cease this December.
Closes #21Increasing the minimal Python version to 3.8 to enable features from 3.7 and 3.8. Also, the official support for 3.6 will cease this December.
Closes #21Jan HönigJan Hönighttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/258Advanced Subexpression Insertion2021-07-28T22:10:01+02:00Frederik HennigAdvanced Subexpression InsertionMoved a few methods for elimination of selected subexpressions from lbmpy to pystencils. Helpful to control the granularity of common subexpression elimination, expression tree cleanup, and potentially to simplify equations by substituti...Moved a few methods for elimination of selected subexpressions from lbmpy to pystencils. Helpful to control the granularity of common subexpression elimination, expression tree cleanup, and potentially to simplify equations by substituting constant or zero subexpressions.https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/257Bit Flag Conditional2021-07-04T16:57:51+02:00Frederik HennigBit Flag ConditionalThis MR introduces a bit flag conditional that acts like a ternary operator for a single bit flag. It takes at least three arguments:
- `flag_bit` specifies which bit of the mask is examined
- `mask_expression` is an integer-typed expres...This MR introduces a bit flag conditional that acts like a ternary operator for a single bit flag. It takes at least three arguments:
- `flag_bit` specifies which bit of the mask is examined
- `mask_expression` is an integer-typed expression which acts as a bit mask
- `then_expression` is a SymPy expression of arbitrary type, and
- optionally `else_expression` is a SymPy expression of arbitrary type
`flag_cond` examines the given bit of the given mask and takes the value of `then_expression` if the bit is set to 1. If not, it becomes either `0` or `else_expression`:
Three argument version:
```
flag_cond(flag_bit, mask, expr) = expr if (flag_bit is set in mask) else 0
```
Four argument version:
```
flag_cond(flag_bit, mask, expr_then, expr_else) = expr_then if (flag_bit is set in mask) else expr_else
```https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/256Add citations to ReadMe2021-07-05T11:55:34+02:00Markus HolzerAdd citations to ReadMepystencils citations have been added to the ReadMe. Furthermore, the authors list is reorderd and the GitLab CI is adapted to have a pre test stage.pystencils citations have been added to the ReadMe. Furthermore, the authors list is reorderd and the GitLab CI is adapted to have a pre test stage.Markus HolzerMarkus Holzerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/255Remove gmpy workaround2021-06-26T15:43:54+02:00Markus HolzerRemove gmpy workaroundThe gmpy workaroung is not needed anymore because this problem is fixed in smpy with https://github.com/sympy/sympy/pull/13530The gmpy workaroung is not needed anymore because this problem is fixed in smpy with https://github.com/sympy/sympy/pull/13530Markus HolzerMarkus Holzer