Ill be working with a board that has a STM32H743 on it, and I have a hard time reasoning about the f32 matrix-vector multiply performance I can expect of the m7 core. As I understand the core itself, it should be able to put out one fused-multiply-add per cycle; as long as I can keep it fed with data. Said data will consist of 128x128 float32 matrix data and a 128 float32 vector; and id like to multiply a bunch of them often and fast.
However, I cant seem to find clear information on what the expect of the integrated ram, or the integrated flash. Would either or both of these be able to sustain one fmad per cycle? That is, stream 4 bytes of matrix data into the core? The vector-data I suppose I can keep in tightly-coupled memory; which means I can move it into the proper registers without delay I think? The flash can stream in code instructions without delay; there is special hardware for that; but what about general data accesses; what throughput does that sustain?
And what about the ram that isnt tightly coupled? It is hard to find granular data as to its behavior; nor can I find high-level benchmarks as to matrix-vector performance of the system as a whole. Im pretty sure the arm core could simply put out a number of fmads equal to its frequency, but this memory model isnt easy to reason about given that my programming thus far has always been x86. The tightly coupled ram is big enough that I could easily hold two of my matrices into it; so I could perhaps use DMA copying to page a new one into TCM while the other one is being crunched? Does this sound at all sane?
(Note: I am well aware there are chips out there with more compute; but this is the one ill be working with.)