Retour vers le futur des bibliothèques de squelettes algorithmiques et DSL



Similar documents
Sélection adaptative de codes polyédriques pour GPU/CPU

Optimizing Parallel Reduction in CUDA. Mark Harris NVIDIA Developer Technology

Memory Eye SSTIC Yoann Guillot. Sogeti / ESEC R&D yoann.guillot(at)sogeti.com

Remote Method Invocation

Langages Orientés Objet Java

Overview. Lecture 1: an introduction to CUDA. Hardware view. Hardware view. hardware view software view CUDA programming

CUDA Programming. Week 4. Shared memory and register

POB-JAVA Documentation

Thursday, February 7, DOM via PHP

Introduction au BIM. ESEB Seyssinet-Pariset Economie de la construction contact@eseb.fr

Rootbeer: Seamlessly using GPUs from Java

Hybrid Programming with MPI and OpenMP

CUDA Basics. Murphy Stein New York University

Intro to GPU computing. Spring 2015 Mark Silberstein, , Technion 1

GPGPU Parallel Merge Sort Algorithm

Setting up a monitoring and remote control tool

HIGH PERFORMANCE BIG DATA ANALYTICS

Qu est-ce que le Cloud? Quels sont ses points forts? Pourquoi l'adopter? Hugues De Pra Data Center Lead Cisco Belgium & Luxemburg

Introduction. GEAL Bibliothèque Java pour écrire des algorithmes évolutionnaires. Objectifs. Simplicité Evolution et coévolution Parallélisme

WinBioinfTools: Bioinformatics Tools for Windows Cluster. Done By: Hisham Adel Mohamed

[ dessins, collages, illustrations, etcetera ]

GPU Parallel Computing Architecture and CUDA Programming Model

OpenACC Basics Directive-based GPGPU Programming

The Need For Speed. leads to PostgreSQL. Dimitri Fontaine 28 Mars 2013

Introduction Les failles les plus courantes Les injections SQL. Failles Web. Maxime Arthaud. net7. Jeudi 03 avril 2014.

How To Write A Program In Java (Programming) On A Microsoft Macbook Or Ipad (For Pc) Or Ipa (For Mac) (For Microsoft) (Programmer) (Or Mac) Or Macbook (For

Introduction to GPU hardware and to CUDA

Le langage OCaml et la programmation des GPU

Liste d'adresses URL

Introduction to Hybrid Programming

LEVERAGING DEDUCTIVE VERIFICATION IN INDUSTRIAL CONTEXTS

Sun Management Center Change Manager Release Notes

DHI a.s. Na Vrsich 51490/5, , Prague 10, Czech Republic ( t.metelka@dhi.cz, z.svitak@dhi.cz )

Note concernant votre accord de souscription au service «Trusted Certificate Service» (TCS)

Website Report: To-Do Tasks: 22 SEO SCORE: 73 / 100. Add the exact keywords to this URL.

GPU Computing with CUDA Lecture 3 - Efficient Shared Memory Use. Christopher Cooper Boston University August, 2011 UTFSM, Valparaíso, Chile

Debugging with TotalView

Lecture 1: an introduction to CUDA

«Object-Oriented Multi-Methods in Cecil» Craig Chambers (Cours IFT6310, H08)

AgroMarketDay. Research Application Summary pp: Abstract

Administrer les solutions Citrix XenApp et XenDesktop 7.6 CXD-203

Introduction. Reading. Today MPI & OpenMP papers Tuesday Commutativity Analysis & HPF. CMSC 818Z - S99 (lect 5)

ITIL. Nicolas Richard (NRC) Inspiré d une présentation de Steve Mann (Opsys) à l ITSMF Belgium. Une évolution ou une révolution?

Reconstruction d un modèle géométrique à partir d un maillage 3D issu d un scanner surfacique

TIMISKAMING FIRST NATION

Accelerating Intensity Layer Based Pencil Filter Algorithm using CUDA

Hands-on CUDA exercises

An Incomplete C++ Primer. University of Wyoming MA 5310

Parallel Prefix Sum (Scan) with CUDA. Mark Harris

In-Home Caregivers Teleconference with Canadian Bar Association September 17, 2015

FINAL DRAFT INTERNATIONAL STANDARD

Applications to Computational Financial and GPU Computing. May 16th. Dr. Daniel Egloff

Personnalisez votre intérieur avec les revêtements imprimés ALYOS design

HPC with Multicore and GPUs

GPI Global Address Space Programming Interface

COMP/CS 605: Introduction to Parallel Computing Lecture 21: Shared Memory Programming with OpenMP

Introducing PgOpenCL A New PostgreSQL Procedural Language Unlocking the Power of the GPU! By Tim Child

What is Multi Core Architecture?

Account Manager H/F - CDI - France

Func%onal Programming at LumiGuide

"Internationalization vs. Localization: The Translation of Videogame Advertising"

EPREUVE D EXPRESSION ORALE. SAVOIR et SAVOIR-FAIRE

Archived Content. Contenu archivé

:: WIRELESS MOBILE MOUSE

CUDA Debugging. GPGPU Workshop, August Sandra Wienke Center for Computing and Communication, RWTH Aachen University

Annexe - OAuth Introduction. Xavier de Rochefort xderoche@labri.fr - labri.fr/~xderoche 15 mai 2014

Load Balancing. computing a file with grayscales. granularity considerations static work load assignment with MPI

Archived Content. Contenu archivé

Travaux publics et Services gouvernementaux Canada. Title - Sujet LEARNING SERVICES. Solicitation No. - N de l'invitation E60ZH

Introduction ToIP/Asterisk Quelques applications Trixbox/FOP Autres distributions Conclusion. Asterisk et la ToIP. Projet tuteuré

SunFDDI 6.0 on the Sun Enterprise Server

Solaris 10 Documentation README

Introduction to CUDA C

STUDENT APPLICATION FORM (Dossier d Inscription) ACADEMIC YEAR (Année Scolaire )

Comparing JavaServer Pages Technology and Microsoft Active Server Pages

site et appel d'offres

NÜVO REVO mm 810 x 810 x ( ) No. Description

Eurogas Testimonial on Implementing the CEER-BEUC Vision

HEALTH CARE DIRECTIVES ACT

Brazil + JDBC Juin 2001, douin@cnam.fr

ref. 6 Young 2G Accès d angle à 2 portes pivotantes / Corner entry enclosure, 2 hinged doors

BILL C-665 PROJET DE LOI C-665 C-665 C-665 HOUSE OF COMMONS OF CANADA CHAMBRE DES COMMUNES DU CANADA

Post-Secondary Opportunities For Student-Athletes / Opportunités post-secondaire pour les étudiantathlètes

Archived Content. Contenu archivé

Optimizing and interfacing with Cython. Konrad HINSEN Centre de Biophysique Moléculaire (Orléans) and Synchrotron Soleil (St Aubin)

SUBJECT CANADA CUSTOMS INVOICE REQUIREMENTS. This Memorandum explains the customs invoice requirements for commercial goods imported into Canada.

Veritas Storage Foundation 5.0 Software for SPARC

Detection of water leakage using laser images from 3D laser scanning data

Learn CUDA in an Afternoon: Hands-on Practical Exercises

STAGE YOGA & RANDONNEES à MADERE

Sun StorEdge A5000 Installation Guide

Calcul parallèle avec R

Guidance on Extended Producer Responsibility (EPR) Analysis of EPR schemes in the EU and development of guiding principles for their functioning

Archived Content. Contenu archivé

Transcription:

Retour vers le futur des bibliothèques de squelettes algorithmiques et DSL Sylvain Jubertie sylvain.jubertie@lri.fr Journée LaMHA - 26/11/2015

Squelettes algorithmiques 2 / 29

Squelettes algorithmiques Objectifs Approche de haut-niveau pour la programmation parallèle. Masquer la complexité de la programmation parallèle. Synchronisation/communication. Composition de squelettes. Squelettes + structures de données. 3 / 29

Squelettes algorithmiques Réduction optimisée en CUDA (M. Harris) : template <unsigned int blocksize > device void warpreduce ( volatile int *sdata, unsigned int tid ) { if ( blocksize >= 64) sdata [tid ] += sdata [tid + 32]; if ( blocksize >= 32) sdata [tid ] += sdata [tid + 16]; if ( blocksize >= 16) sdata [tid ] += sdata [tid + 8]; if ( blocksize >= 8) sdata [tid ] += sdata [tid + 4]; if ( blocksize >= 4) sdata [tid ] += sdata [tid + 2]; if ( blocksize >= 2) sdata [tid ] += sdata [tid + 1]; } template <unsigned int blocksize > global void reduce6 ( int * g_idata, int * g_odata, unsigned int n) { extern shared int sdata []; unsigned int tid = threadidx.x; unsigned int i = blockidx.x*( blocksize *2) + tid ; unsigned int gridsize = blocksize *2* griddim.x; sdata [ tid ] = 0; } while (i < n) { sdata [ tid ] += g_idata [i] + g_idata [i+ blocksize ]; i += gridsize ; } syncthreads (); if( blocksize >= 512){ if(tid < 256){ sdata [tid ] += sdata [tid + 256]; } syncthreads () if( blocksize >= 256){ if(tid < 128){ sdata [tid ] += sdata [tid + 128]; } syncthreads () if( blocksize >= 128){ if(tid < 64){ sdata [tid ] += sdata [tid + 64]; } syncthreads (); if(tid < 32) warpreduce ( sdata, tid ); if(tid == 0) g_odata [ blockidx.x] = sdata [0]; 4 / 29

Squelettes algorithmiques Implantations Muesli SkePU QUAFF SkeTo SkelGIS OSL... 5 / 29

Squelettes algorithmiques Limitations jeu de squelettes + structures de données fixés. limitations à un domaine. optimisations logicielles : fusion de squelettes. optimisations matérielles : support des architectures. conception. performance. 6 / 29

Squelettes algorithmiques Muesli : void msl :: InitSkeletons ( int argc, char ** argv, bool serialization ) { MPI_Init (& argc, & argv ); MPI_ Comm_ size ( MPI_COMM_WORLD, & Muesli :: MSL_ numoftotalprocs ); MPI_ Comm_ rank ( MPI_COMM_WORLD, & Muesli :: MSL_myId );... } 7 / 29

Squelettes algorithmiques SkeTo : void make_ edges () const {... } MPI_ Barrier ( MPI_ COMM_ WORLD ); 8 / 29

Squelettes algorithmiques SkePU : // unary transpose operator inline Matrix <T >& operator ~() {... #if defined ( SKEPU_CUDA ) transpose_cu ( Environment <int >:: getinstance () - >... # elif defined ( SKEPU_ OPENCL ) transpose_ CL (0); # elif defined ( SKEPU_ OPENMP ) transpose_ OMP (); # else transpose_ CPU (); # endif... } 9 / 29

Squelettes algorithmiques Remarques Difficiles à maintenir/étendre. Séparer les aspects : Squelettes fournis Optimisations (fusion) Support des architectures. Couche d abstraction supplémentaire : DSL. 10 / 29

DSLs : Domain Specific Languages 11 / 29

Domain Specific Languages Objectifs Fournir aux utilisateurs des langages adaptés à leurs domaines. Opérateurs/fonctions + structures de données. Vector v1 (...), v2 (...); auto v3 = map ( plus, v1, v2 ); // squelettes. auto v3 = v1 + v2; // DSL 12 / 29

Domain Specific Languages Implantations LateX SQL HTML VHDL Matlab... 13 / 29

Domain Specific Languages DSL pour le HPC NT2 Delite : OptiML, OptiQL, OptiGraph, OptiMesh... 14 / 29

Domain Specific Languages NT2 syntaxe Matlab. C++, méta-programmation. squelettes algorithmiques : transform, fold, scan. mémoire partagée : multithreading, vectorisation. accélérateurs. 15 / 29

Domain Specific Languages Delite Scala Squelettes algorithmiques. Mémoire partagée, accélérateurs. Mémoire distribuée : Apache Mesos, Google Protocol Buffers. Forge : méta-dsl. 16 / 29

Ce que l on voudrait... 17 / 29

Architecture générale Utilisateur DSL Signal LinAlg Graphe Image Squelettes Structures Transformations MPI Architecture OpenMP CUDA SIMD Implantations FFTW BLAS OpenCV CuFFT CuBLAS 18 / 29

Problèmes à résoudre Données Génération de structures de données optimisées. Transformation des données AoS - SoA. Choix localité des données (NUMA, accélérateurs, distribué). Solution : tags, modèle de coût? Image image (...); // conversion AoS -> SoA? auto gray = grayscale ( image ); // RGBRGB. -> RR. GG. BB. Matrix m1 (...), m2 (...); auto m3 = m1 * m2; // sur CPU ou accélérateur ou...? 19 / 29

Problèmes à résoudre Aspects distribués Distribution des données. Bordures. Génération des synchronisations/communications. Recouvrement calcul/communication. Solution : allocation dynamique des bordures. Image image (...); // info sur les bordures ici? image. apply (/* stencil3x3 */ ); // allocation retardée? image. apply (/* stencil5x5 */ ); // reallocation? 20 / 29

Problèmes à résoudre Autres Interfaces des bibliothèques: allocation interne, type des paramètres,... Portabilité : libnuma. Chaînes de compilation (nvcc),... cv :: Mat m = cv :: imread (" image. png ", cv :: IMREAD_ UNCHANGED ); // allocation interne auto * pointer = m. data ; // pointeur aligné? 21 / 29

Travaux en cours Génération de structures de données optimisées J. Falcou, I. Masliah, S. Jubertie - LRI DSL pour la géologie,... Thèse de G. Sornet - BRGM-LIFO - 2015-2018. 22 / 29

Génération de structures de données optimisées Idée 1 Représentation utilisateur : AoS Image 2D pixels RGB 2 Représentation intermédiaire : SoA 3 tableaux 2D 3 Représentation mémoire : segment mémoire 1D Allocateurs - Buffers - Conteneurs Allocateurs : alignement, NUMA, huge pages, accélérateurs. Conteneurs : localité, dimensions,... Optimisation vectorisation : SoA. Transferts mémoire centrale - accélérateurs. Distribution/communication. 23 / 29

Génération de structures de données optimisées Allocators malloc, aligned, NUMA, CUDA,... adaptateur allocateurs C++. retourne un Block. Block Type + unique ptr + taille; 24 / 29

Génération de structures de données optimisées Buffer capacité. iterateurs. redimensionnement. copie. 25 / 29

Génération de structures de données optimisées AoS - SoA Fournir une vision AoS à une structure de données SoA. vectors < int, float, int > vecs ; vecs. add ( 3, 4.0f, 5 ); vecs. add ( 6, 7.3f, 8 ); vecs. add ( 9, 10.2f, 11 );... using imagergb = vectors < unsigned char, unsigned char, unsigned char >; 26 / 29

Conclusion Existant Beaucoup d approches différentes/similaires. Pas de factorisation. Limitations liées à la conception (squelettes). Beaucoup de DSL ad hoc. Delite, Forge : unification? 27 / 29

Conclusion Travaux en cours Reconstruction par le bas : 1 bloc mémoire, 2 structure de données interne, 3 distribution, 4 structure de données exposée à l utilisateur. Ce n est que le début! 28 / 29

Questions, suggestions, idées,...? 29 / 29