l#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
int main(int argc, char *argv[]) {
int rank, size;
double serial_time = 10.0; // Example serial execution time in seconds
double parallel_time; // Example parallel execution time
double speedup, efficiency;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
// Assume parallel_time is measured differently for each process
// Example: divide the serial time by the rank
parallel_time = serial_time / (rank + 1);
// Calculate speedup
MPI_Reduce(¶llel_time, &speedup, 1, MPI_DOUBLE, MPI_MIN, 0, MPI_COMM_WORLD);
speedup = serial_time / speedup;
// Calculate efficiency
efficiency = speedup / size;
if (rank == 0) {
printf("Speedup: %lf\n", speedup
); printf("Efficiency: %lf\n", efficiency
); }
MPI_Finalize();
return 0;
}
bCNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxtcGkuaD4KCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKICAgIGludCByYW5rLCBzaXplOwogICAgZG91YmxlIHNlcmlhbF90aW1lID0gMTAuMDsgLy8gRXhhbXBsZSBzZXJpYWwgZXhlY3V0aW9uIHRpbWUgaW4gc2Vjb25kcwogICAgZG91YmxlIHBhcmFsbGVsX3RpbWU7ICAgICAgLy8gRXhhbXBsZSBwYXJhbGxlbCBleGVjdXRpb24gdGltZQogICAgZG91YmxlIHNwZWVkdXAsIGVmZmljaWVuY3k7CgogICAgTVBJX0luaXQoJmFyZ2MsICZhcmd2KTsKICAgIE1QSV9Db21tX3JhbmsoTVBJX0NPTU1fV09STEQsICZyYW5rKTsKICAgIE1QSV9Db21tX3NpemUoTVBJX0NPTU1fV09STEQsICZzaXplKTsKCiAgICAvLyBBc3N1bWUgcGFyYWxsZWxfdGltZSBpcyBtZWFzdXJlZCBkaWZmZXJlbnRseSBmb3IgZWFjaCBwcm9jZXNzCiAgICAvLyBFeGFtcGxlOiBkaXZpZGUgdGhlIHNlcmlhbCB0aW1lIGJ5IHRoZSByYW5rCiAgICBwYXJhbGxlbF90aW1lID0gc2VyaWFsX3RpbWUgLyAocmFuayArIDEpOwoKICAgIC8vIENhbGN1bGF0ZSBzcGVlZHVwCiAgICBNUElfUmVkdWNlKCZwYXJhbGxlbF90aW1lLCAmc3BlZWR1cCwgMSwgTVBJX0RPVUJMRSwgTVBJX01JTiwgMCwgTVBJX0NPTU1fV09STEQpOwogICAgc3BlZWR1cCA9IHNlcmlhbF90aW1lIC8gc3BlZWR1cDsKCiAgICAvLyBDYWxjdWxhdGUgZWZmaWNpZW5jeQogICAgZWZmaWNpZW5jeSA9IHNwZWVkdXAgLyBzaXplOwoKICAgIGlmIChyYW5rID09IDApIHsKICAgICAgICBwcmludGYoIlNwZWVkdXA6ICVsZlxuIiwgc3BlZWR1cCk7CiAgICAgICAgcHJpbnRmKCJFZmZpY2llbmN5OiAlbGZcbiIsIGVmZmljaWVuY3kpOwogICAgfQoKICAgIE1QSV9GaW5hbGl6ZSgpOwogICAgcmV0dXJuIDA7Cn0=