من الگوریتم آماده ای سراغ ندارم ولی میتونم چند تا پیشنهاد بهتون بدم.
1.ماتریسها رو به ترتیبی ضرب کنید که اونهایی که ابعاد بزرگتر دارند و نتیجه کوچکتر میدهند زودتر ضرب بشوند.
2x4*4x4*4x8 دو جور ضرب میشه, (2x4*4x4) * 4x8 و 2x4*(4x4 * 4x8) که اولی سرعت بیشتری داره و کمک میکنه حافظه زودتر آزاد بشه.
2.اطلاعاتت رو طوری بچین و ضرب کن(پشت سر هم و به ترتیب) که کامپایلر به طور خودکار از SSE یا AVX یا IS های مشابه استفاده کنه.
البته سیستم های جدید با استفاده از gather-scatter خودشون تا حدی به این کار کمک میکنند که باعث میشه برنامه نویس کمتر نگران این موضوع باشه.