Masterproef T704 : Hybride parallellisatie van GLAS
Begeleiding:
|
|||||||
Onderzoeksgroep:
Numerieke Approximatie en Lineaire Algebra Groep
|
|||||||
Context:
Vele programmeertalen ondersteunen bepaalde functionaliteiten van vectoren en matrices. Als we MATLAB buiten beschouwing laten, zijn op dit ogenblik vector-matrixpakketten voor C++ de meest geavanceerde qua functionaliteit en efficiëntie. Het pakket GLAS laat toe op een intuïtieve manier te werken met vectoren en matrices. Je kan hiervoor MATLAB-achtige notatie gebruiken zoals in de volgende code die de methode van de machten illlustreert voor een volle matrix:
glas::dense_vector< double > x(n), y(n) ; glas::dense_matrix< double > A(n,n) ; ... for (int i=0; i<max_it; ++i) { y = A * x ; y /= norm_2(y) ; }De implementatie van deze expressies gebeurt via zogenaamde backends. Op dit ogenblik is er nog geen parallelle backend in GLAS. Op moderne computers wordt geheugentoegang georganiseerd op een hiërarchische manier. Denk maar aan multicore nodes, eventueel voorzien van GPU's, gekoppeld via een Infiniband interconnect. Software om op een efficiënte en gebruiksvriendelijke manier met dergelijke machines te werken, bestaat op dit ogenblik niet. De code zal worden geïllustreerd op een eenvoudig wiskundig probleem naar keuze in overleg met de promotor. |
|||||||
Doel:
Het uitwerken van een backend voor een hybride parallelle computer die bestaat uit multicore nodes, eventueel voorzien van GPGPU's. Gebruiksvriendelijkheid en efficiëntie zijn sleutelwoorden. Het werk kadert in de doelstellingen van het ExaScience Intel lab in Leuven.
|
|||||||
Uitwerking:
De focus ligt op het implementeren van de backend zelf en enkele algoritmen uit GLAS, zoals een vol matrix-vector product en het inwendig product van vectoren. Dit zijn eenvoudige operaties. De student zal eerst vooral vertrouwd moeten worden met verschillende beschikbare tools voor parallelisatie zoals, Message Passing Interface (MPI), p-threads, Threading Building Blocks (TBB) of OpenCL. Relevante Literatuur:
|
|||||||
Profiel:
Dit is een implementatie-opdracht. De student wordt verwacht graag te programmeren in C++. Aan te raden vakken: Parallelle Computers en Technische wetenschappelijke software. Deze masterproef is voor 1 of 2 studenten. |