18
I5AISE51 - GPU UF I5AISE51 Dimensionnement et évaluation des architectures Introduction à la programmation massivement parallèle Partie 1 Introduction à la programmation parallèle P.-E. Hladik INSA Toulouse 4 janvier 2021

UF I5AISE51 Dimensionnement et évaluation des architectures

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: UF I5AISE51 Dimensionnement et évaluation des architectures

I5AISE51 - GPU

UF I5AISE51Dimensionnement et évaluation des architectures

Introduction à la programmation massivement parallèle—

Partie 1Introduction à la programmation parallèle

P.-E. Hladik

INSA Toulouse

4 janvier 2021

Page 2: UF I5AISE51 Dimensionnement et évaluation des architectures

I5AISE51 - GPUIntroduction à la programmation parallèle

Plan

1 Introduction à la programmation parallèle

2 Allocation des données et exécution d’un kernel

3 Kernel à plusieurs dimensions

Page 3: UF I5AISE51 Dimensionnement et évaluation des architectures

Exemple d’architecture hétérogène parallèle

https://www.arteris.com/hubfs/2016-05-24-arteris-ncore-overview-PDF-FINAL.pdf

Page 4: UF I5AISE51 Dimensionnement et évaluation des architectures

Exemple d’architecture hétérogène parallèle

Latence Débit Signal IP

Mémoire

https://www.arteris.com/hubfs/2016-05-24-arteris-ncore-overview-PDF-FINAL.pdf

Page 5: UF I5AISE51 Dimensionnement et évaluation des architectures

Architecture CPU vs GPU

CPU : Latency Oriented Design (latence)

Optimisé pour les performances d’un code séquentiel.

ControlALU ALU

ALU ALUCache

DRAM

ALU puissante : réduction de la latence des opérationsLarges caches : conversion des accès longs à la mémoire en desaccès courts au cache (réduction de la latence)Contrôle d’exécution sophistiqués : prédiction de branchement,pipeline, data forwarding, etc. pour réduire la latence

Page 6: UF I5AISE51 Dimensionnement et évaluation des architectures

Architecture CPU vs GPU

GPU : Throughput Oriented Design (débit)

Optimisé pour les performances d’un code parallèle (augmente ledébit, c.-à-d. le travail réalisé par unité de temps)

DRAM

Petites caches : accélération du débit mémoireContrôle simple : pas de prédiction de branchement, pas dedata forwardingALU : nombreuses unités, latence importante mais denombreux pipeline pour un grand débitGrand nombre de threads matériels

Page 7: UF I5AISE51 Dimensionnement et évaluation des architectures

Architecture CPU vs GPU

CPUpour les partiesséquentielles où lalatence est importantepeut être 10x plus rapidequ’un GPU pour du codeséquentiel

GPUpour les parties parallèlesavec un haut débitsouhaitépeut être 10x plus rapidequ’un CPU pour le codeparallèle

The winner is...De bonnes performances pour une application s’obtient en utilisantjudicieusement des CPU et des GPU.

Page 8: UF I5AISE51 Dimensionnement et évaluation des architectures

Augmenter la vitesse des application

Exemple tiré de Programming Massively Parallel Processors

Page 9: UF I5AISE51 Dimensionnement et évaluation des architectures

Augmenter la vitesse des application

séquentielparallèleGPU

Exemple tiré de Programming Massively Parallel Processors

Page 10: UF I5AISE51 Dimensionnement et évaluation des architectures

Mais c’est quoi un traitement parallèle ?

Parallélisme de tâchesdécomposition del’application en tâchesles traitements des tâchessont indépendants

Parallélisme des donnéestraitement des donnéesen parallèleles traitements sontidentiques

Page 11: UF I5AISE51 Dimensionnement et évaluation des architectures

Domaines d’application du calcul parallèle hétérogène

[Lecture 1.2 Heterogenous computing, GPU Teaching Kit Nvidia]

Page 12: UF I5AISE51 Dimensionnement et évaluation des architectures

La programmation de GPU

Trois façon de développer des applications sur GPU

Utilisation debibliothèques

Facile à utiliserPerformantQualité

Directives decompilation

Facile à utiliserCode portablePerf. incertaines

Langage deprogrammation

PerformantFlexibleVerbeux

Page 13: UF I5AISE51 Dimensionnement et évaluation des architectures

La programmation de GPU

Trois façon de développer des applications sur GPU

Utilisation debibliothèques

Facile à utiliserPerformantQualité

Directives decompilation

Facile à utiliserCode portablePerf. incertaines

Langage deprogrammation

PerformantFlexibleVerbeux

Deep Learning

cuDNN

TensorRT

DeepStrem SDK

Algèbre linéaire

cuBLAS

cuSPARSE

cuSOLVER

Algo. parallèles

nvGRAPH

NCCL

Thrust

Signal, audio, vidéo

cuFTT

NVIDIA NPP

CODEC SDK

Page 14: UF I5AISE51 Dimensionnement et évaluation des architectures

La programmation de GPU

Trois façon de développer des applications sur GPU

Utilisation debibliothèques

Facile à utiliserPerformantQualité

Directives decompilation

Facile à utiliserCode portablePerf. incertaines

Langage deprogrammation

PerformantFlexibleVerbeux

OpenACC : directives de compilation C, C++ et FORTRAN

#pragma acc parallel loop copyin(input1[0:inputLength],input2[0:inputLength]), copyout(output[0:inputLength])for(i = 0; i < inputLength; ++i) { output[i] = input1[i] + input2[i];}

Page 15: UF I5AISE51 Dimensionnement et évaluation des architectures

La programmation de GPU

Trois façon de développer des applications sur GPU

Utilisation debibliothèques

Facile à utiliserPerformantQualité

Directives decompilation

Facile à utiliserCode portablePerf. incertaines

Langage deprogrammation

PerformantFlexibleVerbeux

MATLAB, Mathematica, LabVIEWAnalyse numérique

Python

FORTRAN

C

C++

C#

PyCUDA, Numba

CUDA Fortran, OpenACC

CUDA C, OpenACC

CUDA C++, Thrust

Hydridizer

Page 16: UF I5AISE51 Dimensionnement et évaluation des architectures

La programmation de GPU

Trois façon de développer des applications sur GPU

Utilisation debibliothèques

Facile à utiliserPerformantQualité

Directives decompilation

Facile à utiliserCode portablePerf. incertaines

Langage deprogrammation

PerformantFlexibleVerbeux

Page 17: UF I5AISE51 Dimensionnement et évaluation des architectures

CUDA-C

NVIDIA fournit un compilateur CUDA-C : nvccnvcc compile le code pour le GPU puis le transmet aucompilateur hôte (par exemple g++)Peut être utilisé pour compiler et éditer les liens desapplications réservées à l’hôte (i.e. CPU)Outils de débug : Nsight, CUDA-GDB, CUDA MEMCHECK)Outils de profilage de performance : Nsight, NVVP, NVPROF,NVTX

Page 18: UF I5AISE51 Dimensionnement et évaluation des architectures

Un peu de pratique avec le TD1

Objectifscompiler avec nvcc et exécuter un code sur un GPUrécupérer et afficher les informations du device