Optimalizace datových struktur výpočetních programů s ohledem na využití cache

Abstract
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 vektory 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 datovou strukturu alokuje prostor v paměti o minimální velikost 16xdouble. To má při použití velkého množství malých vektorů (typicky 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 efektivně uloženými daty. Byla provedena analýza využití cache pamě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.
A simulator of underground water flow named Flow123d (Březinaet al. citeFlow123d) uses the Armadillo library for higher effici-ency of calculations with small vectors and matrices. This softwareis capable of performing these calculations very effectively not onlythanks to its use of expression templates. Armadillo, however, alwa-ys prealocates a space in memory of 16 times verb'double'. This hasa negative effect on the use of cache when using a large number ofsmall vectors (typically 3 times verb'double') which is then causinga considerable slowdown.This thesis describes a way to eliminate this negative feature ofArmadillo. A new library named Armor was created. This librarycan perform these calculations using Armadillo with efficiently sto-red data. An analysis of cache memory usage of the whole programwas performed. This library was then applied in Flow123d and theimpact of these optimization's on the run-time of the program andits parts was tested. Complete tests of the cache usage efficiencywere performed.
Description
Subject(s)
Armadillo, C++, cache, Flow123d, vektor, matice, výrazové šablo-ny, Armadillo, C++, cache, expression templates, Flow123d, matrix, vector
Citation
ISSN
ISBN