pystencils merge requests
https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests
2022-12-06T10:23:14+01:00
https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/292
Rebase of pystencils Type System
2022-12-06T10:23:14+01:00
Markus Holzer
Rebase of pystencils Type System
Fixes #20
Complex numbers are not supported anymore
Fixes #20
Complex numbers are not supported anymore
Release 1.0
Markus Holzer
Markus Holzer
https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/278
Removed OpenCL
2021-11-22T21:22:54+01:00
Markus Holzer
Removed OpenCL
This MR removes OpenCL from pystencils
This MR removes OpenCL from pystencils
Markus Holzer
Markus Holzer
https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/276
Remove LLVM
2021-11-22T15:29:45+01:00
Markus Holzer
Remove LLVM
This MR removes the LLVM backend from pystencils
This MR removes the LLVM backend from pystencils
Markus Holzer
Markus Holzer
https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/251
Use int64 for indexing
2021-06-08T08:33:34+02:00
Markus Holzer
Use int64 for indexing
For indexed kernels, int32 is too small for large domain sizes. Thus the coordinates are cast to int64 in this MR to allow huge domain sizes.
As an example of the adaption the generated code for a Neumann boundary is shown. Before:
```...
For indexed kernels, int32 is too small for large domain sizes. Thus the coordinates are cast to int64 in this MR to allow huge domain sizes.
As an example of the adaption the generated code for a Neumann boundary is shown. Before:
```cpp
FUNC_PREFIX void kernel(double * RESTRICT _data_C, uint8_t * RESTRICT const _data_indexField, int64_t const _size_indexField_0, int64_t const _stride_indexField_0)
{
#pragma omp parallel
{
#pragma omp for schedule(static)
for (int64_t ctr_0 = 0; ctr_0 < _size_indexField_0; ctr_0 += 1)
{
const int32_t x = *((int32_t *)(& _data_indexField[12*_stride_indexField_0*ctr_0]));
const int32_t y = *((int32_t *)(& _data_indexField[12*_stride_indexField_0*ctr_0 + 4]));
const int64_t cx [] = { 0, 0, 0, -1, 1, -1, 1, -1, 1 };
const int64_t cy [] = { 0, 1, -1, 0, 0, 1, 1, -1, -1 };
const int invdir [] = { 0, 2, 1, 4, 3, 8, 7, 6, 5 };
const int32_t dir = *((int32_t *)(& _data_indexField[12*_stride_indexField_0*ctr_0 + 8]));
_data_C[x + 11*y] = _data_C[x + 11*y + cx[dir] + 11*cy[dir]];
}
}
}
```
After:
```cpp
FUNC_PREFIX void kernel(double * RESTRICT _data_C, uint8_t * RESTRICT const _data_indexField, int64_t const _size_indexField_0, int64_t const _stride_indexField_0)
{
#pragma omp parallel
{
#pragma omp for schedule(static)
for (int64_t ctr_0 = 0; ctr_0 < _size_indexField_0; ctr_0 += 1)
{
const int64_t x = *((int32_t *)(& _data_indexField[12*_stride_indexField_0*ctr_0]));
const int64_t y = *((int32_t *)(& _data_indexField[12*_stride_indexField_0*ctr_0 + 4]));
const int64_t cx [] = { 0, 0, 0, -1, 1, -1, 1, -1, 1 };
const int64_t cy [] = { 0, 1, -1, 0, 0, 1, 1, -1, -1 };
const int64_t invdir [] = { 0, 2, 1, 4, 3, 8, 7, 6, 5 };
const int64_t dir = *((int32_t *)(& _data_indexField[12*_stride_indexField_0*ctr_0 + 8]));
_data_C[x + 11*y] = _data_C[x + 11*y + cx[dir] + 11*cy[dir]];
}
}
}
```
Markus Holzer
Markus Holzer
https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/247
OpenCL RNG
2021-05-26T13:44:59+02:00
Michael Kuron
mkuron@icp.uni-stuttgart.de
OpenCL RNG
Unfortunately most OpenCL implementations don't support C++
Unfortunately most OpenCL implementations don't support C++
Markus Holzer
Markus Holzer