Skip to main content

LUP Student Papers

LUND UNIVERSITY LIBRARIES

Vectorization of the Jacobi method with single- and multiple right-hand sides

Paaso, Patrik LU (2022) In Bachelor's Theses in Mathematical Sciences NUMK11 20212
Mathematics (Faculty of Sciences)
Centre for Mathematical Sciences
Abstract
Vectorization has been an important consideration for scientific com-
puting performance for a long time. Early super computers were designed
around vectorization, the so called ”vector computers”, but recent trends
point toward favouring other computer architectures, and vector comput-
ers are much more rare than they used to be. Nonetheless, vectorization
still lives on to a smaller extent in modern computers, and it is important
to make full use of these for optimal performance. Here we will investigate
some options for implementing vectorized code, with various implemen-
tation schemes. Our method of choice is the Jacobi method, an iterative
method known for it’s excellent parallelization potential. The level of
performance... (More)
Vectorization has been an important consideration for scientific com-
puting performance for a long time. Early super computers were designed
around vectorization, the so called ”vector computers”, but recent trends
point toward favouring other computer architectures, and vector comput-
ers are much more rare than they used to be. Nonetheless, vectorization
still lives on to a smaller extent in modern computers, and it is important
to make full use of these for optimal performance. Here we will investigate
some options for implementing vectorized code, with various implemen-
tation schemes. Our method of choice is the Jacobi method, an iterative
method known for it’s excellent parallelization potential. The level of
performance gains varied greatly between implementations, from being
slightly slower to having the expected optimal performance. We will go
into why we think the results are so varied, an important example being
the level of non-contiguous memory accesses. Nonetheless, our successful
implementations highlight the great potential importance of considering
vectorization when implementing performance-critital software. (Less)
Popular Abstract (Swedish)
Att effektivisera program som löser komplexa problem har länge varit ett av målen inom beräkningsvetenskapen. I denna kandidatuppsats så undersöker vi ett sätt att göra program mer effektiva, och det är med hjälp av vektorisering. Detta är en metod som tidigt i beräkningsvetenskapen var central för att göra program mer effektiva. Senare blev andra former av parallelisering mer central, men det finns forfarande stöd för denna teknik i dagens datorer. I detta arbete undersöker vi olika sätt att vektorisera en viss matematisk metod, där vi har valt ha jakobi metoden i fokus. Detta är en matematisk metod som har väldigt bra potential för parallelisering och vektorisering. Vi använder oss av programmerings språket C++ och använder oss av... (More)
Att effektivisera program som löser komplexa problem har länge varit ett av målen inom beräkningsvetenskapen. I denna kandidatuppsats så undersöker vi ett sätt att göra program mer effektiva, och det är med hjälp av vektorisering. Detta är en metod som tidigt i beräkningsvetenskapen var central för att göra program mer effektiva. Senare blev andra former av parallelisering mer central, men det finns forfarande stöd för denna teknik i dagens datorer. I detta arbete undersöker vi olika sätt att vektorisera en viss matematisk metod, där vi har valt ha jakobi metoden i fokus. Detta är en matematisk metod som har väldigt bra potential för parallelisering och vektorisering. Vi använder oss av programmerings språket C++ och använder oss av biblioteken DUNE, VCL och Vc för att implementera vår vektoriserad kod. Vi sedan jämför mellan våra implementationer, och undersöker vad som gör en viss implementation snabbare eller långsammare än andra. Utifrån dessa resultat så ger vi också potentiella förbättringar som kan göras, och vad som kan undersökas i framtida verk. (Less)
Please use this url to cite or link to this publication:
author
Paaso, Patrik LU
supervisor
organization
alternative title
Vektorisering av Jacobi-metoden med enskilda samt multipla högersidor
course
NUMK11 20212
year
type
M2 - Bachelor Degree
subject
keywords
C++, Vectorization, SIMD, DUNE, VCL, Vc, Jacobi method, Jacobi iteration, discrete Poisson's equation, Stationary iterative methods, Computational science, Optimization, Numerical analysis
publication/series
Bachelor's Theses in Mathematical Sciences
report number
LUNFNA-4040-2022
ISSN
1654-6229
other publication id
2022:K13
language
English
id
9092529
date added to LUP
2022-09-27 08:09:41
date last changed
2024-04-15 16:36:37
@misc{9092529,
  abstract     = {{Vectorization has been an important consideration for scientific com-
puting performance for a long time. Early super computers were designed
around vectorization, the so called ”vector computers”, but recent trends
point toward favouring other computer architectures, and vector comput-
ers are much more rare than they used to be. Nonetheless, vectorization
still lives on to a smaller extent in modern computers, and it is important
to make full use of these for optimal performance. Here we will investigate
some options for implementing vectorized code, with various implemen-
tation schemes. Our method of choice is the Jacobi method, an iterative
method known for it’s excellent parallelization potential. The level of
performance gains varied greatly between implementations, from being
slightly slower to having the expected optimal performance. We will go
into why we think the results are so varied, an important example being
the level of non-contiguous memory accesses. Nonetheless, our successful
implementations highlight the great potential importance of considering
vectorization when implementing performance-critital software.}},
  author       = {{Paaso, Patrik}},
  issn         = {{1654-6229}},
  language     = {{eng}},
  note         = {{Student Paper}},
  series       = {{Bachelor's Theses in Mathematical Sciences}},
  title        = {{Vectorization of the Jacobi method with single- and multiple right-hand sides}},
  year         = {{2022}},
}