00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef _pch_intf_
00042 #define _pch_intf_
00043
00044 #include "stdint.h"
00045
00046 #ifdef __cplusplus
00047 extern "C"{
00048 #endif
00049
00055
00056 extern const int PCC_ANY_PROC;
00057 extern const int PCC_USE_CURRENT_BUFFER;
00058 extern const int PCC_MASTER_PROC_ID;
00059 extern const int PCC_OK;
00060 extern const int PCC_DEFAULT_BUFFER_SIZE;
00061 extern const int PCC_DEFAULT_COMM;
00062 extern const int PCC_NEIGH_GROUP;
00063
00064
00065
00066 extern int pcv_nr_proc;
00067 extern int pcv_my_proc_id;
00068
00069
00070
00071
00075 extern int pcr_init_parallel(
00076 int* argc,
00077 char** argv,
00078 char* Work_dir,
00079 char *interactive_output_name,
00080 FILE **interactive_output_p,
00081 int* Nr_pr,
00082 int* My_id
00083 );
00084
00088 extern int pcr_print_master(
00090 );
00091
00095 extern int pcr_send_buffer_open(
00097 int Message_id,
00098 int Buffer_size
00099 );
00100
00104 extern int pcr_buffer_pack_int(
00106 const int Message_id,
00107 const int Buffer_id,
00108 const int Nr_num,
00109 const int* Numbers
00110 );
00111
00115 extern int pcr_buffer_pack_double(
00117 const int Message_id,
00118 const int Buffer_id,
00119 const int Nr_num,
00120 const double* Numbers
00121 );
00122
00126 int pcr_buffer_pack_char(
00127 const int Message_id,
00128 const int Buffer_id,
00129 const int Nr_num,
00130 const char* Numbers
00131 );
00132
00136 extern int pcr_buffer_send(
00138 int Message_id,
00139 int Buffer_id,
00140 int Dest_proc
00141 );
00142
00143
00147 int pcr_buffer_bcast(
00148 int Message_id,
00149 int Buffer_id,
00150 int Sender_proc
00151 );
00152
00156 extern int pcr_buffer_receive(
00158 int Message_id,
00159 int Sender_proc,
00160 int Buffer_size
00161 );
00162
00163
00167 extern int pcr_buffer_unpack_int(
00169 int Message_id,
00170 int Buffer_id,
00171 int Nr_num,
00172 int* Numbers
00173 );
00174
00178 extern int pcr_buffer_unpack_double(
00180 int Message_id,
00181 int Buffer_id,
00182 int Nr_num,
00183 double* Numbers
00184 );
00185
00189 int pcr_buffer_unpack_char(
00190 int Message_id,
00191 int Buffer_id,
00192 int Nr_num,
00193 char* Numbers
00194 );
00195
00199 extern int pcr_recv_buffer_close(
00201 int Message_id,
00202 int Buffer_id
00203 );
00204
00208 extern int pcr_send_int(
00209 const int Dest_proc_id,
00210 const int Message_id,
00211 const int Nr_num,
00212 const int *Numbers
00213 );
00214
00218 extern int pcr_send_double(
00220 const int Dest_proc_id,
00221 const int Message_id,
00222 const int Nr_num,
00223 const double* Numbers
00224 );
00225
00229 extern int pcr_receive_int(
00230 int Sender_proc_id,
00231 int Message_id,
00232 int Nr_num,
00233 int *Numbers
00234 );
00235
00239 extern int pcr_receive_double(
00241 int Sender_proc_id,
00242 int Message_id,
00243 int Nr_num,
00244 double* Numbers
00245 );
00246
00250 extern int pcr_bcast_double(int Sender_proc_id,
00251 int Nr_num,
00252 double *Numbers
00253 );
00254
00255
00259 extern int pcr_bcast_int(
00260 int Sender_proc_id,
00261 int Nr_num,
00262 int* Numbers
00263 );
00264
00265
00269 extern int pcr_bcast_char(
00270 int Sender_proc_id,
00271 int Nr_num,
00272 char* Numbers
00273 );
00274
00278 extern int pcr_allreduce_sum_int(
00279 const int Nr_num,
00280 const int* Numbers,
00281 int *Numbers_reduced
00282 );
00283
00284
00285
00289 extern int pcr_allreduce_sum_double(
00290 const int Nr_num,
00291 const double* Numbers,
00292 double* Numbers_reduced
00293 );
00294
00298 extern int pcr_allreduce_max_int(
00299 const int Nr_num,
00300 const int* Numbers,
00301 int* Numbers_reduced
00302 );
00303
00304
00305
00309 extern int pcr_allreduce_max_double(
00310 int Nr_num,
00311 double* Numbers,
00312 double* Numbers_reduced
00313 );
00314
00318 extern int pcr_exit_parallel(
00319 void
00320 );
00321
00322
00323
00324
00325 extern int pcr_barrier(
00326 void
00327 );
00328
00329
00330
00331
00332 extern int pcr_is_parallel_initialized(
00333 void
00334 );
00335
00336
00337
00338
00339 extern int pcr_is_this_master(
00340 void
00341 );
00342
00343
00344
00345
00346 extern int pcr_my_proc_id(
00347 void
00348 );
00349
00350
00351
00352
00353 extern int pcr_nr_proc(
00354 void
00355 );
00356
00357
00358
00359
00360 extern int pcr_allgather_int(
00361 const int send_values[],
00362 const int n_send_values,
00363 int gathered_values[],
00364 int n_gathered_values
00365
00366 );
00367
00371 extern int pcr_send_bytes(
00373 const int Dest_proc_id,
00374 const int Message_id,
00375 const int Nr_bytes,
00376 const uint8_t* Bytes
00377 );
00378
00382 extern int pcr_receive_bytes(
00384 int Sender_proc_id,
00385 int Message_id,
00386 int Nr_bytes,
00387 uint8_t* Bytes
00388 );
00389
00393 int pcr_buffer_source_id(int Buffer);
00394
00396
00397
00398 #ifdef __cplusplus
00399 }
00400 #endif
00401
00402 #endif