当前位置: 首页 > 工具软件 > cpp2html > 使用案例 >

试试cpp2html

邓阳伯
2023-12-01

 <PRE style='BACKGROUND: #e6e6e6;'><I><FONT COLOR="#008000">/* -*- Mode: C; c-basic-offset:4 ; -*- */
/*
 *  (C) 2001 by Argonne National Laboratory.
 *      See COPYRIGHT in top-level directory.
 */

/* This is an interactive version of cpi */</FONT></I><FONT COLOR="#A000A0">
#include "mpi.h"
#include &lt;stdio.h&gt;
#include &lt;math.h&gt;
</FONT><B><FONT COLOR="#0000FF">
double</FONT></B> f<B><FONT COLOR="#646464">(</FONT></B><B><FONT COLOR="#0000FF">double</FONT></B><B><FONT COLOR="#646464">);</FONT></B><B><FONT COLOR="#0000FF">

double</FONT></B> f<B><FONT COLOR="#646464">(</FONT></B><B><FONT COLOR="#0000FF">double</FONT></B> a<B><FONT COLOR="#646464">)
{</FONT></B><B><FONT COLOR="#0000FF">
    return</FONT></B><B><FONT COLOR="#646464"> (</FONT></B><FONT COLOR="#800080">4.0</FONT><B><FONT COLOR="#646464"> / (</FONT></B><FONT COLOR="#800080">1.0</FONT><B><FONT COLOR="#646464"> +</FONT></B> a<B><FONT COLOR="#646464">*</FONT></B>a<B><FONT COLOR="#646464">));
}</FONT></B><B><FONT COLOR="#0000FF">

int</FONT></B><B><FONT COLOR="#0000FF"> main</FONT></B><B><FONT COLOR="#646464">(</FONT></B><B><FONT COLOR="#0000FF">int</FONT></B> argc<B><FONT COLOR="#646464">,</FONT></B><B><FONT COLOR="#0000FF">char</FONT></B><B><FONT COLOR="#646464"> *</FONT></B>argv<B><FONT COLOR="#646464">[])
{</FONT></B><B><FONT COLOR="#0000FF">
    int</FONT></B> done<B><FONT COLOR="#646464"> =</FONT></B><FONT COLOR="#800080"> 0</FONT><B><FONT COLOR="#646464">,</FONT></B> n<B><FONT COLOR="#646464">,</FONT></B> myid<B><FONT COLOR="#646464">,</FONT></B> numprocs<B><FONT COLOR="#646464">,</FONT></B> i<B><FONT COLOR="#646464">;</FONT></B><B><FONT COLOR="#0000FF">
    double</FONT></B> PI25DT<B><FONT COLOR="#646464"> =</FONT></B><FONT COLOR="#800080"> 3.141592653589793238462643</FONT><B><FONT COLOR="#646464">;</FONT></B><B><FONT COLOR="#0000FF">
    double</FONT></B> mypi<B><FONT COLOR="#646464">,</FONT></B> pi<B><FONT COLOR="#646464">,</FONT></B> h<B><FONT COLOR="#646464">,</FONT></B> sum<B><FONT COLOR="#646464">,</FONT></B> x<B><FONT COLOR="#646464">;</FONT></B><B><FONT COLOR="#0000FF">
    double</FONT></B> startwtime<B><FONT COLOR="#646464"> =</FONT></B><FONT COLOR="#800080"> 0.0</FONT><B><FONT COLOR="#646464">,</FONT></B> endwtime<B><FONT COLOR="#646464">;</FONT></B><B><FONT COLOR="#0000FF">
    int</FONT></B>  namelen<B><FONT COLOR="#646464">;</FONT></B><B><FONT COLOR="#0000FF">
    char</FONT></B> processor_name<B><FONT COLOR="#646464">[</FONT></B>MPI_MAX_PROCESSOR_NAME<B><FONT COLOR="#646464">];</FONT></B>

    MPI_Init<B><FONT COLOR="#646464">(&amp;</FONT></B>argc<B><FONT COLOR="#646464">,&amp;</FONT></B>argv<B><FONT COLOR="#646464">);</FONT></B>
    MPI_Comm_size<B><FONT COLOR="#646464">(</FONT></B>MPI_COMM_WORLD<B><FONT COLOR="#646464">,&amp;</FONT></B>numprocs<B><FONT COLOR="#646464">);</FONT></B>
    MPI_Comm_rank<B><FONT COLOR="#646464">(</FONT></B>MPI_COMM_WORLD<B><FONT COLOR="#646464">,&amp;</FONT></B>myid<B><FONT COLOR="#646464">);</FONT></B>
    MPI_Get_processor_name<B><FONT COLOR="#646464">(</FONT></B>processor_name<B><FONT COLOR="#646464">,&amp;</FONT></B>namelen<B><FONT COLOR="#646464">);</FONT></B><I><FONT COLOR="#008000">

    /*
    fprintf(stdout,"Process %d of %d is on %s/n",
     myid, numprocs, processor_name);
    fflush(stdout);
    */</FONT></I><B><FONT COLOR="#0000FF">

    while</FONT></B><B><FONT COLOR="#646464"> (!</FONT></B>done<B><FONT COLOR="#646464">) {</FONT></B><B><FONT COLOR="#0000FF">
        if</FONT></B><B><FONT COLOR="#646464"> (</FONT></B>myid<B><FONT COLOR="#646464"> ==</FONT></B><FONT COLOR="#800080"> 0</FONT><B><FONT COLOR="#646464">) {</FONT></B>
            fprintf<B><FONT COLOR="#646464">(</FONT></B>stdout<B><FONT COLOR="#646464">,</FONT></B><FONT COLOR="#FF00FF"> "Enter the number of intervals: (0 quits) "</FONT><B><FONT COLOR="#646464">);</FONT></B>
     fflush<B><FONT COLOR="#646464">(</FONT></B>stdout<B><FONT COLOR="#646464">);</FONT></B><B><FONT COLOR="#0000FF">
            if</FONT></B><B><FONT COLOR="#646464"> (</FONT></B>scanf<B><FONT COLOR="#646464">(</FONT></B><FONT COLOR="#FF00FF">"%d"</FONT><B><FONT COLOR="#646464">,&amp;</FONT></B>n<B><FONT COLOR="#646464">) !=</FONT></B><FONT COLOR="#800080"> 1</FONT><B><FONT COLOR="#646464">) {</FONT></B>
  fprintf<B><FONT COLOR="#646464">(</FONT></B> stdout<B><FONT COLOR="#646464">,</FONT></B><FONT COLOR="#FF00FF"> "No number entered; quitting/n"</FONT><B><FONT COLOR="#646464"> );</FONT></B>
  n<B><FONT COLOR="#646464"> =</FONT></B><FONT COLOR="#800080"> 0</FONT><B><FONT COLOR="#646464">;
     }</FONT></B>
     startwtime<B><FONT COLOR="#646464"> =</FONT></B> MPI_Wtime<B><FONT COLOR="#646464">();
        }</FONT></B>
        MPI_Bcast<B><FONT COLOR="#646464">(&amp;</FONT></B>n<B><FONT COLOR="#646464">,</FONT></B><FONT COLOR="#800080"> 1</FONT><B><FONT COLOR="#646464">,</FONT></B> MPI_INT<B><FONT COLOR="#646464">,</FONT></B><FONT COLOR="#800080"> 0</FONT><B><FONT COLOR="#646464">,</FONT></B> MPI_COMM_WORLD<B><FONT COLOR="#646464">);</FONT></B><B><FONT COLOR="#0000FF">
        if</FONT></B><B><FONT COLOR="#646464"> (</FONT></B>n<B><FONT COLOR="#646464"> ==</FONT></B><FONT COLOR="#800080"> 0</FONT><B><FONT COLOR="#646464">)</FONT></B>
            done<B><FONT COLOR="#646464"> =</FONT></B><FONT COLOR="#800080"> 1</FONT><B><FONT COLOR="#646464">;</FONT></B><B><FONT COLOR="#0000FF">
        else</FONT></B><B><FONT COLOR="#646464"> {</FONT></B>
            h<B><FONT COLOR="#646464">   =</FONT></B><FONT COLOR="#800080"> 1.0</FONT><B><FONT COLOR="#646464"> / (</FONT></B><B><FONT COLOR="#0000FF">double</FONT></B><B><FONT COLOR="#646464">)</FONT></B> n<B><FONT COLOR="#646464">;</FONT></B>
            sum<B><FONT COLOR="#646464"> =</FONT></B><FONT COLOR="#800080"> 0.0</FONT><B><FONT COLOR="#646464">;</FONT></B><B><FONT COLOR="#0000FF">
            for</FONT></B><B><FONT COLOR="#646464"> (</FONT></B>i<B><FONT COLOR="#646464"> =</FONT></B> myid<B><FONT COLOR="#646464"> +</FONT></B><FONT COLOR="#800080"> 1</FONT><B><FONT COLOR="#646464">;</FONT></B> i<B><FONT COLOR="#646464"> &lt;=</FONT></B> n<B><FONT COLOR="#646464">;</FONT></B> i<B><FONT COLOR="#646464"> +=</FONT></B> numprocs<B><FONT COLOR="#646464">) {</FONT></B>
                x<B><FONT COLOR="#646464"> =</FONT></B> h<B><FONT COLOR="#646464"> * ((</FONT></B><B><FONT COLOR="#0000FF">double</FONT></B><B><FONT COLOR="#646464">)</FONT></B>i<B><FONT COLOR="#646464"> -</FONT></B><FONT COLOR="#800080"> 0.5</FONT><B><FONT COLOR="#646464">);</FONT></B>
                sum<B><FONT COLOR="#646464"> +=</FONT></B> f<B><FONT COLOR="#646464">(</FONT></B>x<B><FONT COLOR="#646464">);
            }</FONT></B>
            mypi<B><FONT COLOR="#646464"> =</FONT></B> h<B><FONT COLOR="#646464"> *</FONT></B> sum<B><FONT COLOR="#646464">;</FONT></B>
            MPI_Reduce<B><FONT COLOR="#646464">(&amp;</FONT></B>mypi<B><FONT COLOR="#646464">, &amp;</FONT></B>pi<B><FONT COLOR="#646464">,</FONT></B><FONT COLOR="#800080"> 1</FONT><B><FONT COLOR="#646464">,</FONT></B> MPI_DOUBLE<B><FONT COLOR="#646464">,</FONT></B> MPI_SUM<B><FONT COLOR="#646464">,</FONT></B><FONT COLOR="#800080"> 0</FONT><B><FONT COLOR="#646464">,</FONT></B> MPI_COMM_WORLD<B><FONT COLOR="#646464">);</FONT></B><B><FONT COLOR="#0000FF">

            if</FONT></B><B><FONT COLOR="#646464"> (</FONT></B>myid<B><FONT COLOR="#646464"> ==</FONT></B><FONT COLOR="#800080"> 0</FONT><B><FONT COLOR="#646464">) {</FONT></B>
                printf<B><FONT COLOR="#646464">(</FONT></B><FONT COLOR="#FF00FF">"pi is approximately %.16f, Error is %.16f/n"</FONT><B><FONT COLOR="#646464">,</FONT></B>
                       pi<B><FONT COLOR="#646464">,</FONT></B> fabs<B><FONT COLOR="#646464">(</FONT></B>pi<B><FONT COLOR="#646464"> -</FONT></B> PI25DT<B><FONT COLOR="#646464">));</FONT></B>
  endwtime<B><FONT COLOR="#646464"> =</FONT></B> MPI_Wtime<B><FONT COLOR="#646464">();</FONT></B>
  printf<B><FONT COLOR="#646464">(</FONT></B><FONT COLOR="#FF00FF">"wall clock time = %f/n"</FONT><B><FONT COLOR="#646464">,</FONT></B> endwtime<B><FONT COLOR="#646464">-</FONT></B>startwtime<B><FONT COLOR="#646464">);</FONT></B>       
  fflush<B><FONT COLOR="#646464">(</FONT></B> stdout<B><FONT COLOR="#646464"> );
     }
        }
    }</FONT></B>
    MPI_Finalize<B><FONT COLOR="#646464">();</FONT></B><B><FONT COLOR="#0000FF">
    return</FONT></B><FONT COLOR="#800080"> 0</FONT><B><FONT COLOR="#646464">;
}</FONT></B>
</PRE>

 类似资料: