Génération de code binaire pour application multimedia : une approche au vol



Documents pareils
Machines Virtuelles. et bazard autour. Rémi Forax

Chapitre 2 : Abstraction et Virtualisation

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

Java - la plateforme

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

Introduction aux Machines Virtuelles avec VMKit

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE


Windows Server Chapitre 1: Découvrir Windows Server 2008

Alexandre Buge Epitech 5 Promo Soutenance de stage du 01/03/2004 au 31/08/2004

Project 1 Experimenting with Simple Network Management Tools. ping, traceout, and Wireshark (formerly Ethereal)

Java et les bases de données

Caractéristiques principales:

Modélisation des interfaces matériel/logiciel

Vulgarisation Java EE Java EE, c est quoi?

Application Form/ Formulaire de demande

Editing and managing Systems engineering processes at Snecma

WiFi Security Camera Quick Start Guide. Guide de départ rapide Caméra de surveillance Wi-Fi (P5)

Utiliser une WebCam. Micro-ordinateurs, informations, idées, trucs et astuces

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

WEB page builder and server for SCADA applications usable from a WEB navigator

La Forge INRIA : bilan et perspectives. Hervé MATHIEU - 11 mai 2010

Software and Hardware Datasheet / Fiche technique du logiciel et du matériel

Compilation (INF 564)

Rappels d architecture

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Once the installation is complete, you can delete the temporary Zip files..

Module.NET 3 Les Assemblys.NET

Introduction à CUDA.

Thème 3 Conception et vérification d architectures de systèmes sur puce

ÉCOLE POLYTECHNIQUE DE MONTRÉAL. Département de Génie Électrique. La technologie de TEXAS INSTRUMENTS DSP pour le cours Analyse des Signaux ELE2700

Le Cloud: Mythe ou Réalité?

Virtualisation des ressources serveur. Exemple : Systèmes partitionnés sous HP-UX et Oracle

Structure de base d un ordinateur

Catalogue des stages Ercom 2013

Utiliser un proxy sous linux

Contrôle Non Destructif : Implantation d'algorithmes sur GPU et multi-coeurs. Gilles Rougeron CEA/LIST Département Imagerie Simulation et Contrôle

Cours 1 : La compilation

SCC / QUANTUM Kickoff 2015 Data Protection Best Practices

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Java Licence Professionnelle CISII,

Plan du cours. Historique du langage Nouveautés de Java 7

Exercices sur SQL server 2000

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

ACTIVITÉ DE PROGRAMMATION

Threads. Threads. USTL routier 1

Iyad Alshabani SysCom - CReSTIC Université de Reims 17/02/2011 1

Les mésocentres HPC àportée de clic des utilisateurs industriels

Chap III : Les tableaux

SugarCubes. Jean-Ferdinand Susini Maître de Conférences, CNAM Chaire systèmes enfouis et embarqués. Paris, le 9 janvier, 2009

Eclipse atelier Java

Webinaire Windows 8. Nous recommandons les logiciels Microsoft Nous recommandons les logiciels Microsoft

EN Télécom & Réseau S Utiliser VMWARE

Architecture des Ordinateurs. Partie II:

SysFera. Benjamin Depardon

Master (filière Réseau) Parcours Recherche: Systèmes Informatiques et Réseaux (RTS)

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Bienvenue au roadshow Microsoft System Center, SQL et Windows Server 2012

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

Guide d'installation rapide TFM-560X YO.13

Plateforme Technologique Innovante. Innovation Center for equipment& materials

INFO-F-404 : Techniques avancées de systèmes d exploitation

EXALOGIC ELASTIC CLOUD MANAGEMENT

Ready to Go? [Retour d'expérience sur un projet en Golang] HTML PDF 1 / 44

SERVEUR DÉDIÉ DOCUMENTATION

PROJECT POUR LE SYSTÈME DE SURVEILLANCE PAR CAMERA BASÉ SUR TECHNOLOGIE AXIS, PANNEAUX SOLAIRES ET LUMIERE DU LEDS BLOC D APARTEMENT LAURIER.

Composants Logiciels. Le modèle de composant de CORBA. Plan

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

IRL : Simulation distribuée pour les systèmes embarqués

Préparer un état de l art

Grid Technology. ActiveMQ pour le grand collisionneur de hadrons (LHC) Lionel Cons Grid Technology Group Information Technology Department

JetClouding Installation

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Stratégie DataCenters Société Générale Enjeux, objectifs et rôle d un partenaire comme Data4

XtremWeb-HEP Interconnecting jobs over DG. Virtualization over DG. Oleg Lodygensky Laboratoire de l Accélérateur Linéaire

Derrière toi Une machine virtuelle!

Optimisation multi-critère pour l allocation de ressources sur Clouds distribués avec prise en compte de l énergie

as Architecture des Systèmes d Information

Architecture des calculateurs

Orchestration d expériences à l aide de processus métier

Installation de VirtualPOPC-1 sur Ubuntu Server LTS 64bits

TVTools Cloud Edition

Chapitre I Notions de base et outils de travail

Analyse de sécurité de logiciels système par typage statique

INGÉNIEUR - DÉVELOPPEUR SENIOR EMBEDDED - C/C++ - MICROCONT RÔLEURS. 34 ans - 10 ans d'expérience

Virtualisation & Sécurité

La JVM. La machine virtuelle Java. La JVM. La JVM

Instrumentation de code Java

Bienvenue sur Lab-Windows Il n'y a de vents favorables que pour ceux qui ont un cap

Concept de machine virtuelle

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Cours 1 : Qu est-ce que la programmation?

Introduction au langage C

Logitech Tablet Keyboard for Windows 8, Windows RT and Android 3.0+ Setup Guide Guide d installation

Comprendre l impact de l utilisation des réseaux sociaux en entreprise SYNTHESE DES RESULTATS : EUROPE ET FRANCE

Anticiper et prédire les sinistres avec une approche Big Data

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Portage d applications sur le Cloud IaaS Portage d application

Transcription:

Génération de binaire pour application multimedia : une approche au vol http://hpbcg.org/ Henri-Pierre Charles Université de Versailles Saint-Quentin en Yvelines 3 Octobre 2009

Présentation Présentation Université de Versailles Laboratoire PRiSM Optimisation de Partenariats académiques industriels : CEA, Intel, Bull Le defaut de performance est devenu un bug

Chaine de compilation Chaine de compilation Algorithm Programmer Source Compiler Intermediate Assembler Assembly Loader Binary System Runnable User Data Code source est supposé haut niveau Code exécutable est supposé bas niveau Optimisation est supposée indépendantes des données La machine cible est supposée connue Plus rien n est vrai!

Low level instruction (Itanium ISA) Les fabricants de compilateurs sont toujours en retard sur les architectes de processeurs

Ce que l on demande à un compilateur Ce que l on demande à un compilateur 1980 produire un correct 2009 1 produire un rapide 2 parallélisation automatique (multi CPU / multi core / multi thread) 3 vectoriser le 4 utiliser les jeux d instruction multimedia 5 instrumenter le

Ask for program! Quelles sont les variations de performance de ce programme? int i; for (i= 0; i < N; ++i) { int j; dest[i]= 0; for (j= 0; j < N; ++j) dest[i] += src[j] * m[i][j]; } Variables : choix du compilateur, taille des données, processeur cible, parallélisme disponible, type de données, emplacement mémoire, système d exploitation,...

La taille compte (... La taille des données, a quoi pensiez vous?) Taille de la boucle (valeur de N) 10 1 Multimedia kernel : Full loop unroll, instruction scheduling, memory caches access,... 10 2 /10 3 / Scientific : loop unroll, loop convertion, data prefetching 10 6 Multimedia flux : multithreading 10 10 andmore High level parallelism : MPI / Grid / Cloud,... N is generally a parameter only known at run-time. Profiling and Iterative compilation does not help. Compilation strategies are complex and are application domain specific Titanic effet

The Titanic effect 1/2 The Titanic effect 1/2 Data set modify performance application during run-time Using a FreeBOX (ADSL Modem and TV/IP broadcasting), my home computer (Intel Celeron 1.70GHz) play correctly France3 channel (which use MPEG TS video format) but cannot play RTL9 (X264 video format) Optimization is not data independant

The Titanic effect 2/2 Data set modify performance application during run-time Extract from MPEG group benchmarks Optimization is not data independant

C est compliqué un compilateur au vol? NON! C est compliqué un compilateur au vol? NON! unsigned char [] = { 0x78, 0x81, 0x01, 0x83, /* mpy $3,$3,$4 */ 0x35, 0x00, 0x00, 0x00 /* bi $0 */ };../.. typedef int (*pfiii)(int, int); pfiii Sad = (pfiii) ; int result = Sad(2, 21);

Write a compilette (thinking time) Write a compilette (thinking time) pifi multiplycompile(int multiplyvalue) { insn *= (insn *)_malloc_align(1024, 7); (void) printf("code generation for multiply value %d\n", mul #[.org mpyi $3, $3, (multiplyvalue) bi $lr ]#; (void) printf("code generated\n"); return (pifi); }

Write a compilette (thinking time) Use the "compilette" /* Generate binary */ multiplyfunc = multiplycompile(atoi(argv[1])); for (i = 1; i < 11; ++i) printf("%3d ", i); printf("\n"); for (i = 1; i < 11; ++i) printf("%3d ", multiplyfunc(i)); printf("\n");

Write a compilette (thinking time) Generate the generator (Static compile time) hpbcg simple-multiply-cell.hg > simple-multiply-cell.c cc -Wall../.. simple-multiply-cell.c -o simple-multiply-cel spu-gcc../.. -o simple-worker-cell simple-worker-cell.c

Write a compilette (thinking time) Run the generator (Run time) turner:simple-multiply/>./simple-multiply-cell 6 Code generation for multiply value 6 Code generated 1 2 3 4 5 6 7 8 9 10 6 12 18 24 30 36 42 48 54 60 turner:simple-multiply/>./simple-multiply-cell 7 Code generation for multiply value 7 Code generated 1 2 3 4 5 6 7 8 9 10 7 14 21 28 35 42 49 56 63 70 turner:simple-multiply/>./simple-multiply-cell 14 Code generation for multiply value 14 Code generated

Write a compilette (thinking time) Compilettes / Results Obtained goals : 1 Matrix vector vectorisation 2 Matrix vector optimization 3 Image filtering optimisation (using multimedia instructions) 4 X264 video enr optimization (data aligment, multimedia instructions) 5 OpenGL off screen optimization (vectorization, multimedia instructions, optimization) Multi target : Sparc Itanium, Power (Power & Altivec), Cell (SPU & PPU), CCG / HPBCG

General goal : experiment new compilation process General goal : experiment new compilation process Algorithmic optimizer Dynamic specialization Source Compiler Multiple compilation Intermediate Assembler Compressor Specialized VM Assembly Loader Interpretor Binary Java JVM System JIT Specialized VM Runnable Interpretor Code generation User Parameter Data Compilette Code specialization Iterative compiler

TODO list TODO list Go high level Find a compilette generator (gcc-lto project, C++, python,...) Use it in the large (STAPL) Find a new position!

Ask for the program Ask for the program http://hpcbg.org/ Support for : power power4, altivec, cell, FP2 itanium full isa but not scheduling arm preliminary Samples s BSD like licence