Changes between Version 32 and Version 33 of DRM4G/Tutorial


Ignore:
Timestamp:
Jun 27, 2016 9:26:27 AM (6 years ago)
Author:
carlos
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DRM4G/Tutorial

    v32 v33  
    295295{{{
    296296#!cpp
    297   #include "mpi.h"
    298   #include <stdio.h>
    299   #include <math.h>
    300  
    301   int main( int argc, char *argv[])
    302   {
    303       int done = 0, n, myid, numprocs, i;
    304       double PI25DT = 3.141592653589793238462643;
    305       double mypi, pi, h, sum, x;
    306       double startwtime = 0.0, endwtime;
    307       int  namelen;
    308       char processor_name[MPI_MAX_PROCESSOR_NAME];
    309  
    310       MPI_Init(&argc,&argv);
    311       MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
    312       MPI_Comm_rank(MPI_COMM_WORLD,&myid);
    313       MPI_Get_processor_name(processor_name,&namelen);
    314  
    315       printf("Process %d on %s\n", myid, processor_name);
    316  
    317       n = 100000000;
    318  
    319       startwtime = MPI_Wtime();
    320  
    321       h   = 1.0 / (double) n;
    322       sum = 0.0;
    323       for (i = myid + 1; i <= n; i += numprocs)
    324       {
    325           x = h * ((double)i - 0.5);
    326           sum += 4.0 / (1.0 + x*x);
    327       }
    328       mypi = h * sum;
    329  
    330       MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
    331  
    332       if (myid == 0)
    333       {
    334           printf("pi is approximately %.16f, Error is %.16f\n",
    335                  pi, fabs(pi - PI25DT));
    336           endwtime = MPI_Wtime();
    337           printf("wall clock time = %f\n", endwtime-startwtime);
    338       }
    339  
    340       MPI_Finalize();
    341  
    342       return 0;
    343   }
     297#include "mpi.h"
     298#include <stdio.h>
     299#include <math.h>
     300
     301int main( int argc, char *argv[])
     302{
     303    int done = 0, n, myid, numprocs, i;
     304    double PI25DT = 3.141592653589793238462643;
     305    double mypi, pi, h, sum, x;
     306    double startwtime = 0.0, endwtime;
     307    int  namelen;
     308    char processor_name[MPI_MAX_PROCESSOR_NAME];
     309
     310    MPI_Init(&argc,&argv);
     311    MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
     312    MPI_Comm_rank(MPI_COMM_WORLD,&myid);
     313    MPI_Get_processor_name(processor_name,&namelen);
     314
     315    printf("Process %d on %s\n", myid, processor_name);
     316
     317    n = 100000000;
     318
     319    startwtime = MPI_Wtime();
     320
     321    h   = 1.0 / (double) n;
     322    sum = 0.0;
     323    for (i = myid + 1; i <= n; i += numprocs)
     324    {
     325        x = h * ((double)i - 0.5);
     326        sum += 4.0 / (1.0 + x*x);
     327    }
     328    mypi = h * sum;
     329
     330    MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
     331
     332    if (myid == 0)
     333    {
     334        printf("pi is approximately %.16f, Error is %.16f\n",
     335               pi, fabs(pi - PI25DT));
     336        endwtime = MPI_Wtime();
     337        printf("wall clock time = %f\n", endwtime-startwtime);
     338    }
     339
     340    MPI_Finalize();
     341
     342    return 0;
     343}
    344344}}}
    345345