KONKURS

Konkurs na najszybszy algorytm mnożenia macierzy kwadratowych:

\begin{displaymath}C = C + A\cdot B
\end{displaymath}

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.    


Ta strona zostala stworzona na podstawie pliku w formacie LaTeX2e przy uzyciu konwertera Latex2HTML

Piotr Krzyzanowski
2000-03-29