Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for sample-parallelism (MMV) #789

Draft
wants to merge 6 commits into
base: dev
Choose a base branch
from

Conversation

fpjentzsch
Copy link
Collaborator

@fpjentzsch fpjentzsch commented Mar 30, 2023

Overview

Introduces support for additional parallelism along the spatial feature map dimension, i.e., processing multiple 'pixels' or 'samples' simultaneously. For some layers (e.g., MVAU), this functionality already existed in the HLS back-end and is now integrated on the compiler side. For others (e.g., RTL SWG), back-end functionality is extended.

Currently, this parallelism is controlled by the M attribute and requires existing folding factors (SIMD, PE, parallel_window) to be maxed out first.

Components

  • RTL ConvolutionInputGenerator (done)
    • M controls the number of parallel input samples and output windows, i.e., mmv_in=M*1 and mmv_out=M*k_h*k_w.
    • Limitations on output FM W dimension: out_dim_w divisible by M, out_dim_w / M > 2 (1D conv is normalized to H=1).
    • Input FM dimensions are padded internally.
  • MVAU (done)
    • Converts to and from MultiChanData internally, so that external interface is still a hls::stream<ap_uint<>>.
  • VVAU (done)
    • Converts to and from MultiChanData internally, so that external interface is still a hls::stream<ap_uint<>>.
    • Requires hlslib PR to restore MMV support (MMV support for VVAU finn-hlslib#123).
  • Padding (done, except for some cleanup)
    • Implement in RTL variant
  • Pooling (work in progress)
    • likely implement only in Pool_Batch, not StreamingMaxPool_Batch variant
  • DataWidthConverter (work in progress)

Tests

Integration into existing unit tests:

  • test_fpgadataflow_slidingwindow_rtl
  • ...

New:

  • test_convert_to_hls_conv_mmv (tests a graph of multiple layers including padding and pooling)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant