Simulátor proudění podzemní vody s názvem Flow123d (Březina
a kol. [2]) využívá za účelem zefektivnění výpočtů s malými vekto-
ry a maticemi knihovnu Armadillo, která je schopna tyto výpočty
díky optimalizacím například s pomocí výrazových šablon prová-
dět velmi efektivně. Armadillo si však předem pro každou dato-
vou strukturu alokuje prostor v paměti o minimální velikost 16x
double. To má při použití velkého množství malých vektorů (typic-
ky 3x double) negativní dopad na využití cache paměti procesoru
a následné zpomalení výpočtů.
V této práci je popsán způsob, jakým lze tuto negativní vlastnost
knihovny Armadillo obejít. Byla vytvořena knihovna Armor, která
umožňuje provádět výpočty pomocí knihovny Armadillo nad efek-
tivně uloženými daty. Byla provedena analýza využití cache pa-
měti celým programem, následně byla knihovna Armor aplikována
ve Flow123d a vliv těchto a dalších optimalizací na běh programu
a jeho částí byl otestován. Zároveň byly provedeny celkové testy
efektivity využití cache paměti.
Anotace v angličtině
A simulator of underground water flow named Flow123d (Březina
et al. citeFlow123d) uses the Armadillo library for higher effici-
ency of calculations with small vectors and matrices. This software
is capable of performing these calculations very effectively not only
thanks to its use of expression templates. Armadillo, however, alwa-
ys prealocates a space in memory of 16 times verb'double'. This has
a negative effect on the use of cache when using a large number of
small vectors (typically 3 times verb'double') which is then causing
a considerable slowdown.
This thesis describes a way to eliminate this negative feature of
Armadillo. A new library named Armor was created. This library
can perform these calculations using Armadillo with efficiently sto-
red data. An analysis of cache memory usage of the whole program
was performed. This library was then applied in Flow123d and the
impact of these optimization's on the run-time of the program and
its parts was tested. Complete tests of the cache usage efficiency
were performed.
Klíčová slova
Armadillo, C++, cache, Flow123d, vektor, matice, výrazové šablo-
ny
Simulátor proudění podzemní vody s názvem Flow123d (Březina
a kol. [2]) využívá za účelem zefektivnění výpočtů s malými vekto-
ry a maticemi knihovnu Armadillo, která je schopna tyto výpočty
díky optimalizacím například s pomocí výrazových šablon prová-
dět velmi efektivně. Armadillo si však předem pro každou dato-
vou strukturu alokuje prostor v paměti o minimální velikost 16x
double. To má při použití velkého množství malých vektorů (typic-
ky 3x double) negativní dopad na využití cache paměti procesoru
a následné zpomalení výpočtů.
V této práci je popsán způsob, jakým lze tuto negativní vlastnost
knihovny Armadillo obejít. Byla vytvořena knihovna Armor, která
umožňuje provádět výpočty pomocí knihovny Armadillo nad efek-
tivně uloženými daty. Byla provedena analýza využití cache pa-
měti celým programem, následně byla knihovna Armor aplikována
ve Flow123d a vliv těchto a dalších optimalizací na běh programu
a jeho částí byl otestován. Zároveň byly provedeny celkové testy
efektivity využití cache paměti.
Anotace v angličtině
A simulator of underground water flow named Flow123d (Březina
et al. citeFlow123d) uses the Armadillo library for higher effici-
ency of calculations with small vectors and matrices. This software
is capable of performing these calculations very effectively not only
thanks to its use of expression templates. Armadillo, however, alwa-
ys prealocates a space in memory of 16 times verb'double'. This has
a negative effect on the use of cache when using a large number of
small vectors (typically 3 times verb'double') which is then causing
a considerable slowdown.
This thesis describes a way to eliminate this negative feature of
Armadillo. A new library named Armor was created. This library
can perform these calculations using Armadillo with efficiently sto-
red data. An analysis of cache memory usage of the whole program
was performed. This library was then applied in Flow123d and the
impact of these optimization's on the run-time of the program and
its parts was tested. Complete tests of the cache usage efficiency
were performed.
Klíčová slova
Armadillo, C++, cache, Flow123d, vektor, matice, výrazové šablo-
ny
1. Seznamte se s výpočetním software Flow123d.
2. Použijte výrazové šablony a paměťové optimalizace na výpočty používající knihovnu Armadillo.
3. Monitorujte využití cache v algoritmech assemblace matic v metodě konečných prvků pomocí nástroje cachegrind.
4. Otestujte a aplikujte vybrané optimalizace v datových strukturách pro uložení výpočetní sítě vzhledem k využití cache pamětí.
5. Demonstrujte zrychlení algoritmů asemblace lineárních systémů pomocí upravených datových struktur.
Zásady pro vypracování
1. Seznamte se s výpočetním software Flow123d.
2. Použijte výrazové šablony a paměťové optimalizace na výpočty používající knihovnu Armadillo.
3. Monitorujte využití cache v algoritmech assemblace matic v metodě konečných prvků pomocí nástroje cachegrind.
4. Otestujte a aplikujte vybrané optimalizace v datových strukturách pro uložení výpočetní sítě vzhledem k využití cache pamětí.
5. Demonstrujte zrychlení algoritmů asemblace lineárních systémů pomocí upravených datových struktur.
Seznam doporučené literatury
[1] Kowarschik M., Weiß C. (2003) An Overview of Cache Optimization Techniques and Cache-Aware Numerical Algorithms. In: Meyer U., Sanders P., Sibeyn J. (eds) Algorithms for Memory Hierarchies. Lecture Notes in Computer Science, vol 2625. Springer, Berlin, Heidelberg
[2] Cachegrind: a Cache-miss Profiler. [online]. [cit. 1.10. 2017] Dostupné na: http://valgrind.org/docs/manual/cg-manual.html
[3] J. Levon, OProfile Manual, http://oprofile.sourceforge.net/doc/, Victoria University of Manchester.
Seznam doporučené literatury
[1] Kowarschik M., Weiß C. (2003) An Overview of Cache Optimization Techniques and Cache-Aware Numerical Algorithms. In: Meyer U., Sanders P., Sibeyn J. (eds) Algorithms for Memory Hierarchies. Lecture Notes in Computer Science, vol 2625. Springer, Berlin, Heidelberg
[2] Cachegrind: a Cache-miss Profiler. [online]. [cit. 1.10. 2017] Dostupné na: http://valgrind.org/docs/manual/cg-manual.html
[3] J. Levon, OProfile Manual, http://oprofile.sourceforge.net/doc/, Victoria University of Manchester.
Přílohy volně vložené
1 CD ROM
Přílohy vázané v práci
-
Převzato z knihovny
Ano
Plný text práce
Přílohy
Posudek(y) oponenta
Hodnocení vedoucího
Záznam průběhu obhajoby
Průběh obhajoby je zveřejněn pouze přihlášenému uživateli.