Giter VIP home page Giter VIP logo

hpc_microbenchmarks's Introduction

HPC_Microbenchmarks

Study case for matrix multiplication using High performance computing

Introducción

La multiplicación de matrices es una operación fundamental en muchas aplicaciones científicas y de ingeniería, incluidos los gráficos por computadora, el procesamiento de imágenes y el aprendizaje automático. Como la multiplicación de matrices implica numerosos cálculos, puede ser computacionalmente intensivo y llevar mucho tiempo para matrices grandes. La computación paralela de OpenMP se puede utilizar para acelerar la multiplicación de matrices mediante la distribución de la carga de trabajo entre varios subprocesos. Este enfoque permite el uso eficiente de varios núcleos dentro de una arquitectura de memoria compartida, lo que da como resultado tiempos de ejecución más rápidos y un rendimiento mejorado. Paralelizar la multiplicación de matrices usando OpenMP puede reducir significativamente el tiempo de procesamiento requerido para cálculos de matrices grandes, lo que permite un procesamiento de datos más rápido y eficiente en una variedad de aplicaciones. OpenMP proporciona una manera simple y eficaz de paralelizar la multiplicación de matrices y es una herramienta valiosa para mejorar el rendimiento de las aplicaciones informáticas intensivas.

Tabla de Contenidos

Autores

A continuación se presenta el listado de autores y su respectivo correo electronico.

Organización Nombre del Miembro Correo electronico
PUJ-Bogota Sebastián Pineda [email protected]
PUJ-Bogota Camilo Cano [email protected]
PUJ-Bogota Daniel Duque [email protected]
PUJ-Bogota Nicolas Mendez [email protected]

Objetivo

Analizar el impacto de la paralelización de los algoritmos, evaluando el rendimiento de los mismos al variar la cantidad de hilos

Recursos

Todo el experimento se llevó a cabo en una sola maquina con las siguientes especificaciones

imagen

Descripción de la solución

Diseño experimental

Para el estudio del benchmarking de los procesos OpenMP Y MPI, se realizarán análisis de anovas, como forma de contrastar influencias de las variables seleccionadas, dado que son demasiados niveles y deben ser evaluados al tiempo. No se optó por un diseño experimental de cuadro latino o 2^n. Se toman por muestra por nivel de 30 repeticiones, esto se hace con la finalidad de poder hacer un análisis por regresión y tener una cantidad de puntos deseables para revisar supuestos de normalidad.

Como resultado se plantean un total de 3600 experimentos, estos fueron repartidos de la siguiente manera:

Parametro Descripción Niveles
Algoritmo de multiplicación Variación de la forma de apuntar a los datos MM1F,MM1FU,MM2F
Tamaño de las matrices Corresponde al tamaño de la matriz cuadrada 1000,2000,4000,8000
Número de threads empleados Número de threads empleados en el nodo trabajador 1,2,4,8,10,12,14,16,18,20
Métodos Métodos de ejecución MPI, OpenMP

imagen

Algoritmos

MM1F

Nos centraremos en los siguientes fragmentos que son los que cambian entre los diferentes códigos. Tomamos como línea de base el MM1f en donde vemos que las matrices se multiplican por la iteración respectiva de los valores uno por uno en el loop que recorre las matrices y agrega los datos que encuentra en valores intermedios, luego en otro loop los agrega en una variable S, y por último reemplaza el valor S de esa operación en la ubicación correspondiente en la matriz de resultados. Por supuesto esto se hace para todas las operaciones necesarias en la iteración.

imagen

MM1FU

En esta operación nos encontramos con una estructura similar a la anterior, la diferencia que notamos es que en lugar de hacerlo un dato a la vez hace la operación con cuatro valores continuos, si estamos en lo correcto, esto permitiría acceder de manera más sencilla a la memoria disponible dentro del procesador, pues es más probable que los valores contiguos estén ya preparados para usar.

imagen

MM2F

imagen

Analisis de resultados

Al comparar los resultados de las matrices se evidencia que usando un tamaño 8.000, el tiempo utilizado tiene una relación exponencial con los hilos usados, haciendo esta una relación exponencial. Muestra que en un punto el proceso no tendrá mayor eficiencia a medida que se usen más hilos, dado que encontrará una asíntota en el rendimiento.

imagen

Al linealizar los datos con logaritmo con la finalidad de poder graficar todos los hilos y los métodos, se encuentra que para matrices mayores a 2.000; la matriz MM2f es las más eficiente seguido de la MM1FU. Esto nos muestra que efectivamente el procesamiento entregándole la ubicación de memoria a buscar agiliza el proceso, al igual que la estrategia de pasar cada iteración del proceso con varios datos como mencionamos anteriormente.

imagen

Al comparar estos resultados por medio del diagrama de caja y bigotes, evidenciamos que el método MM2f es el más eficiente, siempre y cuando los tamaños de las matrices sean mayores a 1000.

imagen

Posterior a los análisis encontrados por medio de los análisis descriptivos, se buscaba encontrar por cada método una regresión, para explicar los resultados encontrados.

imagen

Por medio de la prueba Shapiro, se encontró indicios de normalidad en los residuales de los errores, por lo que la regresión es apta para el análisis.

imagen

Conclusiones

  1. Nuestro análisis revela que las estrategias implementadas pueden lograr ahorros significativos en el tiempo de ejecución de manera prácticamente exponencial en la máquina sobre todo con Open MP. Además, estos ahorros están estrechamente asociados con la reducción de energía utilizada y los costos de desarrollo asociados.
  2. Open MP se destaca como una opción preferible a MPI para ejecutar un microbenchmark en una sola máquina, debido a su menor sobrecarga de comunicación y sincronización, lo que resulta en un mejor rendimiento y tiempos de ejecución más rápidos en entornos de una sola máquina.
  3. En conclusión, el análisis de dispersión de los tiempos de ejecución en los boxplots, reveló que todos los cuantiles de tiempo de ejecución para el modelo MM2f fueron consistentemente más bajos en comparación con los otros métodos evaluados. Esto indica una mayor eficiencia y rendimiento del modelo MM2f en la multiplicación de matrices, lo que lo posiciona como la opción preferida para obtener resultados más rápidos en esta tarea específica.

hpc_microbenchmarks's People

Contributors

jpined93 avatar nikmend avatar

Watchers

 avatar  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.