En intressant funktion är funktionen
Kod: Markera allt
arm_status arm_mat_mult_f32(const arm_matrix_instance_f32* pSrcA, const arm_matrix_instance_f32* pSrcB, arm_matrix_instance_f32* pDst);
\(AB = D\)
Där \(A \in \Re^{m*n}, B \in \Re^{n*k}, D \in \Re^{m*k}\).
Om parametern k = 1 så är det matris- och vektormultiplikation. När jag kollar i funktionen arm_mat_mult_f32 för CMSIS så blev jag inte så imponerad. Det var bara vanlig C-kod. Jag ser inga unika datatyper som tar hänsyn till hårdvaran. Visst, koden är kanske skriven på ett optimalt sätt, men jag hade förväntat mig att koden skulle ta hänsyn till hårdvaran.
Frågor:
- Hur optimal är denna C-kod?
- Hur portabel är denna C-kod?
- Bör jag överväga ett annat bibliotek eller metod för att utföra matrismultiplikation?