GithubHelp home page GithubHelp logo

rhinoblindado / ac2021 Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 36.55 MB

Prácticas realizadas en la asignatura Arquitectura de Computadores, curso 2020-2021 para el Grado de Ingeniería Informática en la Universidad de Granada.

License: GNU General Public License v3.0

C 65.26% Shell 6.10% Makefile 2.92% Assembly 25.71%

ac2021's Introduction

🇪🇸 Español | 🇬🇧 English


Arquitectura de Computadores

📚 Curso 2020-2021, Grado en Ingeniería Informática, ETSIIT UGR.

📌 Introducción

Las prácticas se dividieron en 5 bloques en los que había que realizar distintas tareas sobre los elementos de la arquitectura de un ordenador con un enfoque en paralelizar código por medio de la API OpenMP 5.1 y técnicas para la optimización del código aprovechando la arquitectura de la máquina en la que se trabaja.

⚙️ Compilación

Los ejercicios se encuentran en diferentes carpetas, cada una posee un Makefile sencillo, por lo tanto, para compilar cierto ejercicio no hace falta más que irse a la ubicación y en la terminal escribir make.

Pueden haber scripts sencillos realizados en Bash, estos pueden ejecutarse en la terminal con bash ./<nombre de script>.

🔗 Contenidos

  • 🔰 BP0 - Entorno de programación
    • El propósito de este bloque fue el de familiarizarse con el clúster de cómputo denominado ATCGrid que se tiene acceso.
    • Se introdujo el gestor de carga de trabajo slurm con el cual se interacciona con el clúster.
    • Se ingresó al front-end del clúster por medio de ssh y ftp para navegar por los ficheros y subir y/o descargar ficheros relevantes del clúster.
  • 💾 BP1 - Herramientas de Programación Paralela I: Directivas OpenMP
    • Se introdujo la API de OpenMP; breve historia y funcionamiento en general.
    • Se introdujeron las directivas más importantes para poder utilizar la herramienta: parallel, sections, for, single, master, además de las directivas para la comunicación y sincronización atomic, critical y barrier.
  • 💿 BP2 - Herramientas de Programación Paralela II: Cláusulas OpenMP
    • Se introdujo el concepto de las cláusulas de OpenMP en general.
    • Se introdujeron las cláusulas de control del ámbito de variables: shared, default, reduction y private junto a sus variantes; también las cláusulas de copia de valores.
  • 📀 BP3 - Herramientas de Programación Paralela III: Interacción con el Entorno en OpenMP y Evaluación de Prestaciones
    • Se introdujeron las variables de control y entorno de OpenMP.
    • Se introdujeron adicionalmente la cláusula if y schedule.
    • También, como acceder a estas variables por medio de funciones del entorno de ejecución y como tomar el tiempo de programas paralelos.
  • 📉 BP4 - Optimización de Código en Arquitecturas ILP
    • Se presentaron diferentes maneras de optimizar una ejecución ya sea secuencial o paralela.
    • Se explicaron las diferencias entres los distintos niveles de optimización que puede realizar el compilador de C/C++.

Computer Architectures

📚 2020-2021 Course, Computer Science Engineering Degree, ETSIIT UGR.

📌 Introduction

The practices were divided in 5 blocks which were all centered around elements of a computer architecture, being focused in making parallel code with the OpenMP 5.1 and techniques to optimize code taking advantage of the architecture that is being used for the program.

⚙️ Compilation

All exercises reside in their own individual folders, each has a simple Makefile thus to compile a certain exercise it is only needed to write make inside the chosen folder in the terminal.

There can also be some simple Bash scripts which can be executed with bash ./<name of script>.

🔗 Contents

  • 🔰 BP0 - Enviroment
    • The main purpose of this block was familiarizing with the ATCGrid computing cluster.
    • Introduction of the workload manager slurm to interact with the cluster.
    • Use of ssh and ftp to navigate the front-end of the cluster and to upload/download files to be used in the cluster.
  • 💾 BP1 - Parallel Programming Tools I: OpenMP Directives
    • Introduction of the OpenMP API, history and general functions.
    • Introduction of relevant directives: parallel, sections, for, single, master, and directives for communication and synchronization atomic, critical y barrier.
  • 💿 BP2 - Parallel Programming Tools II: OpenMP Clauses
    • General introduction of OpenMP Clauses.
    • Se introdujeron las cláusulas de control del ámbito de variables: shared, default, reduction y private junto a sus variantes; también las cláusulas de copia de valores.
    • Introduction of variable scope clauses such as shared, default, reduction and private along with its variants; along with clauses to copy values.
  • 📀 BP3 - Parallel Programming Tools III: Interaction with the OpenMP Environment and Performance Evaluation
    • Introduction of control and environment variables for OpenMP.
    • Introduction of if and schedule clauses.
    • Also, how to modify and get variables with functions and procedures given by OpenMP.
  • 📉 BP4 - Code Optimization in ILP Architectures
    • Introduction of different ways to optimize code, be it parallel or sequential.
    • Explanation of different optimization parameters that can be used with C/C++.

ac2021's People

Contributors

rhinoblindado avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.