#include #include #include #include #include #include #include #include #include #include "ProcessDist.h" /* * ESTE CODIGO ES PARA COMPROBAR EL FUNCIONAMIENTO DEL FICHERO ProcessDist.h * NO TIENE QUE VER CON EL BENCHMARK DE MALEABILIDAD */ #define ROOT 0 #define MAXGRP 3 #define TYPE_D 1 // 1 Es nodos // 2 Es por nucleos // Función para crear un fichero con el formato GxNPyIDz.o{jobId}. // El proceso que llama a la función pasa a tener como salida estandar // dicho fichero. int create_out_file(int myId, int numP, int grp, char *jobId); int create_out_file(int myId, int numP, int grp, char *jobId) { int ptr, err; char *file_name; file_name = NULL; file_name = malloc(40 * sizeof(char)); if(file_name == NULL) return -1; // No ha sido posible alojar la memoria err = snprintf(file_name, 40, "G%dNP%dID%d.o%s", grp, numP, myId, jobId); if(err < 0) return -2; // No ha sido posible obtener el nombre de fichero ptr = open(file_name, O_WRONLY | O_CREAT | O_APPEND, 0644); if(ptr < 0) return -3; // No ha sido posible crear el fichero err = close(1); if(err < 0) return -4; // No es posible modificar la salida estandar err = dup(ptr); if(err < 0) return -4; // No es posible modificar la salida estandar return 0; } // Se realizan varios tests de ancho de banda // al mandar N datos a los procesos impares desde el // par inmediatamente anterior. Tras esto, los impares // vuelven a enviar los N datos al proceso par. // // Tras las pruebas se imprime el ancho de banda, todo // el tiempo necesario para realizar todas las pruebas y // finalmente el tiempo medio por prueba. void bandwidth(int myId, double latency, int n); void bandwidth(int myId, double latency, int n) { int i, loop_count = 100, n_bytes; double start_time, stop_time, elapsed_time, bw, time; char *aux; n_bytes = n * sizeof(char); aux = malloc(n_bytes); elapsed_time = 0; for(i=0; i