~ubuntu-branches/ubuntu/trusty/pvm/trusty-proposed

« back to all changes in this revision

Viewing changes to src/lpvmmimd.c

  • Committer: Bazaar Package Importer
  • Author(s): Steinar H. Gunderson
  • Date: 2006-08-09 00:00:40 UTC
  • mfrom: (2.1.5 dapper)
  • Revision ID: james.westby@ubuntu.com-20060809000040-16kh33tmxx2em716
Tags: 3.4.5-7
Build with SHELL=/bin/bash in debian/rules; fixes FTBFS when /bin/sh
isn't bash. (Closes: #379543)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
 
2
2
static char rcsid[] =
3
 
        "$Id: lpvmmimd.c,v 1.23 1999/07/08 18:59:59 kohl Exp $";
 
3
        "$Id: lpvmmimd.c,v 1.25 2004/01/14 18:50:57 pvmsrc Exp $";
4
4
 
5
5
/*
6
6
 *         PVM version 3.4:  Parallel Virtual Machine System
36
36
 *      Libpvm core for MPP environment.
37
37
 *
38
38
 * $Log: lpvmmimd.c,v $
 
39
 * Revision 1.25  2004/01/14 18:50:57  pvmsrc
 
40
 * Added new AIX5* arches.
 
41
 * (Spanker=kohl)
 
42
 *
 
43
 * Revision 1.24  2001/05/11 17:32:28  pvmsrc
 
44
 * Eliminated references to sys_errlist & sys_nerr.
 
45
 *      - unnecessary, and we're whacking that crap anyway.
 
46
 * (Spanker=kohl)
 
47
 *
39
48
 * Revision 1.23  1999/07/08 18:59:59  kohl
40
49
 * Fixed "Log" keyword placement.
41
50
 *      - indent with " * " for new CVS.
258
267
#ifdef IMA_I860
259
268
#include <cube.h>
260
269
#endif
261
 
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
270
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
262
271
#include <sys/socket.h>
263
272
#include <sys/select.h>
264
273
#include "mpi.h"
294
303
 
295
304
#ifndef HASERRORVARS
296
305
extern int errno;                                       /* from libc */
297
 
extern char *sys_errlist[];
298
 
extern int sys_nerr;
299
306
#endif
300
307
 
301
308
int pvmtidhmask = TIDHOST;                      /* mask - host field of tids */
316
323
static int mpierrcode = 0;                              /* error code returned by MPI calls */
317
324
static struct tmpfrag outfrags[NUMSMHD];/* fragments queued by async send */
318
325
static int nextsmhd = 0;                                /* index of current isend mhdl */
319
 
#if defined(IMA_CM5) || defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
326
#if defined(IMA_CM5) || defined(IMA_SP2MPI) || defined(IMA_AIX4SP2) \
 
327
                defined(IMA_AIX5SP2)
320
328
static struct pmsg *precvlist = 0;              /* not-processed incm msgs */
321
329
#endif
322
330
static long pvmmyptype = 0;                             /* my process type */
461
469
        struct timeval tnow, tstop;
462
470
        int len;
463
471
        long node;
464
 
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
472
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
465
473
        MPI_Status info;
466
474
        int mpiflag = 0;
467
475
        int mpisiz;
654
662
        int i;
655
663
        int ff;
656
664
        char dummy[TDFRAGHDR+TTMSGHDR]; /* for inplace data */
657
 
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
665
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
658
666
        MPI_Status mpista;
659
667
        int mpiflag = 0;
660
668
#endif
661
669
 
662
 
#if defined(IMA_PGON) || defined(IMA_CM5) || defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
670
#if defined(IMA_PGON) || defined(IMA_CM5) || defined(IMA_SP2MPI) \
 
671
                || defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
663
672
        mask |= pvmtidtmask;                            /* process type */
664
673
#endif
665
674
 
767
776
                } else {
768
777
 
769
778
                        if (node != pvmhostnode) {
770
 
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
779
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
771
780
                                if (mpierrcode = MPI_Isend(txcp, txtogo, MPI_BYTE, node, 
772
781
                                PMTPACK, MPI_COMM_WORLD, &outfrags[nextsmhd].tf_mhdl)) {
773
782
#else
944
953
        PVM_FREE(nodes);
945
954
#endif /*defined(IMA_PGON)*/
946
955
 
947
 
#if defined(IMA_CM5) || defined(IMA_I860) || defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
956
#if defined(IMA_CM5) || defined(IMA_I860) || defined(IMA_SP2MPI) \
 
957
                || defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
948
958
        for (i = 0; i < ntask; i++)
949
959
                cc = mroute(mid, tids[i], code, &ztv);
950
960
#endif
1012
1022
}
1013
1023
 
1014
1024
 
1015
 
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
1025
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
1016
1026
 
1017
1027
/* Relay messages between pvmd and node tasks. */
1018
1028
void relay(dsock)
1293
1303
        char *p;
1294
1304
        struct pvmminfo minfo;
1295
1305
        int n;
1296
 
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
1306
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
1297
1307
        char *msgbuf;                           /* buffer for Bsend */
1298
1308
        int msgbufsiz;
1299
1309
#endif
1343
1353
        pvmhostnode = CMMD_host_node();
1344
1354
#endif
1345
1355
 
1346
 
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
1356
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
1347
1357
        MPI_Init(&ac, NULL);
1348
1358
        MPI_Comm_rank(MPI_COMM_WORLD, &pvmmynode);
1349
1359
        MPI_Comm_size(MPI_COMM_WORLD, &pvmhostnode);
1390
1400
        BZERO((char*)pvmrxlist, sizeof(struct pmsg));
1391
1401
        pvmrxlist->m_link = pvmrxlist->m_rlink = pvmrxlist;
1392
1402
 
1393
 
#if defined(IMA_CM5) || defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
1403
#if defined(IMA_CM5) || defined(IMA_SP2MPI) || defined(IMA_AIX4SP2) \
 
1404
                || defined(IMA_AIX5SP2)
1394
1405
        precvlist = TALLOC(1, struct pmsg, "umb");
1395
1406
        BZERO((char*)precvlist, sizeof(struct pmsg));
1396
1407
        precvlist->m_link = precvlist->m_rlink = precvlist;
1403
1414
        _msgwait(rmid);
1404
1415
#endif
1405
1416
 
1406
 
#if defined(IMA_PGON) || defined(IMA_I860) || defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
1417
#if defined(IMA_PGON) || defined(IMA_I860) || defined(IMA_SP2MPI) \
 
1418
                || defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
1407
1419
        if (pvminfo[0] != TDPROTOCOL) {
1408
1420
                sprintf(pvmtxt, "beatask() t-d protocol mismatch (%d/%d)\n",
1409
1421
                        TDPROTOCOL, pvminfo[0]);
1559
1571
int
1560
1572
pvmendtask()
1561
1573
{
1562
 
#if defined(IMA_PGON) || defined(IMA_I860) || defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
1574
#if defined(IMA_PGON) || defined(IMA_I860) || defined(IMA_SP2MPI) \
 
1575
                || defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
1563
1576
        int i;
1564
 
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
1577
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
1565
1578
        MPI_Status mpista;
1566
1579
#endif
1567
1580
 
1577
1590
#ifdef IMA_CM5
1578
1591
        CMMD_all_msgs_wait();
1579
1592
#endif
1580
 
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
1593
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
1581
1594
        MPI_Finalize();
1582
1595
#endif
1583
1596
 
1629
1642
#if defined(IMA_PGON) || defined(IMA_CM5)
1630
1643
        long info[8];
1631
1644
#endif
1632
 
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
1645
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
1633
1646
        MPI_Status info;
1634
1647
        int mpiflag = 0;
1635
1648
        int mpisiz;
1639
1652
        int cc;
1640
1653
 
1641
1654
        node = (tid == -1) ? MPPANYNODE : tid & pvmtidnmask;
1642
 
#if defined(IMA_CM5) || defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
1655
#if defined(IMA_CM5) || defined(IMA_SP2MPI) || defined(IMA_AIX4SP2) \
 
1656
                || defined(IMA_AIX5SP2)
1643
1657
        for (up = precvlist->m_link; up != precvlist; up = up->m_link)
1644
1658
                /* message picked up by psend */
1645
1659
                if ((tag == -1 || tag == up->m_tag) 
1803
1817
        }
1804
1818
 
1805
1819
        if (!cc) {
1806
 
#if defined(IMA_PGON) || defined(IMA_CM5) || defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
1820
#if defined(IMA_PGON) || defined(IMA_CM5) || defined(IMA_SP2MPI) \
 
1821
                || defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
1807
1822
                int mask = pvmtidhmask | pvmtidtmask;           /* same partition */
1808
1823
 
1809
1824
                if (tid == -1 || (TIDISNODE(tid) && (tid & mask) == (pvmmytid & mask)))
1939
1954
 
1940
1955
        if (!cc) {
1941
1956
 
1942
 
#if defined(IMA_PGON) || defined(IMA_CM5) || defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
1957
#if defined(IMA_PGON) || defined(IMA_CM5) || defined(IMA_SP2MPI) \
 
1958
                || defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
1943
1959
 
1944
1960
                int mask = pvmtidhmask;                 /* host */
1945
1961
                long node = tid & pvmtidnmask;
1947
1963
                CMMD_mcb mhdl;
1948
1964
                int info;
1949
1965
#endif
1950
 
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
1966
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
1951
1967
                MPI_Request mhdl;
1952
1968
                MPI_Status info, mpista;
1953
1969
                int mpiflag = 0;
1968
1984
#ifdef IMA_CM5
1969
1985
                        if ((mhdl = ASYNCSEND(tag, cp, len, node, pvmmyptype)) < 0)
1970
1986
#endif
1971
 
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
1987
#if defined(IMA_SP2MPI) || defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
1972
1988
                        if (mpierrcode = MPI_Isend(cp, len, MPI_BYTE, node,
1973
1989
                tag, MPI_COMM_WORLD, &mhdl))
1974
1990
#endif
1977
1993
                                cc = PvmSysErr;
1978
1994
                                goto done;
1979
1995
                        }
1980
 
#if defined(IMA_CM5) || defined(IMA_SP2MPI) || defined(IMA_AIX4SP2)
 
1996
#if defined(IMA_CM5) || defined(IMA_SP2MPI) || defined(IMA_AIX4SP2) \
 
1997
                || defined(IMA_AIX5SP2)
1981
1998
                        while (!ASYNCDONE(mhdl)) {
1982
1999
                                int rtag;
1983
2000