pystencils merge requestshttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests2019-09-25T15:41:44+02:00https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/57Add AssignmentCollection.{free_fields,bound_fields}2019-09-25T15:41:44+02:00Stephan SeitzAdd AssignmentCollection.{free_fields,bound_fields}Wasn't this merged already?Wasn't this merged already?https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/2Add autodiff2019-07-11T12:12:00+02:00Stephan SeitzAdd autodiffDraft for minimal integration of automatic differentiation. Tensorflow and Torch backend were removed (apart from AutoDiffOp.create_tensorlfow())
Only tests without LBM or tf/torch dependencies have been added. This implies that also nu...Draft for minimal integration of automatic differentiation. Tensorflow and Torch backend were removed (apart from AutoDiffOp.create_tensorlfow())
Only tests without LBM or tf/torch dependencies have been added. This implies that also numeric gradient checking is missing (depends on either tf or torch). Should we really move the backends into separate modules?
Apart from adding auto-differentiation functionality I added two more changes. Would be happy to AutoDiffOp.create_tensorflow() after feedback.https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/313Add cache clearing function2023-02-23T17:20:18+01:00Markus HolzerAdd cache clearing functionFor developing purposes it is useful to have a cache-clearing functionFor developing purposes it is useful to have a cache-clearing functionMarkus HolzerMarkus Holzerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/244Add CI job for non-x86 vectorization2021-05-06T09:43:35+02:00Michael Kuronmkuron@icp.uni-stuttgart.deAdd CI job for non-x86 vectorizationDepends on https://i10git.cs.fau.de/pycodegen/pycodegen/-/merge_requests/12. A job for ARM SVE vectorization will be added in a future pull request as it appears to not be running completely stable yet.Depends on https://i10git.cs.fau.de/pycodegen/pycodegen/-/merge_requests/12. A job for ARM SVE vectorization will be added in a future pull request as it appears to not be running completely stable yet.Markus HolzerMarkus Holzerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/112Add CI minimal CI test for old sympy2019-12-17T18:51:26+01:00Stephan SeitzAdd CI minimal CI test for old sympyThe minimal test cannot catch everything but its something.The minimal test cannot catch everything but its something.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/67Add ConditionalFieldAccess (Field.Access after out-of-bounds check)2019-10-01T15:36:36+02:00Stephan SeitzAdd ConditionalFieldAccess (Field.Access after out-of-bounds check)Adds a wrapper around a `Field.Access` that the access is only performed if a certain condition is met.
If I use this, I can safely perform calculations and adjoint calculations with `ghost_layers=0` and obtain the correct gradients w...Adds a wrapper around a `Field.Access` that the access is only performed if a certain condition is met.
If I use this, I can safely perform calculations and adjoint calculations with `ghost_layers=0` and obtain the correct gradients without separate boundary handling.https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/9Add CudaBackend, CudaSympyPrinter2019-07-18T10:04:27+02:00Stephan SeitzAdd CudaBackend, CudaSympyPrinterAdd CudaBackend, CudaSympyPrinter to extract CUDA-specific code from CBackend, CustomSympyPrinter
Cuda built-ins are added to `CudaSympyPrinter.known_functions` to use them as sympy.FunctionAdd CudaBackend, CudaSympyPrinter to extract CUDA-specific code from CBackend, CustomSympyPrinter
Cuda built-ins are added to `CudaSympyPrinter.known_functions` to use them as sympy.Functionhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/10Add CustomSympyPrinter._print_Sum2019-08-05T16:44:54+02:00Stephan SeitzAdd CustomSympyPrinter._print_SumThis makes sympy.Sum printable as instantaniously invoked lambda (Attention: C++-only, works in CUDA)This makes sympy.Sum printable as instantaniously invoked lambda (Attention: C++-only, works in CUDA)https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/120Add DataHandling.add_arrays2020-01-14T14:09:15+01:00Stephan SeitzAdd DataHandling.add_arraysThis adds a function for lazy people who want to write
```python
dh = create_data_handling((20, 30))
x, y, z = dh.add_arrays('x, y(9), z')
```
instead of
```python
dh = create_data_handling((20, 30))
dh.add_array('x')
dh.a...This adds a function for lazy people who want to write
```python
dh = create_data_handling((20, 30))
x, y, z = dh.add_arrays('x, y(9), z')
```
instead of
```python
dh = create_data_handling((20, 30))
dh.add_array('x')
dh.add_array('y', values_per_cell=9)
dh.add_array('z')
```
because in most cases you want to use more than one array.https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/124Add dtype to DataHandling.add_arrays2020-01-15T13:32:17+01:00Stephan SeitzAdd dtype to DataHandling.add_arrayshttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/332Add experimental half precison support2023-06-28T20:35:25+02:00Markus HolzerAdd experimental half precison supportWith this MR experimental half-precision support is addedWith this MR experimental half-precision support is addedMarkus HolzerMarkus Holzerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/82Add Field.itemsize (yields Field.dtype.numpy_dtype.itemsize)2019-10-29T10:31:47+01:00Stephan SeitzAdd Field.itemsize (yields Field.dtype.numpy_dtype.itemsize)https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/355Add function to prepend pragmas to loops2023-09-29T08:27:16+02:00Frederik HennigAdd function to prepend pragmas to loopsAdd a function to prepend `#pragma` directives to domain loops according to their nesting depth.
Useful for compiler-specific annotations and interactions, especially with less well-known niche compilers (like Fujitsu's ARM-compiler).Add a function to prepend `#pragma` directives to domain loops according to their nesting depth.
Useful for compiler-specific annotations and interactions, especially with less well-known niche compilers (like Fujitsu's ARM-compiler).Frederik HennigFrederik Hennighttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/5Add global_declarations to cbackend2019-07-10T16:20:44+02:00Stephan SeitzAdd global_declarations to cbackendThis enables `astnodes.Nodes` to have a member `required_global_declarations`
by which they can specify a global declaration required for their usage.
In the test, I added a AST-Node Bogus which requires a global declaration. The global...This enables `astnodes.Nodes` to have a member `required_global_declarations`
by which they can specify a global declaration required for their usage.
In the test, I added a AST-Node Bogus which requires a global declaration. The global declaration can define symbols required in the kernel that will then not appear in the kernel parameters
```cpp
// Declaration would go here
FUNC_PREFIX void kernel(double * RESTRICT const _data_x, double * RESTRICT const _data_y, double * RESTRICT _data_z, int64_t const _size_1, int64_t const _stride_z_0, int64_t const _stride_z_1)
{
for (int ctr_0 = 0; ctr_0 < _size_x_0; ctr_0 += 1)
{
double * RESTRICT _data_z_00 = _data_z + _stride_z_0*ctr_0;
double * RESTRICT const _data_y_00 = _data_y + _stride_y_0*ctr_0;
double * RESTRICT const _data_x_00 = _data_x + _stride_x_0*ctr_0;
for (int ctr_1 = 0; ctr_1 < _size_x_1; ctr_1 += 1)
{
_data_z_00[_stride_z_1*ctr_1] = log(_data_x_00[_stride_x_1*ctr_1]*_data_y_00[_stride_y_1*ctr_1])*_data_y_00[_stride_y_1*ctr_1];
}
}
// Bogus would go here
}
```
I used this code for my CudaBackend (instead of CBackend) to enable the forward declaration of textures and constant memory.https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/153Add graphviz to interactive (it's require in first tutorial)2020-06-03T09:07:23+02:00Stephan SeitzAdd graphviz to interactive (it's require in first tutorial)https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/217Add kerncraft templates2021-02-20T12:23:43+01:00Markus HolzerAdd kerncraft templatesThe kerncraft coupling works only if these templates are available.The kerncraft coupling works only if these templates are available.Markus HolzerMarkus Holzerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/33Add KernelFunction.fields_written2019-08-16T08:59:16+02:00Stephan SeitzAdd KernelFunction.fields_writtenI found myself needing this convenience wrapper in various places.I found myself needing this convenience wrapper in various places.https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/75Add option to omit globals when printing C code2019-10-21T14:06:59+02:00Stephan SeitzAdd option to omit globals when printing C codeRight know, needed globals are always printed. But this is not always desired, e.g. when printing multiple functions and all globals should be on top of file.Right know, needed globals are always printed. But this is not always desired, e.g. when printing multiple functions and all globals should be on top of file.https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/96Add own implementation for printing an unknown function2019-12-03T13:38:45+01:00Stephan SeitzAdd own implementation for printing an unknown functionUsing the SymPy implementation for printing a `sympy.Function` has some issues:
- you cannot use `cast_func` as an argument -> SymPy prints
`cast_func(2,float)
- typed numbers are not typed any more -> e.g. pow(x, 0.25) instead o...Using the SymPy implementation for printing a `sympy.Function` has some issues:
- you cannot use `cast_func` as an argument -> SymPy prints
`cast_func(2,float)
- typed numbers are not typed any more -> e.g. pow(x, 0.25) instead of
pow(x, 0.25f)
Maybe a disadvantage or an advantage:
- arbitrary Functions: sympy.Function('my_function') are now allowed.
Would have prevented commits like:
Fix: type of sqrt(int) was int not floating point type