// PruebaOMP.cpp : Este archivo contiene la función "main".
// Código para correr en paralelo una tarea de sumar arreglos
#include <iostream>
#include <chrono> //
#define mostrar 10 // Número de elementos a imprimir del arreglo
// Función para imprimir los primeros "mostrar" elementos de un arreglo
void imprimeArreglo(float *d);
int main()
{
std::cout << "Variando N y chunk parala medición de tiempos\n";
// Valores de N (tamaño del arreglo) y chunk (bloques para procesamiento)
int N_values[] = {1000, 5000, 10000};
int chunk_values[] = {10, 50, 100, 500};
// Nombres de las columnas en la tabla de resultados
std::cout << "N\tchunk\tTiempo Inicialización (s)\tTiempo Suma (s)\n";
// Ciclo para iterar sobre los diferentes valores de N
for (int N : N_values) {
// Iterar sobre los diferentes valores de chunk
for (int chunk : chunk_values) {
// Declarción e inicialización de los arreglos dinámicamente
float *a = new float[N];
float *b = new float[N];
float *c = new float[N];
// ciclo para medir el tiempo de inicialización de los arreglos
auto start = std::chrono::high_resolution_clock::now();
for (int i = 0; i < N; i++) {
a[i] = i * 10; // Inicializar arreglo a
b[i] = (i + 3) * 3.7; // Inicializar arreglo b
}
auto end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> elapsed_init = end - start;
// Ciclo para medir el tiempo para realizar la suma de los arreglos
start = std::chrono::high_resolution_clock::now();
for (int i = 0; i < N; i++) {
c[i] = a[i] + b[i]; // Sumar los arreglos elemento por elemento
}
end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> elapsed_sum = end - start;
// Imprimir resultados en formato de tabla
std::cout << N << "\t" << chunk << "\t" << elapsed_init.count() << "\t\t" << elapsed_sum.count() << "\n";
// Liberar memoria dinámica
delete[] a;
delete[] b;
delete[] c;
}
}
return 0;
}
// Implementación de la función para imprimir un arreglo
void imprimeArreglo(float *d) {
for (int x = 0; x < mostrar; x++) {
std::cout << d[x] << " - ";
}
std::cout << std::endl;
}