/* * query.c * * connects to running lbpi application and prints current status */ #include <stdio.h> #include <stdlib.h> #include <mpi.h> #include "query.h" void main(int argc, char *argv[]) { char port_name[MPI_MAX_PORT_NAME]; MPI_Comm servcomm; long infos[4]; long b_size, b_total, b_ready, hits; double pi; MPI_Status status; MPI_Init(&argc, &argv); MPI_Lookup_name(SERVICE_NAME, MPI_INFO_NULL, port_name); printf("client: trying to get connection\n"); MPI_Comm_connect(port_name, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &servcomm); printf("client: connected\n"); MPI_Recv(infos, 4, MPI_LONG, 0, 0, servcomm, &status); MPI_Comm_disconnect(&servcomm); printf("client: disconnected\n"); b_size = infos[0]; b_total = infos[1]; b_ready = infos[2]; hits = infos[3]; printf("client: %d blocks of %d ready\n", b_ready, b_total); pi = 4 * hits/(double)(b_ready * b_size); printf("client: preliminary result: PI = %lf\n", pi); MPI_Finalize(); return; }