File: mpy.h

package info (click to toggle)
yorick 2.2.03+dfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 9,620 kB
  • ctags: 9,317
  • sloc: ansic: 85,521; sh: 1,665; cpp: 1,282; lisp: 1,234; makefile: 1,034; fortran: 19
file content (58 lines) | stat: -rw-r--r-- 1,821 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*
 * $Id: mpy.h,v 1.2 2010-03-20 16:41:17 dhmunro Exp $
 * Public mpy compiled interface.
 */
/* Copyright (c) 2010, David H. Munro
 * All rights reserved.
 * This file is part of yorick (http://yorick.sourceforge.net).
 * Read the accompanying LICENSE file for details.
 */

#ifndef MPY_H
#define MPY_H

/* yapi.h depends on plugin.h */
#include "yapi.h"

BEGIN_EXTERN_C

/* for use in mpyfile.c on_include function */
PLUG_API void mpy_initialize(int *pargc, char **pargv[]);
PLUG_API int mpy_size, mpy_rank, mpy_nfan, mpy_parallel;

PLUG_API void mpy_bcast(int nmsgs);
/* nmsgs>0 --> broadcast top nmsgs stack elements (arrays) on rank 0
 *             to all ranks (stack unchanged on rank 0, else nmsgs longer)
 * nmsgs<=0 --> send acknowledge from leaf ranks to rank 0
 */

/* mpy_get_next(0) checks for incoming mpy messages without blocking
 *   will not return if mpy error message arrives (calls y_error)
 *   return value not meaningful, non-zero arguments only useful in mpy.c
 */
PLUG_API int mpy_get_next(int block);

#ifdef MPY_MPI_H
/* mpy_control_irecv(request, 0);
 *   sets up mpy control IRecv for use with Waitsome or Testsome
 *   if it ever triggers, you MUST call mpy_errquiet:
 * if (request[0] == MPI_REQUEST_NULL) mpy_errquiet();
 *   mpy_errquiet does not return (calls y_error)
 * mpy_control_irecv(request, 1);
 *   cancels mpy control IRecv, setting request[0]=MPI_REQUEST_NULL
 *   this will not return if an mpy error message arrives
 */
PLUG_API void mpy_control_irecv(MPI_Request *request, int cancel);
PLUG_API void mpy_errquiet(void);
#endif

#ifdef USE_MYPROBE
/* work around catamount bug/feature broken MPI_Probe */
#undef MPI_Probe
#define MPI_Probe my_mpi_Probe
PLUG_API int my_mpi_Probe(int source, int tag,
			  MPI_Comm comm, MPI_Status *status);
#endif

END_EXTERN_C
#endif