domácí úkol
DESCRIPTION
Domácí úkol. Domácí úkol č. 2. Referenční algoritmus for ( i = 0; i < L; ++ i ) for ( j = 0; j < M; ++ j) { c[ i ][j] = false; for ( k = 0; k < N; ++ k) c[ i ][j] |= a[ i ][k] & b[k][j]; } Toto nen í nejrychlejší algoritmus Nevyhovuje z hlediska cache - PowerPoint PPT PresentationTRANSCRIPT
NPRG054 Vývoj vysoce výkonného software - 2012/2013 David Bednárek 1
Domácí úkol
NPRG054 Vývoj vysoce výkonného software - 2012/2013 David Bednárek
Referenční algoritmusfor( i = 0; i < L; ++ i)
for( j = 0; j < M; ++ j)
{
c[i][j] = false;
for( k = 0; k < N; ++ k)
c[i][j] |= a[i][k] & b[k][j];
}
Toto není nejrychlejší algoritmus Nevyhovuje z hlediska cache Uložení po bitech umožňuje
paralelní operace
Násobení booleovských matic
Datová struktura pro matici Plýtvání prostorem povoleno
Očekávaný počet sloupců > 50 Rozměr určen předem
Parametry konstruktoru
Operace násobení
Testovací mechanismus Naplnění/alokace matic Opakované provedení násobení Měření času
Mimo standard C++
Domácí úkol č. 2
2
NPRG054 Vývoj vysoce výkonného software - 2012/2013 David Bednárek
Předepsané rozhraní matice Umožňuje připojení k jinému
testovacímu mechanismuclass matrix {
public:
matrix(size_t m, size_t n);
size_t vsize() const;
size_t hsize() const;
bool get(size_t i, size_t j) const;
void set(size_t i, size_t j, bool e);
void assign_mul( const matrix & a, const matrix & b);
private: // ...
};
Neřešíme kompletnost a odolnost třídy (copy/move-metody apod.)
Násobení booleovských matic
Datová struktura pro matici Plýtvání prostorem povoleno
Očekávaný počet sloupců > 50 Rozměr určen předem
Parametry konstruktoru
Operace násobení
Testovací mechanismus Naplnění/alokace matic Opakované provedení násobení Měření času
Mimo standard C++
Domácí úkol č. 2
3
NPRG054 Vývoj vysoce výkonného software - 2012/2013 David Bednárek
DÚ 1 – porovnání výsledků
4
matrix_
zero 128
matrix_
zero 256
matrix_
zero 512
matrix_
zero 1024
matrix_
random 128
matrix_
random 256
matrix_
random 512
matrix_
random 1024
matrix_
one 128
matrix_
one 256
matrix_
one 512
matrix_
one 1024
0.001
0.01
0.1
1
10
100
NPRG054 Vývoj vysoce výkonného software - 2012/2013 David Bednárek
DÚ2
5
128 zeros
128 random
128 ones
256 zeros
256 random
256 ones
512 zeros
512 random
512 ones
1024 zeros
1024 random
1024 ones
2048 zeros
2048 random
2048 ones
1
10
vzor[err] Brabec Michal[err] Havranek Stepan[err] Herrmann PavelHorky VojtechHosala MichalJiracek ZbynekJirasek JozefKotrc JaroslavKralovec JiriMatena Vladimir[err] Pavlis FilipPetrik OtoSindelar Stepan[err] Skoda Petr[err] Taborsky Dominik[err] Taufer Pavel[err] Tomasek Jan