home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
unix
/
volume27
/
distributed-c-2.1
/
part06
/
NOTES
Wrap
Text File
|
1993-12-22
|
7KB
|
155 lines
Distributed C Development Environment - Notes
=============================================
1.) Generating executable load modules:
---------------------------------------
You MUST use the same compiler for generating the runtime library functions
and for generating the executable load modules to which these library functions
are linked.
2.) Problems encoding/decoding data (heterogeneous version only):
----------------------------------------------------------------
For interprocess communications between different machine types data must be
converted. This conversion is performed by encoding the data before sending
and decoding data after receiving using the Sun XDR-Routines.
The encode and decode actions are performed via a dynamic allocated
buffer '_dcc_buf', the size of the buffer is specified at runtime by the
variable '_dcc_buf_size' in the corresponding source code of each process.
But the size needed to encode/decode dynamic structures like trees
or lists can not be predicted at compilation time correctly!
Because of that, there are two different ways for generating code.
The default action performed by the compiler is to generate code which
determines the size of the buffer as the size of the greatest structure
to fit in multiplied by 4. If dynamic structures are used, it is better
to specify a sufficent size using the '-f <bufsize>' compiler option.
If the allocated buffer size is too little to convert the dynamic data
structures, errors during encoding/decoding will be the consequence up to
process crashes. So if you get runtime errors like "error encoding data"
or "error decoding data" you may probably be able to fix this problem by
inctreasing the size of the corresponding variable '_dcc_buf_size'.
Many errors during encoding and decoding data are the consequence of
wrong pointer handling caused by the programmer.
Consider this aspect if you get encode/decode errors!
3.) Problems using 'stdin', 'stdout' or 'stderr' (heterogeneous version only):
-----------------------------------------------------------------------------
You will get problems, if you use 'stdin', 'stdout' or 'stderr' in Distributed
C programs and compile the generated standard C source code files via remote
compilation on different machines.
The problem is caused by the different definitions at the various machines.
For example at a CONVEX 'stdin' is defined in 'stdio.h' as "(&__ap$iob[0])",
at a Sun Sparc Station as "(&_iob[0])", and at a Hewlett Packard Workstation
as "(&__iob[0])".
To avoid this problem you have easely to write the following code at the
beginning of your Distributed C programs right after the include-directive,
which includes the file 'stdio.h':
#include <stdio.h>
#undef stdin
#undef stdout
#undef stderr
This will cause warnings of the type "xxx redefined", which can be ignored.
4.) Termination of all created processes after errors:
------------------------------------------------------
If you want to shut down all created processes of an executing parallel program
after errors, you can do this be calling the system function abort() in the
process which detected the error.
5.) Manually termination of all created processes:
--------------------------------------------------
If you want to terminate all generated processes of an executing parallel
program manually, send signal SIGTERM to the corresponding administration
process dcadmin. Sending signal SIGTERM to dcadmin during runtime will cause
the forcefully termination of all generated processes.
6.) Nested Distributed C statements:
------------------------------------
You can't nest Distributed C Statements at will.
Do NOT use accept- or create-statements within accept-statements, because
this will cause an runtime error in the communication primitives.
7.) Automatic process to node allocation:
-----------------------------------------
You can use the process to node allocation performed by the informations of
a program and a system configuration file only for the HOMOGENEOUS or
HETEROGENEOUS version of the compiler.
Be careful not to use it at the Intel Hypercube: define USE_MAPFILE during
compilation of the administration process for the iPSC compiler version.
8.) Problems with system include files:
---------------------------------------
Any system files '#include' directives (e.g. "stdio.h") of a Distributed C
program are collected and written to the corresponding generated include file.
If you use "#include <xxxxx.h>" preprocessor commands in combination with the
'-Ipath' option during preprocessing, the problem may occur that this include
directive does not appear in the generated include file.
The reason is that only the paths '/usr/include' and '/usr/local/dist/include'
are currently considered to be directories for storing system include files.
If you get the problem that some include files which are located in special
paths and are included with "#include <....>" in combination with '-Ipath', you
must add this path to the already considered paths ("/usr/include", ...) in the
files dcc/includefile.c and dcc/yyfuncts.c.
9.) Supported operating-system/machine/environment configurations:
------------------------------------------------------------------
Following is a list of systems on which the software package was successfully
used. The list elements have the structure
operating system, operating system version,
machine types,
communication routines, supported network types:
o AIX, 3.2,
RS 6000,
SOCKET, HETEROGENEOUS
o ConvexOS, 10.2,
C220/C3840,
SOCKET, HETEROGENEOUS
o HP-UX, A.09.01,
HP9000-720/HP9000-755,
SOCKET, HOMOGENEOUS/HETEROGENEOUS
o Linux, 0.99.13,
AT i486s,
SOCKET, HOMOGENEOUS
o SCO Xenix, 2.3,
AT i386,
MSGSEM, SINGLE
o SCO Unix, 3.2,
AT i386,
MSGSEM, SINGLE
o SunOS, 4.1 or greater,
Sun SPARCstations(sun4c),
SOCKET, HOMOGENEOUS/HETEROGENEOUS
o Ultrix, 3.1,
DECstations,
SOCKET, HOMOGENEOUS
o Unicos, 7.0,
Cray Y-MP,
SOCKET, HETEROGENEOUS
(SOCKET = TCP/IP data stream sockets, MSGSEM = message queues and semaphores)
10.) Problems starting Distributed C programs on Linux systems:
--------------------------------------------------------------
Use sockets as communication primitives on Linux systems!
If you still get problems starting Distributed C programs on your Linux system,
check if your network is correctly configured. You have to configure your
Ethernet card if your system is connected to a network. If your machine is a
standalone system you MUST configure the 'loopback mode' (i.e. no SLIP, no
ethernet card, just TCP/IP connections to your own machine---called "loopback",
IP address 127.0.0.1) to be able to run Distributed C programs (to do so, see
the corresponding FAQs, especially 'NET-2-HOWTO').