Este proyecto contiene dos progamas C++ para el cálculo de la suma vectorial. Uno de ellos utiliza una versión tradicional de suma vectorial, mientras que el otro hace uso de intrínsecos SIMD de GCC. El objetivo de este proyecto es comparar los tiempos de ejecución de ambas versiones.
-
gcc
Linux:
sudo apt-get install gcc
MacOS:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Windows:
Descargar e instalar MinGW
- sumaVectorialIndividual.cpp - programa que realiza 1 suma vectorial en C++
- sumaVectorialIndividualSIMD.cpp - programa que realiza 1 suma vectorial en C++ con incorporación de SIMD
- sumaVectorial.cpp - programa que realiza 100.000 sumas vectoriales en C++
- sumaVectorialSIMD.cpp - programa que realiza 100.000 sumas vectoriales en C++ con incorporación de SIMD
- output.txt - contiene los tiempos de ejecución de sumaVectorial.cpp
- output(optimizado).txt - contiene los tiempos de ejecución de sumaVectorial.cpp sin usar -O0 en la compilación
- outputSIMD.txt - contiene los tiempos de ejecución de sumaVectorialSIMD.cpp
- sumaVectorial.sh - contiene las instrucciones descritas en el apartado Uso
- sumaVectorialSIMD.sh - contiene las instrucciones descritas en el apartado Uso
- resultados.xlsx - hoja de cálculo los tiempos obtenidos en las ejecuciones y representaciones gráficas
- Primera opción:
-
Compilar los proyectos usando GNU Compiler Collection
g++ -O0 sumaVectorial.cpp -o nombre-ejecutable1 g++ -O0 sumaVectorialSIMD.cpp -o nombre-ejecutable2
-
Ejecución
./nombre-ejecutable1 > output.txt ./nombre-ejecutable2 > outputSIMD.txt
- Segunda opción: ejecutar el .sh directamente (solo disponible para Linux y MacOS)
./sumaVectorial.sh ./sumaVectorialSIMD.sh
Los tiempos de ejecución para distintas cantidades de sumas se guardarán en output.txt y outputSIMD.txt para la versión tradicional y la versión SIMD respectivamente.
En una de las ejecuciones obtuvimos los siguientes tiempos:
- Versión sin SIMD: 218,508762 segundos (para 100.000 sumas)
- Versión con SIMD: 0,881725 segundos (para 100.000 sumas)
Siendo la versión SIMD aproximadamente 192 veces más rápida que la versión tradicional.
En el archivo resultados.xlsx hemos comparado los tiempos de ejecución generando la siguiente representación gráfica:
Aproximadamente a partir de 248 sumas es más efectivo utilizar sumaVectorialSIMD.cpp, pues su tiempo de ejecución a penas crece con respecto al número de sumas.
Ane Romero - [email protected]
Diego Sanz - [email protected]
Natalia Sebastián - [email protected]