StencilStream Version 2.1.0
We are verify exited to bring you the new version 2.1.0 of StencilStream, the Generic Stencil Simulation Library for FPGAs!
This major update brings two new features, along with some smaller tweaks:
- Arbitrary pipeline lengths
- A new stencil executor with a monotile architecture
Arbitrary Pipeline Lengths
Due to a small internal quirk, pipeline lengths always had to be a power of two. This was because the pipeline length is used to calculate the number of required banks, which DPC++ demands to be a power of two. This is circumvented by using the next biggest power of two as a number of banks, but only using the banks that are required to implement the demanded pipeline length. DPC++ automatically optimizes the superfluous banks away, which leads to the desired memory and area footprint.
A new stencil executor
With the introduction of StencilStream v2.0.0 came a new memory management architecture that divides the dynamic grid into tiles of static size, which allows unrestricted grid sizes and may provide finer runtime scaling. However, there may be applications where the single-tile approach from the v1.x.x version may be favorable due to it's reduced complexity. Therefore, the AbstractExecutor
has been introduced to separate the execution mechanic from the execution strategy, as well as the MonotileExecutor
which implements the monotile architecture.
We are looking forward to see the how the different strategies compare in different scenarios, so we would appreciate your feedback!