-
Notifications
You must be signed in to change notification settings - Fork 1
e455a81e-d3ba-41a2-bc6d-7aafb1d9a5cd/HPC_Exercise
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Team; Markus KOLLER - 1710299012 Leonhardt SCHWARZ - 1710299019 Aufgaben; Alle Aufgaben wurden mit CPP implementiert. Öffnen/Starten des Projektes in Visual Studio 2017: Datei/Öffnen/CMake... und CMakeList.txt auswählen -Exercise 1; Aufgabe wurde vollständig für RGB-Bilder gelöst, das Ergebnisbild befindet sich im CMake-directory (zB: C:\Users\MK\CMakeBuilds\50286fdc-45ca-eb34-81f8-d50e7c783897\build\x86-Debug\). Ergebnisbilder stimmen --Inputs; lenna.tga (225x225px) Inquisition.tga (2000x3100px) lizard.tga (4444x3136px) Theta: π/4 (45 Grad) --Performance; lenna.tga; GPU (Avg): 443ms CPU only (Avg): 134ms Inquisition.tga; GPU (Avg): 13262ms CPU only (Avg): 13864ms lizard.tga; GPU (Avg): 31929ms CPU only (Avg): 32586ms --Aufgetretene Probleme; Herausfinden wie OpenCL überhaupt funktioniert Herausfinden wo die builderrors vom Kernel Compiler eingesehen werden können Testen mit großen Bildern sehr zeitaufwändig -Exercise 2; Aufgabe wurde vollständig gelöst, für jeden Algorithmus wurde ein eigener Kernel erstellt. Zur Kontrolle wurde ein sequentielle Algorithmus erstellt. --Inputs/Kernels; Input: Vektor mit aufsteigenden Integern naive_parallel_prefixsum(Naive Parallel Scan) naive_parallel_prefixsum2(Double-buffered Naive Parallel Scan) blelloch_scan(Work-Efficient Parallel Scan after Blelloch) Vektorgrößen: 256 (work group size), 1024 (*4), 4096 (*16) --Performance; Tested on: NVIDIA Geforce 1070 8GB Intel Core i7-6700K @ 4.00GHz 32GB RAM using a workgroup size of 1024. sequentiell; 1024: correct (0ms) 4096: correct (0ms) 256*1024: correct (3ms) 1024*1024*32: correct (484ms) 100000000: correct(1495ms) 1024*1024*512: correct (7082ms) 1024*1024*1024: correct (26244ms) naive_parallel_prefixsum(Naive Parallel Scan - inclusive); 1024: correct (1ms) 4096: INCORRECT (1ms) => An Workgroupgrenze wird letzter Wert nicht weitergegeben Ab einer gewissen Inputlänge werden die genutzten Buffer zu groß(cl_out_of_resources) naive_parallel_prefixsum2(Naive Parallel Scan with double buffer - inclusive); 1024: correct (0ms) => An Workgroupgrenze wird letzter Wert nicht weitergegeben 4096: INCORRECT (1ms) => An Workgroupgrenze wird letzter Wert nicht weitergegeben Ab einer gewissen Inputlänge werden die genutzten Buffer zu groß(cl_out_of_resources) blelloch_scan(Work-Efficient Parallel Scan after Blelloch - exclusive); 1024: correct (1ms) 4096: correct (1ms) 256*1024: correct (4ms) 1024*1024*32: correct(164ms) 100000000: correct(469ms) 1024*1024*512: correct (2595ms) 1024*1024*1024: cl_out_of_resources --Aufgetretene Probleme; Algorithmen verstehen (viel Zeit & Herumprobieren nötig) Einige IndexOutOfBounds-Fehler Tlw. Fehler die nur in NVIDIA auftraten Kurzzeitig wurde das erste Element des nächsten Blocks mit dem letzten Element des vorherigen Blocks gefüllt ("off-by-one error") naive_parallel_prefixsum2 hat bei einer inputlänge von 256 nur 0er zurückgeliefert -Exercise 3; --Inputs; Vektor mit aufsteigenden Integern --Performance; - --Aufgetretene Probleme; Wenn die Inputlänge die Work Group Size nicht übersteigt, funktioniert der Algorithmus. Für die Umstellung auf mehrere Work Groups mangelt es leider an Zeit und Muse.
About
Implementation of several algorithms in OpenCL
Topics
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published