CUDA 4 et Architecture Fermi GPUDirect2.0 et UVA
|
|
|
- Camille Rondeau
- il y a 9 ans
- Total affichages :
Transcription
1 CUDA 4 et Architecture Fermi GPUDirect2.0 et UVA Pierre Kunzli - hepia 5 septembre Introduction La version 4.0 de CUDA introduit avec l'architecture Fermi deux nouveautés concernant la gestion de la mémoire sur les devices. GPUDirect2.0 premièrement, qui permet d'échanger des données entre deux devices (fonctionnalité appelée peer-to-peer g.1). Et l'unied Virtual Addressing (g.2), qui simplie la programmation, du fait qu'un espace d'adressage unié est utilisé pour le host et les devices. De plus, la gestion de plusieurs devices est maintenant facilitée. Figure 1 Echange peer-to-peer entre deux devices 2 Pré-requis An de proter de ces fonctionnalités, il faut que le runtime CUDA installé soit en version >= 4.0 et les devices doivent avoir un CUDA Capability Major version >= 2 (architecture Fermi). An de pouvoir utiliser l'uva, l'application doit être compilée en 64 bits et le mode TCC (Tesla Compute Cluster) doit être activé si l'application fonctionne sur Windows 7/Vista (voir [1] section 3.6). 1
2 Figure 2 Unied Virtual Addressing 3 Mise en oeuvre 3.1 Contrôle des pré-requis Le code suivant permet de s'assurer que le programme s'exécute sur une machine supportant les fonctionnalités UVA et P2P : #define checkcudaerrors(err) checkcudaerrors (err, FILE, LINE ) inline void checkcudaerrors( cudaerror err, const char *file, const int line ) if( cudasuccess!= err) fprintf(stderr, "%s(%i) : CUDA Runtime API error %d: %s.\n", file, line, (int)err, cudageterrorstring( err ) ); inline bool IsAppBuiltAs64() #if defined( x86_64) defined(amd64) defined(_m_amd64) return 1; #else return 0; #endif inline bool IsCuda4() #if CUDART_VERSION >= 4000 return 1; #else return 0; #endif // controler que l'application est compilee en 64 bits if (!IsAppBuiltAs64()) cout<<"uva is only supported on 64-bit OSs and the application must be built as a 64- bit target"<<endl; // controler que cuda4 est disponible if (!IsCuda4()) 2
3 cout<<"uva needs cuda4 runtime"<<endl; // controler que chaque device supporte p2p et uva int numgpus; checkcudaerrors(cudagetdevicecount(&numgpus)); cudadeviceprop deviceprop; for(int i=0;i<numgpus;i++) checkcudaerrors(cudagetdeviceproperties(&deviceprop, i)); if(!(deviceprop.major>=2)) cout<<"gpu 2.0 (fermi) requied to use UVA/P2P"<<endl; 3.2 UVA Lorsque les conditions sont remplies, l'uva est automatiquement activé. Un seul espace d'adressage est alors utilisé pour le host et pour les devices de compute capability >= 2. Cet espace d'adressage est utilisé pour toute allocation faite sur les devices, mais uniquement pour les allocations faites avec cudahostalloc() ou cudamallochost() pour la mémoire du host. La première conséquence est que lors des cudamemcpy() sur ou depuis n'importe quel device qui utilise l'uva, on peut utiliser la valeur cudamemcpydefault pour spécier le type de copie. Le runtime étant capable de déterminer la source et la destination à partir des pointeurs. Ensuite, lorsque l'uva est utilisé, les pointeurs alloués avec cudahostalloc() ou cudamallochost()peuvent être directement déréférencés depuis les kernels, et donc, la mémoire du host directement accédée. Il faut cependant utiliser cette fonctionalité avec précaution du fait des forts temps de latence qu'elle implique. global void kernel(int* ptr) int i = ptr[0]; ptr[1] = 3; // allouer de la memoire sur le host int* hostptr1; checkcudaerrors(cudamallochost(&hostptr1,10*sizeof(int))); int* hostptr2 = (int*)malloc(10*sizeof(int)); // la memoire allouee avec cudamallochost est directement accessible depuis le kernel kernel<<<dimgrid, dimblock>>>(hostptr1); int* deviceptr; checkcudaerrors(cudamalloc((void**)&deviceptr,10*sizeof(int))); // copier des donnees du host vers le device, inutile de specifier le type de copie // le runtime determine automatiquement la source et la destination checkcudaerrors(cudamemcpy(hostptr2,deviceptr,10*sizeof(int),cudamemcpydefault)); 3
4 3.3 Peer-to-Peer GPUDirect 2 permet des échanges directs entre deux devices, appelés copies peer-to-peer. Il est possible d'utiliser cette fonctionnalité sans que l'uva soit actif, cependant, cela implique que les données transitent par le host et cette façon de faire ne permet donc pas de gain de performance. Dans ce cas, il faut utiliser les fonctions de copies standard avec le suxe Peer. Par exemple, cudamemcpypeer(), qui prends en paramètre le pointeur destination, le device destination, le pointeur source, le device source, et enn la taille des données à copier. int* device0ptr; checkcudaerrors(cudamalloc((void**)&device0ptr,10*sizeof(int))); // allouer de la memoire sur le device 1 checkcudaerrors(cudasetdevice(1)); int* device1ptr; checkcudaerrors(cudamalloc((void**)&device1ptr,10*sizeof(int))); // copier les donnees du device 0 sur le device 1 checkcudaerrors(cudamemcpypeer(device1ptr, 1, device0ptr, 0, 10*sizeof(int))); 3.4 Peer-to-Peer avec UVA Lorsque l'uva est activé, un device peut accéder directement à la mémoire d'un autre device sans passer par le host. L'accès P2P doit être activé entre chaque device concerné. Une fois le P2P activé, la mise en oeuvre est très simple puisque qu'il sut d'utiliser la fonction cudamemcpy(), le runtime étant capable de déterminer la source et la destination à partir des pointeurs grâce à UVA. Ce type de copie ne transitant pas par le host, les performances sont bien meilleures que sans UVA. int* device0ptr; checkcudaerrors(cudamalloc((void**)&device0ptr,10*sizeof(int))); // activer acces p2p depuis device 0 sur device 1 checkcudaerrors(cudadeviceenablepeeraccess(1, 0)); // allouer de la memoire sur le device 1 checkcudaerrors(cudasetdevice(1)); int* device1ptr; checkcudaerrors(cudamalloc((void**)&device1ptr,10*sizeof(int))); // activer acces p2p depuis device 1 sur device 0 checkcudaerrors(cudadeviceenablepeeraccess(0, 0)); checkcudaerrors(cudamemcpy(device1ptr,device0ptr,10*sizeof(int),cudamemcpydefault)); De plus, lorsque l'uva est activé et que l'accès P2P est activé, un kernel peut accéder directement à la mémoire d'un autre device. Là encore, il faut faire attention aux temps de latence lors de tels accès. global void kernel(int* ptr) int i = ptr[0]; ptr[1] = 3; int* device0ptr; checkcudaerrors(cudamalloc((void**)&device0ptr,10*sizeof(int))); // activer acces p2p depuis device 0 sur device 1 4
5 checkcudaerrors(cudadeviceenablepeeraccess(1, 0)); // allouer de la memoire sur le device 1 checkcudaerrors(cudasetdevice(1)); int* device1ptr; checkcudaerrors(cudamalloc((void**)&device1ptr,10*sizeof(int))); // activer acces p2p depuis device 1 sur device 0 checkcudaerrors(cudadeviceenablepeeraccess(0, 0)); // le kernel va s'executer sur le device 1 et acceder directement a la memoire du device 2 kernel<<<dimgrid, dimblock>>>(device0ptr); 4 Utilisation de plusieurs devices Comme on peut le voir dans les exemples, un seul processus sur le CPU est capable de prendre le contôle de plusieurs devices. En eet, il est maintenant possible de lancer des exécutions asynchrones à partir d'un thread puis de prendre le contrôle d'un autre device an de lancer d'autres exécutions. Cela facilite dans certains cas la gestions de la programmation multi-devices puisqu'il n'est plus nécessaire d'utiliser plusieurs threads ou processus CPU. Dans l'autre sens, il est également maintenant possible pour plusieurs threads ou processus de prendre le contrôle d'un même device, les kernels sont alors exécutés en concurrence sur le device concerné. Cela permet de faire fonctionner plusieurs programmes CUDA simultanément ou de simplier la conception d'un programme dans certains cas. 5 Débits Des tests de débit ont été eectués. Les tests ont été eectués sur la machine cogito d'hepia, équipée de 4 GPUs Nvidia M2090 connectés à des ports PCIexpress x, permettant en théorie d'obtenir un débit de l'ordre de 8GO par seconde. An de mesurer le débit, on fait transiter 1GO de données : entre deux GPUs en p2p, entre deux GPUs en passant par le host et du host vers un GPU. Les résultats obtenus sont les suivants : type temps débit GPU -> GPU p2p 150 ms 6.7 GO/s GPU -> GPU via host 929 ms 1.07 GO/s HOST -> GPU 862 ms 1.16 GO/s On remarque alors que si les transferts qui transitent via la mémoire du host sont passablement lents par rapport au débit théorique, les transferts directs entre GPUs sont quant à eux beaucoup plus proches du maximum théorique. Références [1] NVidia. Cuda c programming guide 4.1 sections et 3.2.7, Programming_Guide.pdf. [2] Tim C. Schroeder. Peer-to-peer & unied virtual addressing cuda webinar, pdf. 5
6 A Exemple de code complet #include <cuda_runtime.h> #include <iostream> #include <stdlib.h> using namespace std; /* fonctions d'aide pour cuda */ #define getlastcudaerror(msg) getlastcudaerror (msg, FILE, LINE ) inline void getlastcudaerror( const char *errormessage, const char *file, const int line ) cudaerror_t err = cudagetlasterror(); if( cudasuccess!= err) fprintf(stderr, "%s(%i) : getlastcudaerror() CUDA error : %s : (%d) %s.\n", file, line, errormessage, (int)err, cudageterrorstring( err ) ); #define checkcudaerrors(err) checkcudaerrors (err, FILE, LINE ) inline void checkcudaerrors( cudaerror err, const char *file, const int line ) if( cudasuccess!= err) fprintf(stderr, "%s(%i) : CUDA Runtime API error %d: %s.\n", file, line, (int)err, cudageterrorstring( err ) ); inline bool IsAppBuiltAs64() #if defined( x86_64) defined(amd64) defined(_m_amd64) return 1; #else return 0; #endif inline bool IsCuda4() #if CUDART_VERSION >= 4000 return 1; #else return 0; #endif // nombre de threads par block #define NT 128 6
7 // kernel basique global void kernel(int *d2, int *d1, int *h1, int size) int mypos = blockidx.x*nt + threadidx.x; if(mypos<size) d2[mypos]=d1[mypos]; h1[size-1]=2; int main( int argc, char** argv) // controler que le systeme possede 2 GPU au moins int numgpus; checkcudaerrors(cudagetdevicecount(&numgpus)); if(numgpus<2) cout<<"this application needs at least 2 devices"<<endl; // controler que l'application est compilee en 64 bits if (!IsAppBuiltAs64()) cout<<"uva is only supported on 64-bit OSs and the application must be built as a 64-bit target"<<endl; // controler que cuda4 est disponible if (!IsCuda4()) cout<<"uva needs cuda4 runtime"<<endl; // controler que les deux premiers devices supporte p2p et uva cudadeviceprop deviceprop; for(int i=0;i<2;i++) checkcudaerrors(cudagetdeviceproperties(&deviceprop, i)); if(!(deviceprop.major>=2)) cout<<"gpu 2.0 (fermi) requied to use UVA/P2P"<<endl; int size = 200; // prendre le controle du device 0 // activer l'acces p2p du device 0 sur le device 1 checkcudaerrors(cudadeviceenablepeeraccess(1, 0)); int *device0ptr; checkcudaerrors(cudamalloc((void**)&device0ptr,size*sizeof(int))); // prendre le controle du device 1 checkcudaerrors(cudasetdevice(1)); // activer l'acces p2p du device 1 sur le device 0 checkcudaerrors(cudadeviceenablepeeraccess(0, 0)); // allouer de la memoire sur le device 1 int *device1ptr; checkcudaerrors(cudamalloc((void**)&device1ptr,size*sizeof(int))); 7
8 // allouer de la memoire sur le host accessible depuis les devices int *hostptr; checkcudaerrors(cudamallochost(&hostptr,size*sizeof(int))); hostptr[size-1]=0; // affiche 0 cout<<hostptr[size-1]<<endl; // effectuer une copie du device 0 sur le device 1 // (automatiquement p2p, pas besoin de specifier le type de copie) checkcudaerrors(cudamemcpy(device1ptr,device0ptr,size*sizeof(int),cudamemcpydefault)); dim3 dimgrid ((size + NT - 1)/NT,1); dim3 dimblock (NT,1); // executer le kernel sur le device 0 kernel<<<dimgrid, dimblock>>>(device1ptr, device0ptr, hostptr, size); getlastcudaerror("copy() execution failed.\n"); checkcudaerrors(cudathreadsynchronize()); // affiche 2 car la memoire du host a ete modifiee par le kernel cout<<hostptr[size-1]<<endl; 8
Introduction à CUDA. [email protected]
36 Introduction à CUDA [email protected] 38 Comment programmer les GPU? Notion de kernel exemple (n produits scalaires): T ci =ai b ( ai, b : vecteurs 3D, ci for(int i=0;i
. Plan du cours. . Architecture: Fermi (2010-12), Kepler (12-?)
Plan du cours Vision mate riel: architecture cartes graphiques NVIDIA INF 560 Calcul Paralle le et Distribue Cours 3 Vision logiciel: l abstraction logique de l architecture propose e par le langage CUDA
Calcul multi GPU et optimisation combinatoire
Année universitaire 2010 2011 Master recherche EEA Spécialité : SAID Systèmes Automatiques, Informatiques et Décisionnels Parcours : Systèmes Automatiques Calcul multi GPU et optimisation combinatoire
Introduction au calcul parallèle avec OpenCL
Introduction au calcul parallèle avec OpenCL Julien Dehos Séminaire du 05/01/2012 Sommaire Introduction Le calculateur du CGR/LISIC/LMPA Généralités sur OpenCL Modèles Programmation Optimisation Conclusion
Introduction à la programmation des GPUs
Introduction à la programmation des GPUs Anne-Sophie Mouronval Mesocentre de calcul de l Ecole Centrale Paris Laboratoire MSSMat Avril 2013 Anne-Sophie Mouronval Introduction à la programmation des GPUs
Introduction au langage C
Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les
EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE
EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0
Segmentation d'images à l'aide d'agents sociaux : applications GPU
Segmentation d'images à l'aide d'agents sociaux : applications GPU Richard MOUSSA Laboratoire Bordelais de Recherche en Informatique (LaBRI) - UMR 5800 Université de Bordeaux - France Laboratoire de recherche
1.6- Génération de nombres aléatoires
1.6- Génération de nombres aléatoires 1- Le générateur aléatoire disponible en C++ 2 Création d'un générateur aléatoire uniforme sur un intervalle 3- Génération de valeurs aléatoires selon une loi normale
Derrière toi Une machine virtuelle!
Derrière toi Une machine virtuelle! Yann-Gaël Guéhéneuc [email protected] École des Mines de Nantes, France Object Technology International Inc., Canada D où ça vient? Calculatrice Machine de Turing 1936
Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski [email protected]
Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski [email protected] Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université
Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs
Brefs rappels sur la pile et le tas (Stack / Heap) et les pointeurs (exemples en C) v1.11 - Olivier Carles 1 Pile et Tas Mémoire allouée de manière statique Mémoire Allouée Dynamiquement variables locales
Une bibliothèque de templates pour CUDA
Une bibliothèque de templates pour CUDA Sylvain Collange, Marc Daumas et David Defour Montpellier, 16 octobre 2008 Types de parallèlisme de données Données indépendantes n threads pour n jeux de données
Windows Server 2008. Chapitre 1: Découvrir Windows Server 2008
Windows Server 2008 Chapitre 1: Découvrir Windows Server 2008 Objectives Identifier les caractéristiques de chaque édition de Windows Server 2008 Identifier les caractéristiques généraux de Windows Server
Génération de code binaire pour application multimedia : une approche au vol
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
Introduction à la Programmation Parallèle: MPI
Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR Plan 1 Modèle de programmation 2 3 4
Programmation C. Apprendre à développer des programmes simples dans le langage C
Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités
Cours d initiation à la programmation en C++ Johann Cuenin
Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................
Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan
Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre
OS Réseaux et Programmation Système - C5
OS Réseaux et Programmation Système - C5 Rabie Ben Atitallah [email protected] RPC - XDR Rappel RPC: Remote Procedure Call Besoin d un environnement de haut niveau pour le développement
Veeam Backup and Replication
Veeam Backup and Replication mardi 5 août 2014 09:33 Procédure d installation de Veeam Backup Montez l ISO de Veeam Backup and Replication sur le serveur. Sélectionnez le setup.exe pour démarrer l installation.
Info0804. Cours 6. Optimisation combinatoire : Applications et compléments
Recherche Opérationnelle Optimisation combinatoire : Applications et compléments Pierre Delisle Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique 17 février 2014 Plan de
Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace
Processus 1) Contexte 2) Modèles de Notion de Points de vue Modèle fourni par le SX Opérations sur les 3) Gestion des Représentation des Opérations 4) Ordonnancement des Niveaux d ordonnancement Ordonnancement
Conventions d écriture et outils de mise au point
Logiciel de base Première année par alternance Responsable : Christophe Rippert [email protected] Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette
Guide de prise en main Symantec Protection Center 2.1
Guide de prise en main Symantec Protection Center 2.1 Guide de prise en main Symantec Protection Center 2.1 Le logiciel décrit dans cet ouvrage est fourni dans le cadre d'un contrat de licence et seule
1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)
1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d
I. Introduction aux fonctions : les fonctions standards
Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons
Module.NET 3 Les Assemblys.NET
Module.NET Chapitre 3 Les Assemblys.NET 2011/2012 Page 1 sur 13 Contenu Cours... 3 3.1 - Définition d un assembly.net... 3 3.2 - Private assembly ou assembly privé.... 3 3.3 - Shared assembly ou assembly
Architecture des ordinateurs
Architecture des ordinateurs Cours 4 5 novembre 2012 Archi 1/22 Micro-architecture Archi 2/22 Intro Comment assembler les différents circuits vus dans les cours précédents pour fabriquer un processeur?
Exécutif temps réel Pierre-Yves Duval (cppm)
Exécutif temps réel Pierre-Yves Duval (cppm) Ecole d informatique temps réel - La Londes les Maures 7-11 Octobre 2002 Plan Exécutif Tâches Evénements et synchronisation Partage de ressources Communications
Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :
Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de
1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.
1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this
Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données
EARTH et Threaded-C: Éléments clés du manuel de références de Threaded-C Bref historique de EARTH et Threaded-C Ancêtres de l architecture EARTH: Slide 1 Machine à flux de données statique de J.B. Dennis
Exercices INF5171 : série #3 (Automne 2012)
Exercices INF5171 : série #3 (Automne 2012) 1. Un moniteur pour gérer des ressources Le moniteur MPD 1 présente une première version d'un moniteur, exprimé en pseudo-mpd, pour gérer des ressources le nombre
Une introduction à Java
Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Java - Historique Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)
Bases de programmation. Cours 5. Structurer les données
Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et
Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique
Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation
Généralités sur le Langage Java et éléments syntaxiques.
Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...
Recherche dans un tableau
Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6
Programmation en C/C++
INSA de Lyon Département Génie Electrique Module IF1,IF3,IF4 Programmation en C/C++ Thomas Grenier Nicolas Ducros Tanneguy Redarce Lyon, le 3 mars 2015 2 / 63 Table des matières 1 Développement en C++
Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :
Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens
Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf
Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations
Analyse de sécurité de logiciels système par typage statique
Contexte Modélisation Expérimentation Conclusion Analyse de sécurité de logiciels système par typage statique Application au noyau Linux Étienne Millon UPMC/LIP6 Airbus Group Innovations Sous la direction
Master première année. Mention : Statistiques et Traitement de Données «STD» Rapport de stage
Université Blaise Pascal UFR Sciences et Technologie Département de Mathématique et Informatique 63177 AUBIERE CEDEXFrance Laboratoire de Météorologie Physique (LaMP) 24 avenue des Landais 63177 Aubière
IFT2245 - Systèmes d exploitation - TP n 1-20%
IFT2245 - Systèmes d exploitation - TP n 1-20% DIRO - Université de Montréal Nicolas Rous et Dorian Gomez Disponible : 14/02/2013 - Remise : 28/03/2013 au début de la démo LISEZ TOUT LE DOCUMENT AVANT
Programmation C++ (débutant)/instructions for, while et do...while
Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de
Contrôle Non Destructif : Implantation d'algorithmes sur GPU et multi-coeurs. Gilles Rougeron CEA/LIST Département Imagerie Simulation et Contrôle
Contrôle Non Destructif : Implantation d'algorithmes sur GPU et multi-coeurs Gilles Rougeron CEA/LIST Département Imagerie Simulation et Contrôle 1 CEA R & D for Nuclear Energy 5 000 people Nuclear systems
Claude Delannoy. 3 e édition C++
Claude Delannoy 3 e édition Exercices Exercices C++ en en langage langage delc++ titre 4/07/07 15:19 Page 2 Exercices en langage C++ AUX EDITIONS EYROLLES Du même auteur C. Delannoy. Apprendre le C++.
Virtual Box Mettez un PC dans votre... PC
Virtual Box Mettez un PC dans votre... PC Philippe Wambeke LoliGrUB 17 mai 2014 Philippe Wambeke (LoliGrUB) Virtual Box 17 mai 2014 1 / 13 1 Virtual box Présentation Plateformes supportées Installation
Programmation stochastique
Programmation stochastique (Partie 1) IFT-6512 Hiver 2008 Présentation succinte COIN-OR? COmputational INfrastructure for Operations Research. Préalablement, COIN-OR tenait pour Common Optimization INterface
Java Licence Professionnelle CISII, 2009-2010
Licence Professionnelle CISII, 2009-2010 Cours 1 : Introduction à Java A. Belaïd [email protected] Cours disponible sur le site : http://www.loria.fr/~abelaid puis Teaching 1 Fonctionnement 12 séances :
Compression de Données - Algorithme de Huffman Document de Conception
ROLLET Samuel SALLE Jennifer Compression de Données - Algorithme de Huffman Document de Conception Projet d'algorithmique et Structure des Données 1 SOMMAIRE 1. Domaine d application....4 1.1 Objectifs
INFO-F-105 Language de programmation I Séance VI
INFO-F-105 Language de programmation I Séance VI Jérôme Dossogne Année académique 2008 2009 Un grand merci à Yves Roggeman pour ses relectures et remarques des codes et commentaires qui ont contribuées
Programme Compte bancaire (code)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; Programme Compte bancaire (code) namespace compte_bancaire /// Classe Program public
27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)
Propriétés du Document Source du Document SDK_accords.odt Titre du Document SDK Python et Java pour le développement de services ACCORD Module(s) PyaccordsSDK, JaccordsSDK Responsable Prologue Auteur(s)
3615 SELFIE. http://graffitiresearchlab.fr HOW-TO / GUIDE D'UTILISATION
3615 SELFIE http://graffitiresearchlab.fr HOW-TO / GUIDE D'UTILISATION Hardware : Minitel Computer DIN FM545 45 connector (http://www.gotronic.fr/art-fiche-din-fm545-4747.htm) Cable Arduino compatible
Cours d Algorithmique et de Langage C 2005 - v 3.0
Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU [email protected] Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris
03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing
3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps
Remote Method Invocation Les classes implémentant Serializable
Parallélisme Architecture Eric Goubault Commissariat à l Energie Atomique Saclay Classe qui implémente la méthode distante (serveur): - dont les méthodes renvoient un objet serializable - ou plus généralement
Le langage C. Séance n 4
Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de
Mysql. Les requêtes préparées Prepared statements
Mysql Les requêtes préparées Prepared statements Introduction Les prepared statements côté serveur sont une des nouvelles fonctionnalités les plus intéressantes de MySQL 4.1 (récemment sorti en production
Comment utiliser Vijeo Designer avec les produits de machine virtuelle
Comment utiliser Vijeo Designer avec les produits de machine virtuelle Livre blanc 09/2010 www.schneider-electric.com Les renseignements fournis dans le présent document contiennent des descriptions générales
REMBO Version 2.0. Mathrice 2004 DESCRIPTION MISE EN OEUVRE CONCLUSION. [email protected]
REMBO Version 2.0 Mathrice 2004 DESCRIPTION MISE EN OEUVRE CONCLUSION Description Successeur de BPBatch 3 déclinaisons Rembo Auto Deploy (déploiement massif de clients) Rembo Auto Backup (restauration
INFO-F-404 : Techniques avancées de systèmes d exploitation
Nikita Veshchikov e-mail : [email protected] téléphone : 02/650.58.56 bureau : 2N8.213 URL : http://student.ulb.ac.be/~nveshchi/ INFO-F-404 : Techniques avancées de systèmes d exploitation Table
Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guide de démarrage rapide
Acronis Backup & Recovery 10 Advanced Server Virtual Edition Guide de démarrage rapide Ce document explique comment installer et utiliser Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Copyright
MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année
2003-2004 Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES Maude Manouvrier La reproduction de ce document par
as Architecture des Systèmes d Information
Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes
Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00
Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00 HFFv2 1. OBJET L accroissement de la taille de code sur la version 2.0.00 a nécessité une évolution du mapping de la flash. La conséquence de ce
Présentation du modèle OSI(Open Systems Interconnection)
Présentation du modèle OSI(Open Systems Interconnection) Les couches hautes: Responsables du traitement de l'information relative à la gestion des échanges entre systèmes informatiques. Couches basses:
Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs
Utilisation des classes de PourCGI par Michel Michaud, version 2002-11-23 Les fichiers PourCGI.h et PourCGI.cpp rendent disponibles deux classes et une fonction libre qui permettent de faire facilement
Structure d un programme et Compilation Notions de classe et d objet Syntaxe
Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types
Corrigé des exercices sur les références
Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile
Le prototype de la fonction main()
Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme
COMPARAISONDESLANGAGESC, C++, JAVA ET
REPUBLIQUE DU BENIN *******@******* MINISTERE DE L ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE(MESRS) *******@******* UNIVERSITE D ABOMEY CALAVI(UAC) *******@******* ECOLE POLYTECHNIQUE D ABPOMEY
Warren PAULUS Robin GODEFROID. C++ - Interface Graphique avec Visual Studio 2010
C++ - Interface Graphique avec Visual Studio 2010 2010/2011 Mise à jour 1.2 : Installation réussie avec Qt 4.7.3. - Ajout d éléments supplémentaires sur le fonctionnement de «QsplashScreen». - Ajout d
Optimisations des SGBDR. Étude de cas : MySQL
Optimisations des SGBDR Étude de cas : MySQL Introduction Pourquoi optimiser son application? Introduction Pourquoi optimiser son application? 1. Gestion de gros volumes de données 2. Application critique
ESXi: Occupation RAM avec VM_Windows et VM_Linux. R. Babel, A. Ouadahi April 10, 2011
ESXi: Occupation RAM avec VM_Windows et VM_Linux R. Babel, A. Ouadahi April 10, 2011 1 Contents 1 Introduction 3 2 TPS 3 2.1 Principe................................ 3 2.2 L'implémentation ESXi.......................
A -Systèmes de fichiers 1 - FAT vs NTFS
A -Systèmes de fichiers 1 - FAT vs NTFS -------------------------------------------- PETIT HISTORIQUE WINDOWS Windows 3.1 (considéré comme juste une interface, une sur couche sur DOS) FAT 16 Windows 95
Gestion de la mémoire
433 43 3 Gestion de la mémoire + 1. Qu'est-ce que la mémoire? - Définitions, exemples 2. Allocation contiguë en mémoire - Partitions de taille fixe, de taille variable 3. Pagination et mémoire virtuelle
4. Outils pour la synchronisation F. Boyer, Laboratoire Lig [email protected]
4. Outils pour la synchronisation F. Boyer, Laboratoire Lig [email protected] Le problème Insuffisance des solutions de base (verrous) Les solutions de plus haut niveau Les Sémaphores Les Moniteurs
WASD en environnement haute disponibilité Jean-Pierre PETIT WASD Le produit WASD WASD signifie Wide Area Surveillance Division C est le nom d une division de la défense australienne qui a accepté en 1996
Introduction à l héritage en C++
Algorithmique/Langage 1ère année Introduction à l héritage en C++ Yacine BELLIK IUT d Orsay [email protected] 1 Bibliographie Ce cours est basé sur le livre suivant : Programmer en C++, 5ème édition
Structure fonctionnelle d un SGBD
Fichiers et Disques Structure fonctionnelle d un SGBD Requetes Optimiseur de requetes Operateurs relationnels Methodes d acces Gestion de tampon Gestion de disque BD 1 Fichiers et Disques Lecture : Transfert
M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013
Rendu Temps Réel - OpenGL 4 et compute shaders December 18, 2013 résumé des épisodes précédents... création des objets opengl, organisation des données, configuration du pipeline, draw,... opengl 4.3 :
Le Ro le Hyper V Premie re Partie Configuration et Prise en main du gestionnaire Hyper-V
Le Ro le Hyper V Premie re Partie Configuration et Prise en main du gestionnaire Hyper-V Microsoft France Division DPE Table des matières Présentation... 2 Objectifs... 2 Pré requis... 2 Quelles sont les
Langage C. Patrick Corde. [email protected]. 22 juin 2015. Patrick Corde ( [email protected] ) Langage C 22 juin 2015 1 / 289
Langage C Patrick Corde [email protected] 22 juin 2015 Patrick Corde ( [email protected] ) Langage C 22 juin 2015 1 / 289 Table des matières I 1 Présentation du langage C Historique Intérêts
Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie
Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis
Informatique III: Programmation en C++
Informatique III: Programmation en C++ Listes haînées Lundi 9 Janvier 2006 1 2 Introdution Les listes hainées permettent de stoker un nombre d objets qui n a pas besoin d être spéifié a priori. Rajouter
Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if
Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike
Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés 2013-2014. Volubis.fr
Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés 2013-2014 13 et 14 mai 2014 IBM Client Center Paris, Bois-Colombes Volubis.fr Conseil et formation sur OS/400,
DNS Server RPC Interface buffer overflow. Céline COLLUMEAU Nicolas BODIN
Mémoire DNS Server RPC Interface buffer overflow Céline COLLUMEAU Nicolas BODIN 3 janvier 2009 Table des matières 1 Introduction 2 2 Présentation de la faille 3 3 Exemple d exploitation 5 4 Solutions 10
JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry [email protected].
: Java Agent DEvelopment framework Laboratoire IBISC & Départ. GEII Université & IUT d Evry [email protected] Introduction à la plateforme JADE 1) Modèle d agent 2) Services 3) Norme FIPA
Le serveur HTTPd WASD. Jean-François Piéronne
Le serveur HTTPd WASD Jean-François Piéronne Sommaire Caractéristiques Architecture générale Performances Intégration dans OpenVMS Caractéristiques Implémentation complète HTTP/1.0 Méthodes "GET", "HEAD",
Jean-Philippe Paquette [email protected]
Jean-Philippe Paquette [email protected] 6 novembre 2013 Ordre du jour Histoire du mobile a RDS Les alertes SMS Application RDS hockey Push notifications Différence avec le site mobile
Principe. Technologies utilisées. 1. Linux et LVM. Les snapshots (instantannés) sous Linux et FreeBSD. Présentation de LVM. Organisation de LVM
Les snapshots (instantannés) sous Linux et FreeBSD Principe Un instantanné permet de pouvoir figer l'état du système de fichier à un instant t pour des besoins de sauvegarde. Une sauvegarde peux parfois
Introduction à C++ et à wxwidgets
Introduction à C++ et à wxwidgets Master IGC 1ère année Année universitaire 2011/2012 Christophe Renaud Version 1.5 19/09/2011 Introduction Objectifs du cours Introduction au langage objet C++ Introduction
Les processus légers : threads. Système L3, 2014-2015 1/31
Les processus légers : threads Système L3, 2014-2015 1/31 Les threads Les threads sont des processus légers exécutés à l intérieur d un processus L exécution des threads est concurrente Il existe toujours
WORKSHOP OBIEE 11g (version 11.1.1.5) PRE-REQUIS:
WORKSHOP OBIEE 11g (version 11.1.1.5) Durée du workshop: 2 jours Profil des participants du workshop: Profil fonctionnel ou technique Notions de modélisation multidimensionnelle et du décisionnel NB :
Exercices sur SQL server 2000
Exercices sur SQL server 2000 La diagramme de classe : Exercices sur SQL server 2000 Le modèle relationnel correspondant : 1 Créer les tables Clic-droit on Tables et choisir «New Table» Créer la table
