За моя C++ код зададох този въпрос преди около два дни. Но сега осъзнавам, че трябва да направя кодирането на Fortran, тъй като ядрата, които пиша, ще бъдат част от съществуващо приложение, написано на Fortran 77. Затова публикувам този въпрос отново, този път контекстът е Fortran. Благодаря ти.
Имам различни функции за умножение на квадратна матрица в зависимост от размера на матрицата, който варира от 8x8 до 20x20. Функциите се различават една от друга, защото всяка използва различни стратегии за оптимизация, а именно различни пермутации на цикъла и различни фактори за разгъване на цикъла. Размерът на матрицата е неизменен по време на живота на програмата и е известен по време на компилиране. Целта ми е да намаля времето за вземане на решение коя функция трябва да се използва. Например, наивна реализация е:
if (matrixSize == 8) C = mxm8(A, B);
else if (matrixSize == 9) C = mxm9(A,B);
...
else if (matrixSize == 20) C = mxm20(A,B);
Времето, необходимо за решаване коя функция да се използва за всяко умножение на матрица, е нетривиално в този случай, особено след като умножението на матрица се случва често в кода. Благодаря предварително за всяко предложение как да се справя с това във Fortran 77.