home *** CD-ROM | disk | FTP | other *** search
- 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').
-