Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.16 KB | None | 0 0
  1. /*
  2.  * -- High Performance Computing Linpack Benchmark (HPL)                
  3.  *    HPL - 2.0 - September 10, 2008                          
  4.  *    Antoine P. Petitet                                                
  5.  *    University of Tennessee, Knoxville                                
  6.  *    Innovative Computing Laboratory                                
  7.  *    (C) Copyright 2000-2008 All Rights Reserved                      
  8.  *                                                                      
  9.  * -- Copyright notice and Licensing terms:                            
  10.  *                                                                      
  11.  * Redistribution  and  use in  source and binary forms, with or without
  12.  * modification, are  permitted provided  that the following  conditions
  13.  * are met:                                                            
  14.  *                                                                      
  15.  * 1. Redistributions  of  source  code  must retain the above copyright
  16.  * notice, this list of conditions and the following disclaimer.        
  17.  *                                                                      
  18.  * 2. Redistributions in binary form must reproduce  the above copyright
  19.  * notice, this list of conditions,  and the following disclaimer in the
  20.  * documentation and/or other materials provided with the distribution.
  21.  *                                                                      
  22.  * 3. All  advertising  materials  mentioning  features  or  use of this
  23.  * software must display the following acknowledgement:                
  24.  * This  product  includes  software  developed  at  the  University  of
  25.  * Tennessee, Knoxville, Innovative Computing Laboratory.            
  26.  *                                                                      
  27.  * 4. The name of the  University,  the name of the  Laboratory,  or the
  28.  * names  of  its  contributors  may  not  be used to endorse or promote
  29.  * products  derived   from   this  software  without  specific  written
  30.  * permission.                                                          
  31.  *                                                                      
  32.  * -- Disclaimer:                                                      
  33.  *                                                                      
  34.  * THIS  SOFTWARE  IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  35.  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,  INCLUDING,  BUT NOT
  36.  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  37.  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY
  38.  * OR  CONTRIBUTORS  BE  LIABLE FOR ANY  DIRECT,  INDIRECT,  INCIDENTAL,
  39.  * SPECIAL,  EXEMPLARY,  OR  CONSEQUENTIAL DAMAGES  (INCLUDING,  BUT NOT
  40.  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  41.  * DATA OR PROFITS; OR BUSINESS INTERRUPTION)  HOWEVER CAUSED AND ON ANY
  42.  * THEORY OF LIABILITY, WHETHER IN CONTRACT,  STRICT LIABILITY,  OR TORT
  43.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  44.  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  45.  * ---------------------------------------------------------------------
  46.  */
  47. /*
  48.  * Include files
  49.  */
  50. #include "hpl.h"
  51.  
  52. #ifdef STDC_HEADERS
  53. int HPL_all_reduce
  54. (
  55.    void *                           BUFFER,
  56.    const int                        COUNT,
  57.    const HPL_T_TYPE                 DTYPE,
  58.    const HPL_T_OP                   OP,
  59.    MPI_Comm                         COMM
  60. )
  61. #else
  62. int HPL_all_reduce
  63. ( BUFFER, COUNT, DTYPE, OP, COMM )
  64.    void *                           BUFFER;
  65.    const int                        COUNT;
  66.    const HPL_T_TYPE                 DTYPE;
  67.    const HPL_T_OP                   OP;
  68.    MPI_Comm                         COMM;
  69. #endif
  70. {
  71. /*
  72.  * Purpose
  73.  * =======
  74.  *
  75.  * HPL_all_reduce performs   a   global   reduce  operation  across  all
  76.  * processes of a group leaving the results on all processes.
  77.  *
  78.  * Arguments
  79.  * =========
  80.  *
  81.  * BUFFER  (local input/global output)   void *
  82.  *         On entry,  BUFFER  points to  the  buffer to be combined.  On
  83.  *         exit, this array contains the combined data and  is identical
  84.  *         on all processes in the group.
  85.  *
  86.  * COUNT   (global input)                const int
  87.  *         On entry,  COUNT  indicates the number of entries in  BUFFER.
  88.  *         COUNT must be at least zero.
  89.  *
  90.  * DTYPE   (global input)                const HPL_T_TYPE
  91.  *         On entry,  DTYPE  specifies the type of the buffers operands.
  92.  *
  93.  * OP      (global input)                const HPL_T_OP
  94.  *         On entry, OP is a pointer to the local combine function.
  95.  *
  96.  * COMM    (global/local input)          MPI_Comm
  97.  *         The MPI communicator identifying the process collection.
  98.  *
  99.  * ---------------------------------------------------------------------
  100.  */
  101. /*
  102.  * .. Local Variables ..
  103.  */
  104.    int                        hplerr;
  105. /* ..
  106.  * .. Executable Statements ..
  107.  */
  108.    hplerr = HPL_reduce(   BUFFER, COUNT, DTYPE, OP, 0, COMM );
  109.    if( hplerr != MPI_SUCCESS ) return( hplerr );
  110.    return( HPL_broadcast( BUFFER, COUNT, DTYPE,     0, COMM ) );
  111. /*
  112.  * End of HPL_all_reduce
  113.  */
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement