The major objective of this Master's thesis is to accelerate a serial implementation of a numerical algorithm for the simulation of slender fiber dynamics by using Graphical Processing Units (GPU). We focus on rigid fibers sedimenting due to gravity in a free-space Stokes flow. The ability to simulate a large number of fibers in a reasonable computational time on a high-performance parallel platform opens exciting new research opportunities. The previous serial implementation is rewritten for parallel execution. The algorithm is implemented in single precision using the Compute Unified Device Architecture (CUDA) on NVIDIA GPUs. In addition, we develop an OpenMP version of the parallel implementation to run on multi-core CPUs. Using both implementations, we perform a number of benchmarks to determine the fastest variant of the algorithm. We observe a speedup of 20x to 40x on the NVIDIA GTX 970 compared to an Intel Core i7 4770. The GPU implementation can simulate up to 2000 fibers on a desktop computer and it takes only in the order of 8 seconds to advance one time step. Furthermore, we have performed a number of simulations of known experiments for sedimenting fibers to validate the algorithm and to explore the numerical precision of the results. The results show an excellent agreement with results from prior experiments in the field. / Huvudsyftet med detta arbete är att, med hjälp av grafikprocessorer (GPU:er), accelerera en seriell implementation av en numerisk algoritm för simulering av stela fibrer i en vätska. Fibrerna är modellerade på partikelnivå och ett stort antal fibrer krävs i beräkningarna för att kunna göra realistiska simuleringar. Trots förenklingar i modellen blir ekvationerna så komplexa att de måste lösas numeriskt och det krävs kraftfulla metoder för beräkningarna vilket innebär att snabba och effektiva algoritmer måste utvecklas. Utgående från den seriella implementationen har en algoritm för parallell exekvering på GPU:er utvecklats. Algoritmen är implementerad i enkel precision på NVIDIA-GPU:er (NVIDIA GTX 970) med hjälp av Compute Unified Device Architecture, (CUDA). För att kunna göra en rättvis prestandajämförelse mellan GPU-implementationen och en CPU-implementering har dessutom en OpenMP-version av algoritmen implementerats för en CPU (Intel Core i7 4770) med flera kärnor. Båda versionerna har optimerats med avseende på respektive arkitektur. Ett antal prestandatester visar att den nya GPU-versionen av algoritmen ger en uppsnabbning av exekveringstiden på 20 till 40 gånger jämfört med CPU-OpenMP-versionen. Detta gör att vi nu kan simulera upp till 2000 fibrer på en bordsdator med en exekveringstid på ca 8 sekunder per tidssteg. Vi har även utfört ett antal simuleringar av redan kända experiment med fibersuspensioner för att validera algoritmen samt för att utvärdera den numeriska precisionen i resultaten. Överensstämmelsen med tidigare rapporterade resultat är väldigt god.
Identifer | oai:union.ndltd.org:UPSALLA1/oai:DiVA.org:kth-162118 |
Date | January 2015 |
Creators | Wolter, Erik |
Publisher | KTH, Numerisk analys, NA |
Source Sets | DiVA Archive at Upsalla University |
Language | English |
Detected Language | Swedish |
Type | Student thesis, info:eu-repo/semantics/bachelorThesis, text |
Format | application/pdf |
Rights | info:eu-repo/semantics/openAccess |
Relation | TRITA-MAT-E ; 2015:07 |
Page generated in 0.0022 seconds