3 * PVM version 3.3: Parallel Virtual Machine System
4 * University of Tennessee, Knoxville TN.
5 * Oak Ridge National Laboratory, Oak Ridge TN.
6 * Emory University, Atlanta GA.
7 * Authors: A. L. Beguelin, J. J. Dongarra, G. A. Geist,
8 * W. C. Jiang, R. J. Manchek, B. K. Moore, and V. S. Sunderam
9 * (C) 1992 All Rights Reserved
13 * Permission to use, copy, modify, and distribute this software and
14 * its documentation for any purpose and without fee is hereby granted
15 * provided that the above copyright notice appear in all copies and
16 * that both the copyright notice and this permission notice appear in
17 * supporting documentation.
19 * Neither the Institutions (Emory University, Oak Ridge National
20 * Laboratory, and University of Tennessee) nor the Authors make any
21 * representations about the suitability of this software for any
22 * purpose. This software is provided ``as is'' without express or
25 * PVM version 3 was funded in part by the U.S. Department of Energy,
26 * the National Science Foundation and the State of Tennessee.
35 Revision 1.1 1996/01/08 20:26:27 partain
47 * Data packing styles for pvm_initsend()
50 #define PvmDataDefault 0
52 #define PvmDataInPlace 2
59 #define PvmTaskDefault 0
60 #define PvmTaskHost 1 /* specify host */
61 #define PvmTaskArch 2 /* specify architecture */
62 #define PvmTaskDebug 4 /* start task in debugger */
63 #define PvmTaskTrace 8 /* process generates trace data */
65 #define PvmMppFront 16 /* spawn task on service node */
66 #define PvmHostCompl 32 /* complement host set */
72 #define PvmTaskExit 1 /* on task exit */
73 #define PvmHostDelete 2 /* on host fail/delete */
74 #define PvmHostAdd 3 /* on host startup */
77 * for pvm_setopt and pvm_getopt
80 #define PvmRoute 1 /* routing policy */
81 #define PvmDontRoute 1 /* don't allow direct task-task links */
82 #define PvmAllowDirect 2 /* allow direct links, but don't request */
83 #define PvmRouteDirect 3 /* request direct links */
84 #define PvmDebugMask 2 /* debugmask */
85 #define PvmAutoErr 3 /* auto error reporting */
86 #define PvmOutputTid 4 /* stdout destination for children */
87 #define PvmOutputCode 5 /* stdout message tag */
88 #define PvmTraceTid 6 /* trace destination for children */
89 #define PvmTraceCode 7 /* trace message tag */
90 #define PvmFragSize 8 /* message fragment size */
91 #define PvmResvTids 9 /* allow reserved message tids and codes */
92 #define PvmSelfOutputTid 10 /* stdout destination for task */
93 #define PvmSelfOutputCode 11 /* stdout message tag */
94 #define PvmSelfTraceTid 12 /* trace destination for task */
95 #define PvmSelfTraceCode 13 /* trace message tag */
96 #define PvmShowTids 14 /* pvm_catchout prints task ids with output */
102 #define PvmTaskSelf 0 /* this task */
103 #define PvmTaskChild 1 /* (future) child tasks */
109 #define PvmOk 0 /* Error 0 */
110 #define PvmBadParam -2 /* Bad parameter */
111 #define PvmMismatch -3 /* Count mismatch */
112 #define PvmOverflow -4 /* Value too large */
113 #define PvmNoData -5 /* End of buffer */
114 #define PvmNoHost -6 /* No such host */
115 #define PvmNoFile -7 /* No such file */
116 #define PvmNoMem -10 /* Malloc failed */
117 #define PvmBadMsg -12 /* Can't decode message */
118 #define PvmSysErr -14 /* Can't contact local daemon */
119 #define PvmNoBuf -15 /* No current buffer */
120 #define PvmNoSuchBuf -16 /* No such buffer */
121 #define PvmNullGroup -17 /* Null group name */
122 #define PvmDupGroup -18 /* Already in group */
123 #define PvmNoGroup -19 /* No such group */
124 #define PvmNotInGroup -20 /* Not in group */
125 #define PvmNoInst -21 /* No such instance */
126 #define PvmHostFail -22 /* Host failed */
127 #define PvmNoParent -23 /* No parent task */
128 #define PvmNotImpl -24 /* Not implemented */
129 #define PvmDSysErr -25 /* Pvmd system error */
130 #define PvmBadVersion -26 /* Version mismatch */
131 #define PvmOutOfRes -27 /* Out of resources */
132 #define PvmDupHost -28 /* Duplicate host */
133 #define PvmCantStart -29 /* Can't start pvmd */
134 #define PvmAlready -30 /* Already in progress */
135 #define PvmNoTask -31 /* No such task */
136 #define PvmNoEntry -32 /* No such entry */
137 #define PvmDupEntry -33 /* Duplicate entry */
140 * Data types for pvm_reduce(), pvm_psend(), pvm_precv()
143 #define PVM_STR 0 /* string */
144 #define PVM_BYTE 1 /* byte */
145 #define PVM_SHORT 2 /* short */
146 #define PVM_INT 3 /* int */
147 #define PVM_FLOAT 4 /* real */
148 #define PVM_CPLX 5 /* complex */
149 #define PVM_DOUBLE 6 /* double */
150 #define PVM_DCPLX 7 /* double complex */
151 #define PVM_LONG 8 /* long integer */
152 #define PVM_USHORT 9 /* unsigned short int */
153 #define PVM_UINT 10 /* unsigned int */
154 #define PVM_ULONG 11 /* unsigned long int */
157 * returned by pvm_config()
161 int hi_tid; /* pvmd tid */
162 char *hi_name; /* host name */
163 char *hi_arch; /* host arch */
164 int hi_speed; /* cpu relative speed */
168 * returned by pvm_tasks()
172 int ti_tid; /* task id */
173 int ti_ptid; /* parent tid */
174 int ti_host; /* pvmd tid */
175 int ti_flag; /* status flags */
176 char *ti_a_out; /* a.out name */
177 int ti_pid; /* task (O/S dependent) process id */
181 #ifdef __ProtoGlarp__
182 #undef __ProtoGlarp__
184 #if defined(__STDC__) || defined(__cplusplus)
185 #define __ProtoGlarp__(x) x
187 #define __ProtoGlarp__(x) ()
194 int pvm_addhosts __ProtoGlarp__(( char **, int, int * ));
195 int pvm_archcode __ProtoGlarp__(( char * ));
196 int pvm_barrier __ProtoGlarp__(( char *, int ));
197 int pvm_bcast __ProtoGlarp__(( char *, int ));
198 int pvm_bufinfo __ProtoGlarp__(( int, int *, int *, int * ));
200 int pvm_catchout __ProtoGlarp__(( FILE * ));
202 int pvm_config __ProtoGlarp__(( int *, int *,
203 struct pvmhostinfo ** ));
204 int pvm_delete __ProtoGlarp__(( char *, int ));
205 int pvm_delhosts __ProtoGlarp__(( char **, int, int * ));
206 int pvm_exit __ProtoGlarp__(( void ));
207 int pvm_freebuf __ProtoGlarp__(( int ));
208 int pvm_gather __ProtoGlarp__(( void*, void*,
209 int, int, int, char*, int));
210 int pvm_getfds __ProtoGlarp__(( int ** ));
211 int pvm_getinst __ProtoGlarp__(( char *, int ));
212 int pvm_getmwid __ProtoGlarp__(( int ));
213 int pvm_getopt __ProtoGlarp__(( int ));
214 int pvm_getrbuf __ProtoGlarp__(( void ));
215 int pvm_getsbuf __ProtoGlarp__(( void ));
216 int pvm_gettid __ProtoGlarp__(( char *, int ));
217 int pvm_gsize __ProtoGlarp__(( char * ));
218 int pvm_halt __ProtoGlarp__(( void ));
219 int pvm_hostsync __ProtoGlarp__(( int, struct timeval *,
221 int pvm_initsend __ProtoGlarp__(( int ));
222 int pvm_insert __ProtoGlarp__(( char *, int, int ));
223 int pvm_joingroup __ProtoGlarp__(( char * ));
224 int pvm_kill __ProtoGlarp__(( int ));
225 int pvm_lookup __ProtoGlarp__(( char *, int, int * ));
226 int pvm_lvgroup __ProtoGlarp__(( char * ));
227 int pvm_mcast __ProtoGlarp__(( int *, int, int ));
228 int pvm_mkbuf __ProtoGlarp__(( int ));
229 int pvm_mstat __ProtoGlarp__(( char * ));
230 int pvm_mytid __ProtoGlarp__(( void ));
231 int pvm_notify __ProtoGlarp__(( int, int,
233 int pvm_nrecv __ProtoGlarp__(( int, int ));
234 int pvm_packf __ProtoGlarp__(( const char *, ... ));
235 int pvm_parent __ProtoGlarp__(( void ));
236 int pvm_perror __ProtoGlarp__(( char * ));
237 int pvm_pkbyte __ProtoGlarp__(( char *, int, int ));
238 int pvm_pkcplx __ProtoGlarp__(( float *, int, int ));
239 int pvm_pkdcplx __ProtoGlarp__(( double *, int, int ));
240 int pvm_pkdouble __ProtoGlarp__(( double *, int, int ));
241 int pvm_pkfloat __ProtoGlarp__(( float *, int, int ));
242 int pvm_pkint __ProtoGlarp__(( int *, int, int ));
243 int pvm_pklong __ProtoGlarp__(( long *, int, int ));
244 int pvm_pkshort __ProtoGlarp__(( short *, int, int ));
245 int pvm_pkstr __ProtoGlarp__(( char * ));
246 int pvm_pkuint __ProtoGlarp__(( unsigned int *, int, int ));
247 int pvm_pkulong __ProtoGlarp__(( unsigned long *, int, int ));
248 int pvm_pkushort __ProtoGlarp__(( unsigned short *, int, int ));
249 int pvm_precv __ProtoGlarp__(( int, int,
251 int *, int *, int * ));
252 int pvm_probe __ProtoGlarp__(( int, int ));
253 int pvm_psend __ProtoGlarp__(( int, int,
255 int pvm_pstat __ProtoGlarp__(( int ));
256 int pvm_recv __ProtoGlarp__(( int, int ));
257 int (*pvm_recvf __ProtoGlarp__(( int (*)(int, int, int) )) )();
258 int pvm_reduce __ProtoGlarp__(( void (*)(int*, void*, void*, int*, int*),
264 * Predefined pvm_reduce functions
266 void PvmMax __ProtoGlarp__(( int *, void *, void *,
268 void PvmMin __ProtoGlarp__(( int *, void *, void *,
270 void PvmSum __ProtoGlarp__(( int *, void *, void *,
272 void PvmProduct __ProtoGlarp__(( int *, void *, void *,
275 int pvm_reg_hoster __ProtoGlarp__(( void ));
276 int pvm_reg_rm __ProtoGlarp__(( struct pvmhostinfo ** ));
277 int pvm_reg_tasker __ProtoGlarp__(( void ));
278 int pvm_scatter __ProtoGlarp__(( void*, void*,
279 int, int, int, char*, int));
280 int pvm_send __ProtoGlarp__(( int, int ));
281 int pvm_sendsig __ProtoGlarp__(( int, int ));
282 int pvm_setmwid __ProtoGlarp__(( int, int ));
283 int pvm_setopt __ProtoGlarp__(( int, int ));
284 int pvm_setrbuf __ProtoGlarp__(( int ));
285 int pvm_setsbuf __ProtoGlarp__(( int ));
286 int pvm_spawn __ProtoGlarp__(( char *, char **, int,
287 char *, int, int * ));
288 int pvm_start_pvmd __ProtoGlarp__(( int, char **, int ));
289 int pvm_tasks __ProtoGlarp__(( int, int *,
290 struct pvmtaskinfo ** ));
291 int pvm_tickle __ProtoGlarp__(( int, int *,
293 int pvm_tidtohost __ProtoGlarp__(( int ));
294 int pvm_trecv __ProtoGlarp__(( int, int, struct timeval * ));
295 int pvm_unpackf __ProtoGlarp__(( const char *, ... ));
296 int pvm_upkbyte __ProtoGlarp__(( char *, int, int ));
297 int pvm_upkcplx __ProtoGlarp__(( float *, int, int ));
298 int pvm_upkdcplx __ProtoGlarp__(( double *, int, int ));
299 int pvm_upkdouble __ProtoGlarp__(( double *, int, int ));
300 int pvm_upkfloat __ProtoGlarp__(( float *, int, int ));
301 int pvm_upkint __ProtoGlarp__(( int *, int, int ));
302 int pvm_upklong __ProtoGlarp__(( long *, int, int ));
303 int pvm_upkshort __ProtoGlarp__(( short *, int, int ));
304 int pvm_upkstr __ProtoGlarp__(( char * ));
305 int pvm_upkuint __ProtoGlarp__(( unsigned int *, int, int ));
306 int pvm_upkulong __ProtoGlarp__(( unsigned long *, int, int ));
307 int pvm_upkushort __ProtoGlarp__(( unsigned short *, int, int ));
308 char *pvm_version __ProtoGlarp__(( void ));