Konkurs na najszybszy algorytm mnożenia macierzy kwadratowych:
gdzie A,B,C są macierzami (dużego) wymiaru N. Punktem odniesienia jest skompilowany (z włączoną opcją optymalizacji kodu) algorytm ijk mnożenia:
for i := 1 to N do
for j := 1 to N do
for k := 1 to N do
C[i,j] := C[i,j] + A[i,k]*B[k,j];
Algorytm najlepiej zaimplementować w języku C lub Fortranie na Unixie. Konserwatyści mogą próbować pisać w Pascalu pod MS Windows. Możliwa jest także rywalizacja na gruncie środowiska Octave. Tam jako czas odniesienia należy wybrać czas działania operacji C = C + A*B.
Porównujemy czas działania tego algorytmu z czasem działania naszego (lepszego?) algorytmu, skompilowanego bez optymalizacji. Czas działania procedury mnożącej macierze proponuję mierzyć w języku C używając funkcji time() i difftime(). W Fortranie można użyć funkcji DTime(). W Octave są funkcje tic i toc.
W raporcie dobrze byłoby podać:
Autorzy najlepszych wyników zostaną uhonorowani zamieszczeniem ich rozwiązań na niniejszej stronie. Powodzenia!
Lista rekordzistów
| Kategoria | Miejsce | Imię i nazwisko | Przyspieszenie |
| Język C | 1. | Jakub Narębski | 1.66 |
| 2. | |||
| 3. | |||
| Octave | 1. | Agnieszka Borkowska | 1.91 |
| 2. | |||
| 3. | |||
| Fortran | 1. | Marek Kwas | 0.77 |
| 2. | |||
| 3. |