Running out of RAM
cypamigon opened this issue · 1 comments
Hello,
I'm attempting to deploy the "getting started" application with a custom object detection model on an STM32H474I-DISCO board. Unfortunately, I'm encountering a build error with the following message :
STM32H747I-DISCO_GettingStarted_ObjectDetection_CM7.elf section '.axisram_section' will not fit in region 'AXIRAM'
region 'AXIRAM' overflowed by 214912 bytes
.
I assume my model is consuming too much RAM, here is the result of the model analysis :
[INFO] : Total RAM : 509.41015625 (KiB)
[INFO] : RAM Activations : 465.359375 (KiB)
[INFO] : RAM Runtime : 44.05078125 (KiB)
[INFO] : Total Flash : 740.08984375 (KiB)
[INFO] : Flash Weights : 595.66015625 (KiB)
[INFO] : Estimated Flash Code : 144.4296875 (KiB)
[INFO] : MACCs : 72.664934 (M)
[INFO] : Number of cycles : 138345445
[INFO] : Inference Time : 345.8636135291308 (ms)
My model was trained on images with resolutions of 256x256x3, but I'm using 240x240x3 for input resolutions since it's the maximum supported for the getting-started application (see the associated README).
I attempted to set "ram" for the optimization setting in the user_config file of the deploy.py script, but it didn't resolve the problem.
Do you have any ideas on how to address this issue?
Hello,
Currently the getting_started will only use the internal memory of the chip, which is quite small. In the next release the getting_started application will be able to use the external memory and therefore to deploy larger models.
If you can't wait to deploy your model, you may find a solution by generating a project with X-CUBE-AI and setting only the external memory in the memory pool. Then modifying the getting_started C code using the Cube.AI project, integrating pieces of code (external memory init, linker sections, etc.).
Regards,
Guillaume