Akcelerace vyhodnocování výrazů pomocí vektorových instrukcí

Abstract
Tématem této práce je popis způsobu zrychlení a optimalizace vyhodnocování matematických výrazů v BParseru pomocí přidání podpory vektorových instrukcí procesoru. Doposud nebylo možno provádět dostatečně efektivní vyhodnocování matematických výrazů, neboť nebylo možno ovlivnit optimalizaci při překladu související s vektorovým zpracováním a bylo zde i omezení na podporované instrukční sady jednotlivých procesorů z hlediska přenositelnosti.Práce obsahuje informace o tom, co se rozumí pod pojmem parser s tím, že je zahrnut i stručný výčet existujících parserů. Dále je zmíněno, na jakém principu funguje vektorové vyhodnocování výrazů, a připojen je rovněž přehled vektorových instrukčních sad. Práce navazuje výčtem C++ knihoven, které podporují vektorové výpočty, a výběrem nejvhodnější knihovny Vector Class Library. Poté jsou zmíněny všechny nutné úpravy potřebné k vyřešení překážek a chyb, které souvisí s implementací. Práce dále zahrnuje testy přenositelnosti a rychlosti vyhodnocování výrazů.Z výsledků v podobě přehledných grafů z provedených testů rychlosti je zřejmé, že knihovna Vector Class Library přináší velmi dobrý posun v rychlosti a optimalizaci vyhodnocování výrazů v BParseru. Zároveň bylo dosaženo i maximální přenositelnosti programu mezi procesory x86-64 s rozličnými instrukčními sadami.
The topic of this paper is to describe how to speed up and optimize the evaluation of mathematical expressions in BParser by adding support for vector processor instructions. Up to now, it has not been possible to perform sufficiently efficient evaluation of mathematical expressions, as the translation optimizations associated with vector processing could not be influenced, and there were limitations on the supported instruction sets of each processor in terms of portability.This paper provides information on what is meant by the term parser, with a brief listing of existing parsers included. Furthermore, the principle on which vector expression evaluation works is mentioned, and a survey of vector instruction sets is also included. The paper continues by listing the C++ libraries that support vector computation and selecting the most appropriate Vector Class Library. Then, any necessary modifications needed to resolve implementation-related obstacles and errors are mentioned. The work also includes tests of portability and speed of expression evaluation.From the results in the form of clear graphs from the speed tests performed, it is clear that the Vector Class Library brings a very good improvement in speed and optimization of expression evaluation in BParser. At the same time, maximum program portability between x86-64 processors with different instruction sets was also achieved.
Description
Subject(s)
C++, SIMD, vektorové instrukční sady, vyhodnocování výrazů, C++, SIMD, vector instruction sets, expression evaluation
Citation
ISSN
ISBN