Inconsistant behaviour of accum_t
in io_stream
and io_parallel
for pooling
layers with Vivado
backend
#912
Labels
accum_t
in io_stream
and io_parallel
for pooling
layers with Vivado
backend
#912
Prerequisites
Please make sure to check off these prerequisites before submitting a bug report.
Quick summary
For pooling operations with
vivado
(orvitis
) backend andio_parallel
,accum_t
is defined but not used. Withio_stream
though, the intermediate values when reducing the pool are stored in an array of typeaccum_t
.Worth mentioning here that
quartus
not defineaccum_t
at all, but usesvalue_type
for intermediate values.Expected behavior
Behaviour of
accum_t
should be consistent with different io types, (and backends, ideally).Actual behavior
As stated.
Optional
Possible fix
purge
accum_t
all at once, as the necessary precision can be derived from input precision: directly input precision for max pool, and(u)fixed<b+2*ceil(log2(N)), i+1*ceil(log2(N))>
, withb,i
being width and int width of input precision, for the average pool.or, let all implementations use
accum_t
to store intermediate values when reducing the pool. However, the user would need to set the precision manually in this case.The text was updated successfully, but these errors were encountered: