majianjia / nnom

A higher-level Neural Network library for microcontrollers.
Apache License 2.0
815 stars 235 forks source link

nnom静态内存支持如何打开? #202

Closed Raise-me-up closed 1 year ago

Raise-me-up commented 1 year ago

如题。我取消了NNOM_USING_STATIC_MEMORY宏的定义注释,并运行了auto_test示例下的main.py,可是在main.c的nnom_model_create()部分会报错。请问具体如何开启这个静态内存支持呢?

majianjia commented 1 year ago

需要在调用create之前设置静态内存空间 https://github.com/majianjia/nnom/blob/f5dae9307bf8dd4644210117ff0b2b34b34ac777/port/nnom_port.h#L21

Raise-me-up commented 1 year ago

@majianjia 大佬,我是这么做的。目前在嵌入式平台可以正常的编译和运行,但是在windows平台下会报错。另外,我还发现一个问题,就是调用model_run对模型进行推理后,嵌入式平台有些变量的值会被修改,目前还不知道该怎么定位呢。

Raise-me-up commented 1 year ago

@majianjia 补充一下,是修改nnom框架外的变量,且是在我没有直接修改变量值的情况下,发现那些变量有的值改变了,甚至有的值清零了。不知道具体是什么原因呢?

Raise-me-up commented 1 year ago

@majianjia 大佬,我今天发现用你最新的代码进行编译,就不会有开启静态内存宏后windows平台报错的问题,也不会有变量清零的问题了。不过我这边还存在一个问题,就是其他的静态变量会受model_run影响,导致数值出现一些差异。不知道该怎么定位这个问题呢?

majianjia commented 1 year ago

@majianjia 补充一下,是修改nnom框架外的变量,且是在我没有直接修改变量值的情况下,发现那些变量有的值改变了,甚至有的值清零了。不知道具体是什么原因呢?

外面的变量被动了说明静态缓冲的大小不够。windows报错估计也是同一个原因。 建议先开启动态内存,根据模型编译log来看需要多大的内存,适当加大后按这个数值分配静态内存空间

Raise-me-up commented 1 year ago

@majianjia 好的,谢谢大佬!