#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;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1waS5oPgoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgewogICAgaW50IHJhbmssIHNpemU7CiAgICBkb3VibGUgc2VyaWFsX3RpbWUgPSAxMC4wOyAvLyBFeGFtcGxlIHNlcmlhbCBleGVjdXRpb24gdGltZSBpbiBzZWNvbmRzCiAgICBkb3VibGUgcGFyYWxsZWxfdGltZTsgICAgICAvLyBFeGFtcGxlIHBhcmFsbGVsIGV4ZWN1dGlvbiB0aW1lCiAgICBkb3VibGUgc3BlZWR1cCwgZWZmaWNpZW5jeTsKCiAgICBNUElfSW5pdCgmYXJnYywgJmFyZ3YpOwogICAgTVBJX0NvbW1fcmFuayhNUElfQ09NTV9XT1JMRCwgJnJhbmspOwogICAgTVBJX0NvbW1fc2l6ZShNUElfQ09NTV9XT1JMRCwgJnNpemUpOwoKICAgIC8vIEFzc3VtZSBwYXJhbGxlbF90aW1lIGlzIG1lYXN1cmVkIGRpZmZlcmVudGx5IGZvciBlYWNoIHByb2Nlc3MKICAgIC8vIEV4YW1wbGU6IGRpdmlkZSB0aGUgc2VyaWFsIHRpbWUgYnkgdGhlIHJhbmsKICAgIHBhcmFsbGVsX3RpbWUgPSBzZXJpYWxfdGltZSAvIChyYW5rICsgMSk7CgogICAgLy8gQ2FsY3VsYXRlIHNwZWVkdXAKICAgIE1QSV9SZWR1Y2UoJnBhcmFsbGVsX3RpbWUsICZzcGVlZHVwLCAxLCBNUElfRE9VQkxFLCBNUElfTUlOLCAwLCBNUElfQ09NTV9XT1JMRCk7CiAgICBzcGVlZHVwID0gc2VyaWFsX3RpbWUgLyBzcGVlZHVwOwoKICAgIC8vIENhbGN1bGF0ZSBlZmZpY2llbmN5CiAgICBlZmZpY2llbmN5ID0gc3BlZWR1cCAvIHNpemU7CgogICAgaWYgKHJhbmsgPT0gMCkgewogICAgICAgIHByaW50ZigiU3BlZWR1cDogJWxmXG4iLCBzcGVlZHVwKTsKICAgICAgICBwcmludGYoIkVmZmljaWVuY3k6ICVsZlxuIiwgZWZmaWNpZW5jeSk7CiAgICB9CgogICAgTVBJX0ZpbmFsaXplKCk7CiAgICByZXR1cm4gMDsKfQ==