Tato semestrální práce se zaměřuje na výpočet dvou statistických ukazatelů – koeficientu variace a mediánu absolutní odchylky (MAD) – z akcelerometrických dat získaných ze souborů ve formátu ACC_*.csv. Výpočty jsou realizovány pomocí různých technik paralelního programování a vektorizace s cílem analyzovat výkonnost jednotlivých přístupů.
- Sekvenční (sériový) výpočet
- Vektorizovaný výpočet (AVX2)
- Paralelní výpočet (více vláken)
- Paralelní a zároveň vektorizovaný výpočet
- Výpočet na GPU (OpenCL)
Každá varianta je testována na různých velikostech vstupních dat a spouštěna 10× za účelem zjištění mediánu výpočetního času.
- CMake ≥ 3.21
- MSVC 2022 (64bit)
- C++17 nebo novější
- Volitelně: OpenCL SDK (pro GPU variantu)
Použij CMake a Visual Studio nebo příkazovou řádku:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config ReleasePro zapnutí single precision varianty:
- Uprav soubor
CMakeLists.txt:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /arch:AVX2 /D_FLOAT")Nebo přidej při volání CMake:
cmake -S . -B build -DCMAKE_CXX_FLAGS="-D_FLOAT"--input <cesta>– cesta k souboru nebo adresáři se soubory ACC*.csv
--output <cesta>– výstupní adresář (výchozíresults)--repetitions <n>– počet opakování každého výpočtu (výchozí 1)--num_partitions <n>– počet vláken/paralelních bloků (výchozí 1)--gpu– aktivuje GPU variantu (OpenCL)--parallel– spustí paralelní variantu na CPU--vectorized– zapne AVX2 vektorizaci--all_variants– spustí všechny varianty výpočtu najednou
Spuštění všech variant:
program.exe --input data/ --output results --repetitions 10 --all_variantsSpuštění paralelní a vektorizované varianty:
program.exe --input data/ACC_001.csv --parallel --vectorizedProgram vygeneruje:
-
Statistické hodnoty pro každý rozsah dat
-
Mediány výpočetních časů
-
3 grafy ve formátu SVG:
- Výpočetní časy jednotlivých variant
- Koeficient variace
- Medián absolutní odchylky
- Pro správné fungování je nutné použít 64bitový překladač.
- Při běhu na GPU se doporučuje systém s podporou OpenCL a dostatečnou VRAM.