hpl_comm.h 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  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. #ifndef HPL_COMM_H
  47. #define HPL_COMM_H
  48. /*
  49. * ---------------------------------------------------------------------
  50. * Include files
  51. * ---------------------------------------------------------------------
  52. */
  53. #include "hpl_pmisc.h"
  54. #include "hpl_panel.h"
  55. /*
  56. * ---------------------------------------------------------------------
  57. * #typedefs and data structures
  58. * ---------------------------------------------------------------------
  59. */
  60. typedef enum
  61. {
  62. HPL_1RING = 401, /* Increasing ring */
  63. HPL_1RING_M = 402, /* Increasing ring (modified) */
  64. HPL_2RING = 403, /* Increasing 2-ring */
  65. HPL_2RING_M = 404, /* Increasing 2-ring (modified) */
  66. HPL_BLONG = 405, /* long broadcast */
  67. HPL_BLONG_M = 406 /* long broadcast (modified) */
  68. } HPL_T_TOP;
  69. /*
  70. * ---------------------------------------------------------------------
  71. * #define macro constants
  72. * ---------------------------------------------------------------------
  73. */
  74. #define HPL_FAILURE 0
  75. #define HPL_SUCCESS 1
  76. #define HPL_KEEP_TESTING 2
  77. /*
  78. * ---------------------------------------------------------------------
  79. * comm function prototypes
  80. * ---------------------------------------------------------------------
  81. */
  82. int HPL_send
  83. STDC_ARGS( (
  84. double *,
  85. int,
  86. int,
  87. int,
  88. MPI_Comm
  89. ) );
  90. int HPL_recv
  91. STDC_ARGS( (
  92. double *,
  93. int,
  94. int,
  95. int,
  96. MPI_Comm
  97. ) );
  98. int HPL_sdrv
  99. STDC_ARGS( (
  100. double *,
  101. int,
  102. int,
  103. double *,
  104. int,
  105. int,
  106. int,
  107. MPI_Comm
  108. ) );
  109. int HPL_binit
  110. STDC_ARGS( (
  111. HPL_T_panel *
  112. ) );
  113. int HPL_bcast
  114. STDC_ARGS( (
  115. HPL_T_panel *,
  116. int *
  117. ) );
  118. int HPL_bwait
  119. STDC_ARGS( (
  120. HPL_T_panel *
  121. ) );
  122. int HPL_packL
  123. STDC_ARGS( (
  124. HPL_T_panel *,
  125. const int,
  126. const int,
  127. const int
  128. ) );
  129. void HPL_copyL
  130. STDC_ARGS( (
  131. HPL_T_panel *
  132. ) );
  133. int HPL_binit_1ring STDC_ARGS( ( HPL_T_panel * ) );
  134. int HPL_bcast_1ring STDC_ARGS( ( HPL_T_panel *, int * ) );
  135. int HPL_bwait_1ring STDC_ARGS( ( HPL_T_panel * ) );
  136. int HPL_binit_1rinM STDC_ARGS( ( HPL_T_panel * ) );
  137. int HPL_bcast_1rinM STDC_ARGS( ( HPL_T_panel *, int * ) );
  138. int HPL_bwait_1rinM STDC_ARGS( ( HPL_T_panel * ) );
  139. int HPL_binit_2ring STDC_ARGS( ( HPL_T_panel * ) );
  140. int HPL_bcast_2ring STDC_ARGS( ( HPL_T_panel *, int * ) );
  141. int HPL_bwait_2ring STDC_ARGS( ( HPL_T_panel * ) );
  142. int HPL_binit_2rinM STDC_ARGS( ( HPL_T_panel * ) );
  143. int HPL_bcast_2rinM STDC_ARGS( ( HPL_T_panel *, int * ) );
  144. int HPL_bwait_2rinM STDC_ARGS( ( HPL_T_panel * ) );
  145. int HPL_binit_blong STDC_ARGS( ( HPL_T_panel * ) );
  146. int HPL_bcast_blong STDC_ARGS( ( HPL_T_panel *, int * ) );
  147. int HPL_bwait_blong STDC_ARGS( ( HPL_T_panel * ) );
  148. int HPL_binit_blonM STDC_ARGS( ( HPL_T_panel * ) );
  149. int HPL_bcast_blonM STDC_ARGS( ( HPL_T_panel *, int * ) );
  150. int HPL_bwait_blonM STDC_ARGS( ( HPL_T_panel * ) );
  151. #endif
  152. /*
  153. * End of hpl_comm.h
  154. */