Commit f08200f
fix: Do not mutate shared _gemm_output_3d in CpuGemmConv2d::run()
CpuGemmConv2d::run() was mutating the shared member _gemm_output_3d by extending its padding before soft_init()/import_memory().
When the same operator instance is reused from multiple threads via the experimental Operator API in certain but rare cases, this can cause later extend_padding() calls to fail.
Multiple runs of the operator doesn't cause this because the TensorAllocator destructor marks the TensorInfo object resizable again. This makes it difficult to reliably test and
since it's for an experimental feature to make ACL easy to integrate in certain frameworks, we'll not aim to test this until the feature has been fully developed and used.
This is done by using a local TensorInfo copy in run() for padding extension and soft_init()/import_memory(), leaving _gemm_output_3d unchanged.
Change-Id: I3e4e2d25cabf85724ecf126b1c93df6733ee7d48
Signed-off-by: Pablo Marquez Tello <pablo.tello@arm.com>1 parent 7d0d25f commit f08200f
1 file changed
+4
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
939 | 939 | | |
940 | 940 | | |
941 | 941 | | |
942 | | - | |
943 | | - | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
| 945 | + | |
944 | 946 | | |
945 | 947 | | |
946 | 948 | | |
| |||
0 commit comments