개발을 진행하며 문제가 발생했다. param cache와 infer descriptor를 정상적으로 submit 한다고 생각했는데 기존 libedgetpu처럼 정상적으로 추론이 되지 않고 garbage 값이 나오는 현상이 있다.

위 사진은 추론 값이다. 이전에 발생했던 infeed fault 나 outfeed fault같은 에러가 발생하지 않았고 정상적으로 chip이 dma 방식으로 output buffer에 값을 적어준 것 을 확인할 수 있다.
일단 Squeeze1과 convert_scores는 SSD(SingleShot Multibox Dector계열의 객체 인식 모델에서 포스트 프로세싱 단계 직전의 raw data 상태일 때의 이름이다.
param data를 chip이 읽지 않는지 검증하기 위해서 pte에 mapping된 param buffer를 0으로 채운 뒤, 추론을 돌려보았다.
memset(pParamData, 0x00, model.parameters.size()); // weight 를 전부 0 으로
memset(pExe0ParamData, 0x00, model.exe0_parameters.size()); // exe0 보조도 0

output buffer의 값이 변경된 것을 확인할 수 있다. 결론적으로 chip이 cache된 parameters 값을 참조하고 있다고 생각할 수 있다.
python으로 해당 raw 데이터를 box 좌표로 변환해서 실제로 동일한 이미지 사진에 정상적으로 그려지는지 검증을 해보려고 한다. 하나씩 변수를 제거해나가는 부분이 이 작업의 매력인 것 같다. claude code를 적극적으로 사용하고 있다.
테스트 결과 아래와 같이 나왔다.

현재 Squeeze1값도 비정상이라는 것을 확인할 수 있다.
chip이 비정상적인 추론 결과를 output buffer에 넣어준 거라고 봐야한다. 무엇이 잘못되었는지 좀 더 확인해 봐야겠다...