Free Essay

Exploiting Memory Access Patterns to Improve Memory Performance in Data-Parallel Architectures

In:

Submitted By poursondage
Words 3534
Pages 15
Lecture critique et synthèse de: Exploiting Memory Access Patterns to Improve Memory Performance in Data-Parallel Architectures

Jean-François Patenaude

Département de génie logiciel et des technologies de l’information, École de technologie supérieure
1100 rue Notre-Dame Ouest, Montréal (Québec) H3C 1K3 Canada

Abstract—On retrouve une quasi-ubiquité de GPU permettant les calculs en tout genre (GPGPU) sur le marché. Or, il y a encore peu de logiciels qui en prennent avantage. Une de ces raisons est la complexité du développement de logiciels parallèles sur les GPU. C’est en grande partie parce que la gestion de la mémoire est laissée aux soins du développeur. D’ailleurs, une mauvaise gestion de la mémoire peut impacter grandement la performance du logiciel, d’autant plus que les cartes graphiques sont optimisées pour offrir une très large bande passante de mémoire, mais avec des temps de réponse moins rapide. Un article portant sur une méthodologie qui permet de systématiser l’application de techniques d’amélioration de l’accès de la mémoire afin de garantir de bonnes performances a récemment été publié. Selon cette méthodologie, l’optimisation est alors fonction des différents patrons d’accès de la mémoire et de l’architecture sous-jacente : vectorielle comme les GPU d’AMD ou scalaire comme ceux de NVIDIA. Dans le présent article, une synthèse de la méthodologie sera présentée. Puis, une analyse suivra afin de discuter de la méthodologie et de la critiquer.

Index Terms—General-purpose computation on GPUs (GPGPUs), GPU computing, memory optimization, memory access pattern, vectorization, memory selection, memory coalescing, data parallelism, data-parallel architectures.

Introduction Bien que le GPGPU existe depuis plus de trois décennies, les outils de développement étaient jusqu’alors déficients ou tout simplement inexistants [1]. Aujourd’hui, l’offre des deux géants de l’industrie des processeurs graphiques, AMD et NVIDIA, s’est grandement améliorée et les développeurs ont accès à plusieurs outils pour développer leurs programmes parallèles sur les GPU. En effet, il est maintenant très facile de se procurer une carte graphique qui permet de faire du GPGPU. En fait, depuis l’année 2006, la majorité des cartes graphiques vendues contiennent un processeur graphique qui supporte le GPGPU. C’est lors de cette année qu’AMD et NVIDIA, sortaient leurs outils de développement de GPGPU de pair avec leurs nouveaux GPU offrant plus de programmabilité [2], [3]. Or, les programmes parallèles ont un niveau de complexité plus élevé que les programmes séquentiels. En effet, les compilateurs n’étant pas encore assez évolués et matures, il en revient aux développeurs d’optimiser l’utilisation de la mémoire. Quatre chercheurs, Byunghyun Jang, Dana Schaa, Perhaad Mistry et David Kaeli, se sont penchés sur l’étude des patrons d’accès de la mémoire afin d’y déceler des optimisations possibles [4]. Il s’agirait donc de définir une méthodologie qui garantirait de meilleures performances pour certains cas typiques. Deux différentes techniques sont alors présentées et testées selon l’architecture parallèle sous-jacente. Il y a donc la vectorisation obtenue par une transformation sur les données d’entrée pour les architectures vectorielles et la sélection algorithmique de l’espace mémoire pour les architectures scalaires. Voyons si l’application de la méthodologie présentée par ces chercheurs tient la route et si elle parvient à faciliter la tâche des développeurs pour le développement de programmes parallèles.

Background • Architecture scalaire : architecture qui n’est pas vectorielle dans le sens où elle ne fait qu’une opération à la fois, mais avec plusieurs threads. On parle du modèle d’exécution Single Instruction Multiple Threads (SIMT) et il est très utile pour paralléliser les programmes qui ne sont pas vectorisables. • Architecture vectorielle : les opérations mémoire et les calculs sont effectués sur jusqu’à 4 éléments à la fois. La vectorisation des données permet alors de faire jusqu’à 4 fois plus d’opérations en même temps. • Coalescence de la mémoire (Memory Coalescence) : fusion de blocs adjacents de mémoire afin de remplir l’espace libérée par de la mémoire désaffectée. • CPU : Unité de traitement centrale (Central Processing Unit), là où est normalement exécuté le traitement séquentiel. • Foulée non unitaire (non-unit stride) : un saut qui n’est pas unitaire, par exemple un saut de 3 ou de 2*indice. • Fractionnellement vectorisable : lorsque seulement une partie des tableaux peut être mappée directement aux vecteurs. • GPGPU : calcul générique sur un processeur graphique (General Purpose computing on Graphics Processing Units), consiste à utiliser le processeur de la carte graphique pour d’autres fins que les calculs graphiques. • GPU : unité de traitement graphique (Graphic Processing Unit), le processeur graphique. • Intrinsèquement vectorisable : lorsque tous les tableaux peuvent être directement mappés aux vecteurs sans nécessité de transformations. • Loi d’Amdahl : selon cette loi, le temps de calcul est dépendant du traitement séquentiel, puisqu’avec un nombre infini de processeurs pour le traitement parallèle, le temps de calcul du traitement parallèle devient nul. • Mémorisation par bloc : l’organisation de la mémoire dans la mémoire court terme en un ensemble large et gérable de blocs. • Réutilisation temporelle (temporal reuse) : lorsque la même donnée est réutilisée dans plus d’une itération. • Temps système (overhead) : temps supplémentaire requis pour effectuer le pré-traitement. • Vectorisation : linéarisation des données pour permettre le traitement vectoriel.

Analyse de l’article Il faut commencer par présenter le modèle mathématique qui supporte les différents patrons d’accès à la mémoire. Ensuite, ces différents patrons vont être utilisés pour décider des transformations à faire sur les données d’entrées ou pour décider de l’espace mémoire qui sera utilisé pour stocker les données. Finalement, un comparatif est fait entre l’utilisation de la méthodologie et l’utilisation des paramètres par défaut (aucune optimisation).

Modèle mathématique des patrons d’accès de la mémoire Le modèle mathématique qui représente les différents patrons d’accès de la mémoire lors de l’exécution d’une boucle de calcul est basé sur des travaux précédents qui cherchaient à améliorer le principe de localité sur un processeur à un seul cœur [5]. Afin de mieux comprendre le modèle, considérons un tableau de M dimensions qui est accédé par une boucle de calcul de profondeur D. De plus, définissons le vecteur d’accès de la mémoire [pic] qui est de grandeur M. La forme affine de [pic] est alors : [pic] où M est la matrice d’accès mémoire de grandeur M x D, [pic] le vecteur d’itération de grandeur D et [pic] le vecteur de décalage de grandeur M.

Patrons d’accès de la mémoire La figure 1 montre les différents patrons d’accès de la mémoire ainsi que leur matrice d’accès mémoire M et leur vecteur de décalage[pic]Voici la description des différents patrons et un exemple où nous pouvons les retrouver : • Linear et Reverse Linear sont lorsque l’accès d’une dimension d’un tableau est contigu dans une itération (figure 1a et 1b). Ils se retrouvent dans la plupart des Basic Linear Algebra Subprograms (BLAS) de niveau 1 et 2 [6]. • Shifted est un accès linéaire qui est décalé d’une certaine constante (figure 1c). Il se retrouve dans les logiciels multimédias où plusieurs flux de données sont combinés ou transformés. • Overlapping est lorsqu’une dimension d’un tableau est accédée par plus d’une seule itération (figure 1d). Il se retrouve dans les solveurs d’équation linéaire où la décomposition Lower-Upper (LU) est utilisée. • Non-unit Stride est lorsque l’accès d’une dimension d’un tableau est fait avec une foulée non unitaire (non-unit stride) (figure 1e). Il se retrouve dans certaines opérations de multiplications de matrices. • Random est lorsque l’accès d’une dimension d’un tableau est aléatoire (figure 1f). Il se retrouve lorsque les accès mémoires sont indexés par un autre tableau, par exemple avec les tables de hachage. Bien entendu, il s’agit des formes de base des patrons, il est possible de les retrouver combinés.
[pic]

Figure 1 Patrons d'accès de la mémoire et représentation mathématique. Les éléments accédés sont en gris. Un C représente une constante. Un Z représente un nombre aléatoire.

Transformation des données d’entrée pour la vectorisation Pour les architectures vectorielles, comme les GPU d’AMD, il est nécessaire d’appliquer des transformations sur les données pour les vectoriser afin d’optimiser les accès à la mémoire. Avant d’appliquer une transformation, il faut voir si les tableaux sont vectorisables. Pour ce faire, il s’agit de vérifier que tous les tableaux impliqués possèdent le même patron d’accès de la mémoire pour leur dernière dimension. Afin d’arriver à quantifier le niveau de vectorisation d’une boucle de calcul fractionnellement vectorisable, la formule suivante est utilisée :
[pic]
Les boucles de calculs intrinsèquement vectorisables ont un Qv de 100%. Étant donné que les GPU d’AMD font le mappage vectoriel lorsque les données sont transférées du CPU vers le GPU, les transformations sur les données doivent être faites au niveau du CPU. Ainsi, la transformation sera appliquée selon la règle : [pic] où Tm est la matrice de transformation de grandeur D x D (D étant la grandeur du vecteur d’itération) et où [pic]est un vecteur de décalage de grandeur D. On obtient alors un nouveau vecteur d’accès de la mémoire, [pic]. Voici donc les différentes transformations à faire sur les données d’entrée afin d’obtenir des matrices vectorisables : • Les patrons Linear et Reverse Linear nécessitent d’inverser l’ordre des données. Ainsi, on utilisera la matrice de transformation suivante : [pic][pic] • Le patron Shifted ne nécessite qu’un vecteur de décalage afin de réaligner les données. Ainsi, on utilisera le vecteur de décalage suivant : [pic] où C représente une constante. • Le patron Overlapping pouvant apparaître lorsqu’il y a des boucles imbriquées et où les indices sont utilisés conjointement. Les accès se retrouveront alors shifted à chaque itération. Par exemple, la matrice d’accès de la mémoire M suivante nécessite une matrice de transformation Tm tel que : [pic] • Le patron Non-unit Stride nécessite d’être linéarisé en rassemblant un gros bloc de données en mémoire adressable linéaire. Le temps système requis pour accomplir cette tâche peut rapidement devenir assez important compte tenu du niveau de restructuration des données nécessaire. Par exemple, la matrice d’accès de la mémoire M suivante nécessite une matrice de transformation Tm tel que : [pic] • Le patron Random n’a toujours pas de méthode pour être linéarisé et c’est un des points qui limite l’adoption de la vectorisation pour le GPGPU. Bien entendu, il est possible de combiner des transformations lorsque plus d’un patron d’accès de la mémoire est présent. Afin de bien identifier quelles transformations appliquées, toutes les matrices d’accès de la mémoire en entrée sont analysées pour trouver le plus grand groupe de rangées vectorisables ensemble. C’est donc ici que le Qv est utilisé. Par la suite, les patrons d’accès mémoire sont identifiés pour chaque rangée. Puis, la transformation adéquate est finalement appliquée.

Sélection de l’espace mémoire Pour les architectures scalaires, comme les GPU de NVIDIA, l’optimisation de l’accès à la mémoire se fait par le choix judicieux de l’espace mémoire utilisé pour stocker les données d’entrée et de sortie. Le tableau 1 présente les différents espaces mémoire tels que définis par NVIDIA sur leurs GPU ainsi que leurs principales caractéristiques.

TABLE I
Espaces mémoire des GPU de NVIDIA

|Espace |Emplacement |Mise en |Accès |Portée |
|mémoire | |cache | | |
|Global |Mémoire GPU |Non |Lecture/Écriture |Thread Grid|
|Constant |Mémoire GPU |Oui |Lecture |Thread Grid|
|Texture |Mémoire GPU |Oui |Lecture |Thread Grid|
|Shared |Puce du |s.o. |Lecture/Écriture |Thread |
| |processeur | | |Block |
| |graphique | | | |

Voici une brève description des différents espaces mémoires disponibles aux développeurs et les utilisations pour lesquelles ils performent le mieux : • Global Memory est l’espace mémoire par défaut du compilateur puisque c’est le plus flexible. Toutefois, le temps de réponse étant plus lent de deux ordres de grandeur, les accès en série coûtent cher en temps. Il est le mieux utilisé pour les données de sorties et pour les données d’entrée en lecture ou en écriture seule qui sont coalescentes et qui ne sont pas réutilisées temporellement. • Constant Memory est un espace mémoire de petite taille qui est accessible par tous les threads. Il est le mieux utilisé pour les données en lecture seule d’assez petite taille et pour les accès mémoires d’un tableau qui sont identiques pour tous les threads. • Texture Memory utilise le même espace mémoire que le Global Memory, mais peut être mis en cache. Le cache de texture est optimisé pour la localité spatiale en deux dimensions. Il est le mieux utilisé pour les données en lecture seule qui ne sont pas coalescentes et pour les données en lecture seule qui ne correspondent à aucun des autres espaces mémoire. • Shared Memory est local au multiprocesseur et est seulement visible par les threads actifs sur celui-ci. Le temps de réponse est sensiblement le même que celui des registres, c’est-à-dire deux ordres de grandeur plus rapide que le Global Memory. Il est le mieux utilisé pour les données en lecture/écriture qui sont réutilisées temporellement et sont mémorisables par bloc. Il s’agit maintenant d’appliquer un algorithme de sélection de l’espace mémoire selon les différents critères des espaces mémoire et de leurs meilleures utilisations possibles. L’algorithme va prendre en entrée la matrice d’accès mémoire et le décalage de toutes les instances d’un tableau, la taille des données, les accès en lecture et écriture et l’information de la réutilisation temporelle. Les différents critères suivants sont alors analysés pour faire le choix de l’espace mémoire : • Lecture seule ou lecture et écriture • La taille des données • Le patron d’accès de la mémoire • Le patron d’accès de la mémoire interthread • Le patron d’accès de la mémoire intrathread • L’information de réutilisation temporelle Après l’analyse de l’algorithme, si plusieurs choix sont disponibles, l’ordre de sélection suivant est appliqué lors de l’accès en lecture seule : 1. Texture Memory 2. Global Memory 3. Shared Memory 4. Constant Memory et lors de l’accès en lecture et écriture : 1. Global Memory 2. Shared Memory

Tests et résultats L’application du modèle mathématique et des optimisations subséquentes ont été évaluées à l’aide de suite de tests de performance de calcul de haute performance. Par exemple, la suite Linpack a été utilisée pour tester les optimisations des architectures vectorielles (GPU d’AMD) et la suite Parboil pour tester celles des architectures scalaires (GPU de NVIDIA). Un fait intéressant, l’algorithme servant à quantifier la vectorisation des boucles de calculs a permis de déceler qu’un nombre significatif de logiciels de calcul de haute performance contenait des boucles vectorisables après transformations sur les données. La plupart des boucles qui ne pouvaient être vectorisées avaient des dépendances liées à la boucle ou avaient simplement un patron d’accès de la mémoire Random. Pour les cinq suites de tests effectuées sur un GPU d’AMD, on a vu une augmentation de la vitesse d’exécution de 1.39 fois à 11.4 fois plus rapide. Néanmoins, le temps système requis pour effectuer certaines transformations devient substantiellement significatif. Lors de l’exécution des tests, ce temps système pouvait être négligeable ou prendre jusqu’à 23.16 % du temps total d’exécution. Pour les tests exécutés sur un GPU de NVIDIA, les résultats ont été comparés avec l’espace mémoire par défaut pour les données, c’est-à-dire le Global Memory. L’augmentation de vitesse d’exécution observée va de 0 fois, lorsque la mémoire par défaut est le meilleur choix possible, et jusqu’à 13.5 fois plus rapide.

Discussion Les auteurs se sont penchés sur un des problèmes qui freinent de façon notable l’adoption du GPGPU. En effet, les développeurs souhaitant exploiter les performances du GPGPU se heurtent à beaucoup de difficultés lors du développement du logiciel. Or, le modèle mathématique et les différents algorithmes de sélection que proposent les auteurs visent à simplifier le travail des développeurs en automatisant une partie des décisions et de l’analyse du logiciel. Ainsi, plus de développeurs pourraient se « risquer » à entrer dans le domaine du développement GPGPU. Du moins, la tâche des développeurs actuels s’en trouverait sans aucun doute faciliter. Toutefois, ce n’est pas la première fois que les techniques d’optimisation de la mémoire avancées par les auteurs sont proposées [7], [8]. Aussi, le modèle mathématique qui permet d’identifier les différents patrons d’accès de la mémoire a été développé dans le but d’améliorer le principe de localité pour un processeur à un seul cœur [5]. Malgré tout, ce sont les auteurs qui ont eu l’idée de combiner les deux pour présenter une méthodologie qui systématise et garantie un certain niveau de performance qui se rapproche de la capacité des GPU. La méthodologie présentée ne permet pas encore de traiter tous les patrons d’accès de la mémoire. En effet, plus de recherche serait nécessaire pour arriver à traiter des cas complexes comme les accès mémoire « aléatoires » (le patron Random) où les accès mémoires ne suivent pas de patrons particuliers ou qui ne peuvent être prévus. D’ailleurs, bien que la méthodologie ait été testée avec des programmes qui sont couramment utilisés dans le calcul de haute performance, les auteurs ne tiennent pas compte des performances du programme en entier. En effet, ils regardent seulement les performances de la boucle de calculs qu’ils ont optimisée et quelques fois ils regardent le temps système requis comme avec les transformations sur les données. Or, pour les architectures vectorielles comme les GPU d’AMD, les transformations doivent être faites sur le CPU. Le temps système utilisé pour ces transformations ne tient pas compte du fait que le CPU est préemptif et que la transformation pourrait facilement prendre plus de temps que le temps qui est sauvé en vectorisant. D’ailleurs, en tenant compte de la loi d’Amdahl, l’ajout de traitement sur le CPU vient en fait augmenter grandement le temps total d’exécution puisque ce traitement ne peut être fait que séquentiellement. Il serait alors pertinent de vérifier à quel point le temps système utilisé pour les transformations vient impacter le gain de performance de la vectorisation. Du côté des architectures scalaires comme les GPU de NVIDIA, le temps de déplacement d’un espace mémoire vers un autre ainsi que le temps qui doit être utilisé pour la cohérence de l’espace mémoire n’est pas inclut dans les résultats des auteurs. Aussi, l’article ne fait pas nécessairement mention de tous les désavantages de la méthodologie. Par exemple, lors des transformations de données d’entrées, il peut être nécessaire de faire plusieurs duplications de matrice ou, du moins, y avoir plusieurs matrices qui contiennent les mêmes données en mémoire. La taille de la mémoire nécessaire pour contenir toutes ces matrices pourrait dépasser la taille disponible. Donc, plus de recherches et de tests seraient nécessaires afin d’obtenir de meilleurs résultats qui expliciteraient bien les différents cas, ou plutôt les points limites où l’optimisation faite en appliquant une des deux techniques de la méthodologie ne serait plus utile, mais plutôt nuisible. Finalement, bien que l’article ait été publié en 2011, les auteurs ne tiennent pas compte d’un changement assez important chez AMD. En effet, AMD supporte la spécification OpenCL depuis 2009 [3]. Or, la spécification OpenCL oblige de permettre la gestion des espaces mémoire, tout comme NVIDIA le faisait déjà avec CUDA [9], [10]. Ainsi, il serait fort possible de combiner les deux techniques avancées par les auteurs afin d’obtenir de meilleures performances.

Conclusion Après tout ce qui a été dit, les résultats de l’exploitation de la méthodologie sont probants, il est possible de mieux exploiter l’architecture sous-jacente d’un programme parallèle en étudiant les patrons d’accès de la mémoire. Ainsi, dans plusieurs cas, un niveau significativement plus élevé de la performance de la mémoire peut être atteint qu’en laissant simplement toutes les décisions aux compilateurs. Néanmoins, l’article démontre d’une façon éloquente de la plus grande complexité que présente le développement de programmes parallèles comparativement aux programmes séquentiels. Il est donc essentiel de bien réfléchir au problème que veut régler le programme et d’analyser minutieusement les données d’entrées et les différents accès mémoires requis. Or, tout comme les auteurs en font mention, la méthodologie présentée pourrait aisément faire partie d’outils de décisions utilisés lors de la conception et du développement du programme. D’ailleurs, l’intégration de ces techniques dans un compilateur simplifierait encore plus la tâche des développeurs et permettrait de présenter de meilleures performances dans plusieurs cas, sans même avoir à retoucher le code source.

Bibliographie

1] Harris, Mark, Greg Coombe, Thorsten Scheuermann et Anselmo Lastra. 2002. « Physically-Based Visual Simulation on Graphics Hardware ». En ligne. 11 p. <http://www.markmark.net/cml/dl/HWW02_Harris_electronic.pdf>. Consulté le 22 janvier 2011.
2] NVIDIA. s. d. «What is GPU Computing?». En ligne. <http://www.nvidia.com/object/GPU_Computing.html>. Consulté le 28 février 2011.
3] AMD. 2009. «A Brief History of General Purpose (GPGPU) Computing». En ligne. <http://www.amd.com/us/products/technologies/stream-technology/opencl/pages/gpgpu-history.aspx>. Consulté le 28 février 2011.
4] Byunghyun Jang, Dana Schaa, Perhaad Mistry et David Kaeli. “Exploiting Memory Access Patterns to Improve Memory Performance in Data-Parallel Architectures” IEEE TRANSACTIONS ON PARALLEL AND DISTRIBUTED SYSTEMS, Vol. 22, No. 1. 14 p.
5] S.T. Leung and J. Zahorjan. «Optimizing Data Locality by Array Restructuring». Technical Report TR 95-09-01, Univ. of Washington, 1995.
6] ANONYME. s.d. «BLAS (Basic Linear Algebra Subprograms)». En Ligne. <http://www.netlib.org/blas/>. Consulté le 2 mars 2010.
7] AMD. “ATI Stream Computing User Guide, V 1.4 Beta, Brook+ SDK,” http://developer.amd.com/gpu/ATIStreamSDK/, 2010.
8] NVIDIA, “CUDA Programming Guide 2.3,” http://www.nvidia.com/cuda/, July 2009.
9] Khronos Group. 2009. «The OpenCL Specification Version: 1.1». En Ligne. 379 p. <http://www.khronos.org/registry/cl/specs/opencl-1.1.pdf>. Consulté le 2 mars 2010.
10] AMD. 2011. «AMD Accelerated Parallel Processing OpenCL». En ligne. 180p. <http://developer.amd.com/gpu/amdappsdk/assets/AMD_Accelerated_Parallel_Processing_OpenCL_Programming_Guide.pdf>. Consulté le 2 mars 2010.

Similar Documents

Free Essay

Science

...TARCAD: A Template Architecture for Reconfigurable Accelerator Designs Muhammad Shafiq, Miquel Peric` s a Nacho Navarro Eduard Ayguad´ e Computer Sciences Dept. Arquitectura de Computadors Computer Sciences Barcelona Supercomputing Center Universitat Polit` cnica de Catalunya Barcelona Supercomputing Center e Barcelona, Spain Barcelona, Spain Barcelona, Spain {muhammad.shafiq, miquel.pericas}@bsc.es nacho@ac.upc.edu eduard.ayguade@bsc.es Abstract—In the race towards computational efficiency, accelerators are achieving prominence. Among the different types, accelerators built using reconfigurable fabric, such as FPGAs, have a tremendous potential due to the ability to customize the hardware to the application. However, the lack of a standard design methodology hinders the adoption of such devices and makes difficult the portability and reusability across designs. In addition, generation of highly customized circuits does not integrate nicely with high level synthesis tools. In this work, we introduce TARCAD, a template architecture to design reconfigurable accelerators. TARCAD enables high customization in the data management and compute engines while retaining a programming model based on generic programming principles. The template features generality and scalable performance over a range of FPGAs. We describe the template architecture in detail and show how to implement five important scientific kernels: MxM, Acoustic Wave Equation, FFT, SpMV and Smith Waterman. TARCAD is compared...

Words: 7421 - Pages: 30

Premium Essay

Information System

...1 Civilization advances by extending the number of important operations which we can perform without thinking about them. Alfred North Whitehead, An Introduction to Mathematics, 1911 Computer Abstractions and Technology 1.1 Introduction 3 1.2 Eight Great Ideas in Computer Architecture 11 1.3 Below Your Program 13 1.4 Under the Covers 16 1.5 Technologies for Building Processors and Memory 24 1.6 Performance 28 1.7 The Power Wall 40 1.8 The Sea Change: The Switch from Uniprocessors to Multiprocessors 43 1.9 Real Stuff: Benchmarking the Intel Core i7 46 1.10 Fallacies and Pitfalls 49 1.11 Concluding Remarks 52 1.12 Historical Perspective and Further Reading 54 1.13 Exercises 54 1.1 Introduction Welcome to this book! We’re delighted to have this opportunity to convey the excitement of the world of computer systems. This is not a dry and dreary field, where progress is glacial and where new ideas atrophy from neglect. No! Computers are the product of the incredibly vibrant information technology industry, all aspects of which are responsible for almost 10% of the gross national product of the United States, and whose economy has become dependent in part on the rapid improvements in information technology promised by Moore’s Law. This unusual industry embraces innovation at a breath-taking rate. In the last 30 years, there have been a number of new computers whose introduction...

Words: 24107 - Pages: 97

Free Essay

Checkpoints

...Filesystem for Parallel Applications John Bent∗† Garth Gibson‡ Gary Grider∗ Ben McClelland∗ , , , , Paul Nowoczynski§ James Nunez∗ Milo Polte† Meghan Wingate∗ , , , ABSTRACT Categories and Subject Descriptors D.4.3 [Operating Systems]: File Systems ManagementFile organization General Terms Performance, Design Keywords High performance computing, parallel computing, checkpointing, parallel file systems and IO ∗ LANL Technical Information Release: 09-02117 Los Alamos National Laboratory ‡ Carnegie Mellon University § Pittsburgh Supercomputing Center † (c) 2009 Association for Computing Machinery. ACM acknowledges that this contribution was authored or co-authored by a contractor or affiliate of the U.S. Government. As such, the Government retains a nonexclusive, royalty-free right to publish or reproduce this article, or to allow others to do so, for Government purposes only. SC09 November 14–20, Portland, Oregon, USA. Copyright 2009 ACM 978-1-60558-744-8/09/11 ...$10.00. 100 Speedup (X) Parallel applications running across thousands of processors must protect themselves from inevitable system failures. Many applications insulate themselves from failures by checkpointing. For many applications, checkpointing into a shared single file is most convenient. With such an approach, the size of writes are often small and not aligned with file system boundaries. Unfortunately for these applications, this preferred data layout results in...

Words: 12373 - Pages: 50

Premium Essay

Computer Organization and Architecture Designing for Performance 8th Edition

...COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE EIGHTH EDITION William Stallings Prentice Hall Upper Saddle River, NJ 07458 Library of Congress Cataloging-in-Publication Data On File Vice President and Editorial Director: Marcia J. Horton Editor-in-Chief: Michael Hirsch Executive Editor: Tracy Dunkelberger Associate Editor: Melinda Haggerty Marketing Manager: Erin Davis Senior Managing Editor: Scott Disanno Production Editor: Rose Kernan Operations Specialist: Lisa McDowell Art Director: Kenny Beck Cover Design: Kristine Carney Director, Image Resource Center: Melinda Patelli Manager, Rights and Permissions: Zina Arabia Manager, Visual Research: Beth Brenzel Manager, Cover Visual Research & Permissions: Karen Sanatar Composition: Rakesh Poddar, Aptara®, Inc. Cover Image: Picturegarden /Image Bank /Getty Images, Inc. Copyright © 2010, 2006 by Pearson Education, Inc., Upper Saddle River, New Jersey, 07458. Pearson Prentice Hall. All rights reserved. Printed in the United States of America. This publication is protected by Copyright and permission should be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise. For information regarding permission(s), write to: Rights and Permissions Department. Pearson Prentice Hall™ is a trademark of Pearson Education, Inc. Pearson® is a registered trademark of...

Words: 239771 - Pages: 960

Free Essay

Fdsf

...An Analysis of Linux Scalability to Many Cores Silas Boyd-Wickizer, Austin T. Clements, Yandong Mao, Aleksey Pesterev, M. Frans Kaashoek, Robert Morris, and Nickolai Zeldovich MIT CSAIL A BSTRACT This paper analyzes the scalability of seven system applications (Exim, memcached, Apache, PostgreSQL, gmake, Psearchy, and MapReduce) running on Linux on a 48core computer. Except for gmake, all applications trigger scalability bottlenecks inside a recent Linux kernel. Using mostly standard parallel programming techniques— this paper introduces one new technique, sloppy counters—these bottlenecks can be removed from the kernel or avoided by changing the applications slightly. Modifying the kernel required in total 3002 lines of code changes. A speculative conclusion from this analysis is that there is no scalability reason to give up on traditional operating system organizations just yet. but the other applications scale poorly, performing much less work per core with 48 cores than with one core. We attempt to understand and fix the scalability problems, by modifying either the applications or the Linux kernel. We then iterate, since fixing one scalability problem usually exposes further ones. The end result for each application is either good scalability on 48 cores, or attribution of non-scalability to a hard-to-fix problem with the application, the Linux kernel, or the underlying hardware. The analysis of whether the kernel design is compatible with scaling rests on the extent to which...

Words: 12751 - Pages: 52

Free Essay

Business Organization

...School of Computer and Communications Science at EPFL Jacob Leverich Hewlett-Packard Kevin Lim Hewlett-Packard John Nickolls NVIDIA John Oliver Cal Poly, San Luis Obispo Milos Prvulovic Georgia Tech Partha Ranganathan Hewlett-Packard Table of Contents Cover image Title page In Praise of Computer Organization and Design: The Hardware/Software Interface, Fifth Edition Front-matter Copyright Dedication Acknowledgments Preface About This Book About the Other Book Changes for the Fifth Edition Changes for the Fifth Edition Concluding Remarks Acknowledgments for the Fifth Edition 1. Computer Abstractions and Technology 1.1 Introduction 1.2 Eight Great Ideas in Computer Architecture 1.3 Below Your Program 1.4 Under the Covers 1.5 Technologies for Building Processors and Memory 1.6 Performance 1.7 The Power Wall 1.8 The Sea Change: The Switch from Uniprocessors to Multiprocessors 1.9 Real Stuff: Benchmarking the Intel Core i7 1.10 Fallacies and Pitfalls 1.11 Concluding Remarks 1.12 Historical Perspective and Further Reading 1.13 Exercises 2. Instructions: Language of the Computer 2.1 Introduction 2.2 Operations of the Computer Hardware 2.3 Operands of the Computer Hardware 2.4 Signed and Unsigned Numbers 2.5 Representing Instructions in the Computer 2.6 Logical Operations 2.7...

Words: 79060 - Pages: 317

Premium Essay

Bigdata

...4. 4.1 Big Data Introduction In 2004, Wal-Mart claimed to have the largest data warehouse with 500 terabytes storage (equivalent to 50 printed collections of the US Library of Congress). In 2009, eBay storage amounted to eight petabytes (think of 104 years of HD-TV video). Two years later, the Yahoo warehouse totalled 170 petabytes1 (8.5 times of all hard disk drives created in 1995)2. Since the rise of digitisation, enterprises from various verticals have amassed burgeoning amounts of digital data, capturing trillions of bytes of information about their customers, suppliers and operations. Data volume is also growing exponentially due to the explosion of machine-generated data (data records, web-log files, sensor data) and from growing human engagement within the social networks. The growth of data will never stop. According to the 2011 IDC Digital Universe Study, 130 exabytes of data were created and stored in 2005. The amount grew to 1,227 exabytes in 2010 and is projected to grow at 45.2% to 7,910 exabytes in 2015.3 The growth of data constitutes the “Big Data” phenomenon – a technological phenomenon brought about by the rapid rate of data growth and parallel advancements in technology that have given rise to an ecosystem of software and hardware products that are enabling users to analyse this data to produce new and more granular levels of insight. Figure 1: A decade of Digital Universe Growth: Storage in Exabytes Error! Reference source not found.3 1 ...

Words: 22222 - Pages: 89

Free Essay

On-Chip Networks from a Networking Perspective: Congestion and Scalability in Many-Core Interconnects

...congestion manifests itself differently in a NoC than in traditional networks. Network congestion reduces system throughput in congested workloads for smaller NoCs (16 and 64 nodes), and limits the scalability of larger bufferless NoCs (256 to 4096 nodes) even when traffic has locality (e.g., when an application’s required data is mapped nearby to its core in the network). We propose a new source throttlingbased congestion control mechanism with application-level awareness that reduces network congestion to improve system performance. Our mechanism improves system performance by up to 28% (15% on average in congested workloads) in smaller NoCs, achieves linear throughput scaling in NoCs up to 4096 cores (attaining similar performance scalability to a NoC with large buffers), and reduces power consumption by up to 20%. Thus, we show an effective application of a network-level concept, congestion control, to a class of networks – bufferless on-chip networks – that has not been studied before by the networking community. Categories and Subject Descriptors C.1.2 [Computer Systems Organization]: Multiprocessors – Interconnection architectures; C.2.1 [Network Architecture and Design]: Packet-switching networks Keywords On-chip networks, multi-core, congestion control 1. INTRODUCTION One of the most...

Words: 13410 - Pages: 54

Premium Essay

Heuy2Kj4

... the essentials of Linda Null Pennsylvania State University Julia Lobur Pennsylvania State University World Headquarters Jones and Bartlett Publishers 40 Tall Pine Drive Sudbury, MA 01776 978-443-5000 info@jbpub.com www.jbpub.com Jones and Bartlett Publishers Canada 2406 Nikanna Road Mississauga, ON L5C 2W6 CANADA Jones and Bartlett Publishers International Barb House, Barb Mews London W6 7PA UK Copyright © 2003 by Jones and Bartlett Publishers, Inc. Cover image © David Buffington / Getty Images Illustrations based upon and drawn from art provided by Julia Lobur Library of Congress Cataloging-in-Publication Data Null, Linda. The essentials of computer organization and architecture / Linda Null, Julia Lobur. p. cm. ISBN 0-7637-0444-X 1. Computer organization. 2. Computer architecture. I. Lobur, Julia. II. Title. QA76.9.C643 N85 2003 004.2’2—dc21 2002040576 All rights reserved. No part of the material protected by this copyright notice may be reproduced or utilized in any form, electronic or mechanical, including photocopying, recording, or any information storage or retrieval system, without written permission from the copyright owner. Chief Executive Officer: Clayton Jones Chief Operating Officer: Don W. Jones, Jr. Executive V.P. and Publisher: Robert W. Holland, Jr. V.P., Design and Production: Anne Spencer V.P., Manufacturing and Inventory Control: Therese Bräuer Director, Sales and Marketing: William Kane Editor-in-Chief...

Words: 118595 - Pages: 475

Premium Essay

Hai, How Are U

...UNIVERSITY OF KERALA B. TECH. DEGREE COURSE 2008 ADMISSION REGULATIONS and I  VIII SEMESTERS SCHEME AND SYLLABUS of COMPUTER SCIENCE AND ENGINEERING B.Tech Comp. Sc. & Engg., University of Kerala 2 UNIVERSITY OF KERALA B.Tech Degree Course – 2008 Scheme REGULATIONS 1. Conditions for Admission Candidates for admission to the B.Tech degree course shall be required to have passed the Higher Secondary Examination, Kerala or 12th Standard V.H.S.E., C.B.S.E., I.S.C. or any examination accepted by the university as equivalent thereto obtaining not less than 50% in Mathematics and 50% in Mathematics, Physics and Chemistry/ Bio- technology/ Computer Science/ Biology put together, or a diploma in Engineering awarded by the Board of Technical Education, Kerala or an examination recognized as equivalent thereto after undergoing an institutional course of at least three years securing a minimum of 50 % marks in the final diploma examination subject to the usual concessions allowed for backward classes and other communities as specified from time to time. 2. Duration of the course i) The course for the B.Tech Degree shall extend over a period of four academic years comprising of eight semesters. The first and second semester shall be combined and each semester from third semester onwards shall cover the groups of subjects as given in the curriculum and scheme of examination ii) Each semester shall ordinarily comprise of not less than 400 working periods each of 60 minutes duration...

Words: 34195 - Pages: 137

Premium Essay

Asignment

...Oracle® Database Concepts 10g Release 2 (10.2) B14220-02 October 2005 Oracle Database Concepts, 10g Release 2 (10.2) B14220-02 Copyright © 1993, 2005, Oracle. All rights reserved. Primary Author: Michele Cyran Contributing Author: Paul Lane, JP Polk Contributor: Omar Alonso, Penny Avril, Hermann Baer, Sandeepan Banerjee, Mark Bauer, Bill Bridge, Sandra Cheevers, Carol Colrain, Vira Goorah, Mike Hartstein, John Haydu, Wei Hu, Ramkumar Krishnan, Vasudha Krishnaswamy, Bill Lee, Bryn Llewellyn, Rich Long, Diana Lorentz, Paul Manning, Valarie Moore, Mughees Minhas, Gopal Mulagund, Muthu Olagappan, Jennifer Polk, Kathy Rich, John Russell, Viv Schupmann, Bob Thome, Randy Urbano, Michael Verheij, Ron Weiss, Steve Wertheimer The Programs (which include both the software and documentation) contain proprietary information; they are provided under a license agreement containing restrictions on use and disclosure and are also protected by copyright, patent, and other intellectual and industrial property laws. Reverse engineering, disassembly, or decompilation of the Programs, except to the extent required to obtain interoperability with other independently created software or as specified by law, is prohibited. The information contained in this document is subject to change without notice. If you find any problems in the documentation, please report them to us in writing. This document is not warranted to be error-free. Except as may be expressly permitted in your license agreement...

Words: 199783 - Pages: 800

Premium Essay

Journal

...(IJCSIS) International Journal of Computer Science and Information Security, Vol. 10, No. 3, March 2012 An Efficient Automatic Attendance System Using Fingerprint Reconstruction Technique Josphineleela.R Dr.M.Ramakrishnan Research scholar Department of Computer Science and Engineering Sathyabamauniversity Chennai,India ilanleela@yahoo.com Professor/HOD-IT Velammal Engineering College Chennai,India ramkrishod@gmail.com Abstract— Biometric time and attendance system is one of the most successful applications of biometric technology. One of the main advantage of a biometric time and attendance system is it avoids "buddy-punching". Buddy punching was a major loophole which will be exploiting in the traditional time attendance systems. Fingerprint recognition is an established field today, but still identifying individual from a set of enrolled fingerprints is a time taking process. Most fingerprint-based biometric systems store the minutiae template of a user in the database. It has been traditionally assumed that the minutiae template of a user does not reveal any information about the original fingerprint. This belief has now been shown to be false; several algorithms have been proposed that can reconstruct fingerprint images from minutiae templates. In this paper, a novel fingerprint reconstruction algorithm is proposed to reconstruct the phase image, which is then converted into the grayscale image. The proposed reconstruction algorithm ...

Words: 3558 - Pages: 15

Free Essay

Melp Final

...optimization of a 2.4 Kbps mixed excitation linear prediction (MELP) speech-coding algorithm on a Texas instrument TMS320C64xx digital signal processor. The main emphases of the project is on efficient coding and optimization strategies in computationally intensive modules by exploiting fast L1/L2 memory architecture, 8-parallel data paths, enhanced direct memory access module and instruction set features of TMS320C6000 architecture. The implementation would be based on generic TMS320C6000 DSP series; the optimization techniques aimed are applicable to all types of DSP platforms. Lastly the enhanced DSP/BIOS features were used to implement a real time data handling technique to port the MELP vocoder for real time applications. Contents 1 Introduction 6 1.1 THE MELP SPEECH PRODUCTION MODEL 6 2 Development Process 29 2.1 DSP Architecture 29 2.1.1 INTRODUCTION 29 2.1.2 DSK SUPPORT TOOLS 30 2.1.3 CODE COMPOSER STUDIO 32 2.1.4 SUPPORT FILES 32 2.2 DSP Supporting Architecture 34 2.2.1 AIC-23 Codec 34 2.2.2 Multi-Channel Serial Buffered Port 43 2.2.3 Enhanced Direct Memory Access 52 2.3 Adaptation and Optimization 79...

Words: 9574 - Pages: 39

Free Essay

Deep Learning Wikipedia

...Deep Learning more at http://ml.memect.com Contents 1 Artificial neural network 1 1.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2.1 Improvements since 2006 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3.1 Network function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3.2 Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.3 Learning paradigms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.4 Learning algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4 Employing artificial neural networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.5.1 Real-life applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.5.2 Neural networks and neuroscience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.6 Neural network software ...

Words: 55759 - Pages: 224

Premium Essay

Real-Time Fraud Detection

...research and systems available, fraudsters have been able to outsmart and deceive the banks and their customers. With this in mind, we intend to introduce a novel and multi-purpose technology known as Stream Computing, as the basis for a Fraud Detection solution. Indeed, we believe that this architecture will stimulate research, and more importantly organizations, to invest in Analytics and Statistical Fraud-Scoring to be used in conjunction with the already in-place preventive techniques. Therefore, in this research we explore different strategies to build a Streambased Fraud Detection solution, using advanced Data Mining Algorithms and Statistical Analysis, and show how they lead to increased accuracy in the detection of fraud by at least 78% in our reference dataset. We also discuss how a combination of these strategies can be embedded in a Stream-based application to detect fraud in real-time. From this perspective, our experiments lead to an average processing time of 111,702ms per transaction, while strategies to further improve the performance are discussed. Keywords: Fraud Detection, Stream Computing, Real-Time Analysis, Fraud, Data Mining, Retail Banking Industry, Data Preprocessing, Data Classification, Behavior-based Models, Supervised Analysis, Semi-supervised Analysis Sammanfattning Privatbankerna har drabbats hårt av bedrägerier de senaste åren. Bedragare har lyckats kringgå forskning och tillgängliga system och lura bankerna och deras kunder. Därför vill vi införa...

Words: 56858 - Pages: 228