1 | MP version 1.1.2: Multi Protocol |
---|
2 | Kent State University, Kent, OH |
---|
3 | Authors: S. Gray, N. Kajler, P. Wang |
---|
4 | (C) 1993, 1994, 1995, 1996, 1997 All Rights Reserved |
---|
5 | |
---|
6 | NOTICE |
---|
7 | |
---|
8 | Permission to use, copy, modify, and distribute this software and |
---|
9 | its documentation for non-commercial purposes and without fee is |
---|
10 | hereby granted provided that the above copyright notice appear in all |
---|
11 | copies and that both the copyright notice and this permission notice |
---|
12 | appear in supporting documentation. |
---|
13 | |
---|
14 | Neither Kent State University nor the Authors make any representations |
---|
15 | about the suitability of this software for any purpose. This software |
---|
16 | is provided ``as is'' without express or implied warranty. |
---|
17 | |
---|
18 | MP 1.1.2 is available through public FTP at ftp.mcs.kent.edu in the |
---|
19 | directory /dist/MP/MP-1.1.2.tar.gz. New MP developments and releases |
---|
20 | are announced from time to time on SymbolicNet : |
---|
21 | |
---|
22 | http://SymbolicNet.mcs.kent.edu/areas/protocols/mp.html |
---|
23 | |
---|
24 | |
---|
25 | What is the Multi Protocol? |
---|
26 | -------------------------- |
---|
27 | |
---|
28 | The Multi Protocol (MP) is designed for exploring issues in |
---|
29 | integrating symbolic, numeric, graphics, document processing, and |
---|
30 | other software tools for scientific computation within different |
---|
31 | computing paradigms (e.g., point to point, distributed, parallel, |
---|
32 | software bus). |
---|
33 | |
---|
34 | All data is transmitted in the form of linearized annotated syntax |
---|
35 | trees. Interior nodes of a syntax tree are operators, while leaves |
---|
36 | are non-operator basic types or an operator with no children. Each |
---|
37 | node of the tree is sent individually in a node packet. Each node of |
---|
38 | the tree (node packet) may have 0 or more annotations attached to it. |
---|
39 | Annotations are transmitted individually as annotation packets and |
---|
40 | immediately follow the node to which they are attached. |
---|
41 | |
---|
42 | To support this experimentation, MP was implemented in a layered |
---|
43 | fashion and is independent of the transport mechanism used to transmit |
---|
44 | the data. Device interfaces are available for files, TCP sockets, and |
---|
45 | PVM). |
---|
46 | |
---|
47 | |
---|
48 | Table of contents of distribution |
---|
49 | --------------------------------- |
---|
50 | |
---|
51 | README This file |
---|
52 | INSTALL Instructions on how to install MP |
---|
53 | MP/ Sources for the MP library |
---|
54 | MPT/ Sources for the MP Tree library |
---|
55 | Makefile.in Template for the toplevel makefile |
---|
56 | configure Configuration program (shell script) |
---|
57 | configure.in Template for configure file |
---|
58 | doc/ Documentation (Guide to MP Programming) |
---|
59 | examples/ Other example programs |
---|
60 | gmp/ Source for the GNU Multiple Precision package |
---|
61 | mp-pvm3/ Files related to using PVM as a transport device |
---|
62 | mpviewer/ Source for a simple program for viewing MP trees |
---|
63 | |
---|
64 | |
---|
65 | Installation |
---|
66 | ------------ |
---|
67 | |
---|
68 | The code is written in C and has been compiled and tested on the |
---|
69 | following platforms: |
---|
70 | |
---|
71 | - SGI workstations running IRIX 5.2 (cc) |
---|
72 | - Sun workstations running SunOS 4.x (gcc) |
---|
73 | - DECstation 5000 running Ultrix 4.2 (gcc) |
---|
74 | - HP workstations running HP-UX A.09.05 (cc and gcc) |
---|
75 | - IBM RS6000 workstations running AIX 3.2.5 (gcc) |
---|
76 | - Intel 586 system running Linux 1.2.13 (gcc) |
---|
77 | - Intel 586 system running Windows 95 (Borland C++ 5.0) |
---|
78 | |
---|
79 | For instructions on how to install MP, see the file INSTALL contained |
---|
80 | in this directory. |
---|
81 | |
---|
82 | |
---|
83 | Compiling with libMP.a |
---|
84 | ---------------------- |
---|
85 | To compile a program, yourprog.c, you would do: |
---|
86 | |
---|
87 | gcc -LLIB_DIR -IINCLUDE_DIR yourprog.c -lMP -lgmp -o yourprog |
---|
88 | |
---|
89 | Where LIB_DIR is the directory in which libMP.a and libgmp.a have been |
---|
90 | installed and INCLUDE_DIR is the include directory of the MP |
---|
91 | distribution. The GMP include files used by MP are also kept there. |
---|
92 | |
---|
93 | NOTE: You may have additional libraries to list and may have to change |
---|
94 | their order to have the linker accept them. |
---|
95 | |
---|
96 | |
---|
97 | Reporting Results |
---|
98 | ----------------- |
---|
99 | As the library and the protocol are still experimental, we would |
---|
100 | greatly appreciate learning of your experiences: how you have used the |
---|
101 | library, what you found worthwhile, what you had to change, any bugs |
---|
102 | (!) you found. |
---|
103 | |
---|
104 | Please send bug reports or fixes, inquiries, and experiences to |
---|
105 | |
---|
106 | mp@mcs.kent.edu. |
---|
107 | |
---|
108 | If you use MP as part of significant project and/or publish a result |
---|
109 | that was partly obtained using MP, please cite MP. We would greatly |
---|
110 | appreciate it if you could inform us about such a project or paper. |
---|
111 | Thank you. |
---|
112 | |
---|
113 | |
---|
114 | ####################################################################### |
---|
115 | # Remarks for Borland C++ users from Eckhard Hennig hennig@rhrk.uni-kl.de |
---|
116 | ####################################################################### |
---|
117 | |
---|
118 | I know I should have provided a MAKE file here but the ones |
---|
119 | automatically generated by the IDE make things look even worse. So |
---|
120 | follow these steps to compile the MP library on your Windows95/NT |
---|
121 | system: |
---|
122 | |
---|
123 | 1. Make a new project named mpwin32 with link target mpwin32.lib |
---|
124 | (Target type static library (for *.exe), Environment Win32, |
---|
125 | Target model GUI or Console) |
---|
126 | |
---|
127 | 2. In the project window, include all MP_*.c files (except for |
---|
128 | MP_BigNum, MP_TbTransp, MP_PvmTransp, and MP_SacBigInt) under your |
---|
129 | link target mpwin32.lib |
---|
130 | |
---|
131 | 3. Under "Options | Project | Compiler | Definitions" set these compiler |
---|
132 | definitions: |
---|
133 | __STDC__=1;_IEEE |
---|
134 | |
---|
135 | 4. If you wish to include GMP then define HAVE_GMP, too, and include |
---|
136 | MP_BigNum.c in your project (I haven't included the GMP library |
---|
137 | yet, so I don't know if this works.) |
---|
138 | |
---|
139 | 5. Make sure that the compiler source code type is set to Borland |
---|
140 | extensions AND NOT ANSI C!!! Why? Because some Borland header files |
---|
141 | use C++ style double-slash comments (aaargh!) which won't compile |
---|
142 | with the ANSI setting. This also explains why the definition |
---|
143 | __STDC__=1 above is necessary: The library should be compiled in |
---|
144 | ANSI C mode but BCC doesn't define __STDC__ if the Borland language |
---|
145 | extension are selected. |
---|
146 | |
---|
147 | 6. Now try to compile the MP library. (Write to hennig@rhrk.uni-kl.de |
---|
148 | if this doesn't work.) |
---|
149 | |
---|
150 | 7. For using MP with TCP in a Win32 environment see the remarks below. |
---|
151 | |
---|
152 | |
---|
153 | ####################################################################### |
---|
154 | # Remarks concerning the Windows95/NT port of the TCP transport device |
---|
155 | # (E. Hennig) |
---|
156 | ####################################################################### |
---|
157 | |
---|
158 | The TCP transport device has been ported for use with the WinSock32 |
---|
159 | DLL with the only restriction that -MPmode launch will only work on the |
---|
160 | local machine, i.e. -MPhost localhost. |
---|
161 | |
---|
162 | If TCP is to be used as transport mechanism in a Windows program |
---|
163 | which uses MP it is absolutely necessary to call the function |
---|
164 | |
---|
165 | int WinSockInitialize(void); |
---|
166 | |
---|
167 | (declared in MP_TcpTransp.h, automatically included with MP.h) before |
---|
168 | making any calls to MP library functions. WinSockInitialize returns zero |
---|
169 | if everything is OK, and a value other than zero if the initialization |
---|
170 | has failed. Failure may result from a missing or outdated WinSock DLL. |
---|
171 | In the case of failure the program should abort and must not attempt to |
---|
172 | make any calls to MP library functions. |
---|
173 | |
---|
174 | Before exiting the Windows program, WSACleanup() must be called to free |
---|
175 | the WinSock resources allocated for the Windows MP application. Such an |
---|
176 | application would therefore typically have a main() function such as |
---|
177 | this: |
---|
178 | |
---|
179 | |
---|
180 | #include "MP.h" |
---|
181 | |
---|
182 | main(int argc, char **argv) |
---|
183 | { |
---|
184 | int WinSockError; |
---|
185 | |
---|
186 | WinSockError = WinSockInitialize(); /* Install WinSock DLL */ |
---|
187 | if (WinSockError != 0) |
---|
188 | exit(-1); |
---|
189 | |
---|
190 | /* |
---|
191 | * ... your own code ... |
---|
192 | * |
---|
193 | */ |
---|
194 | |
---|
195 | WSACleanup(); /* Clean up WinSock resources */ |
---|
196 | |
---|
197 | return 0; |
---|
198 | } |
---|
199 | |
---|
200 | |
---|
201 | |
---|
202 | |
---|
203 | Acknowledgements |
---|
204 | ---------------- |
---|
205 | |
---|
206 | MP has received support through the years from a number of sources, |
---|
207 | including ARO, NSF, and ICM/Kent. |
---|
208 | |
---|
209 | The authors wish to thank: |
---|
210 | |
---|
211 | o Ch'ng Shi Baw for his work implementing the new buffering layer and |
---|
212 | in preparing the initial interface to PVM3. |
---|
213 | o Eckhard Hennig and Marcus Thiessel for the port to Windows 95/NT and |
---|
214 | numerous fixes and improvements. |
---|
215 | o Olaf Bachmann for the MPT code, the improved configure code, and |
---|
216 | numerous fixes and improvements. |
---|
217 | o Olaf Bachmann, Thomas Metzner, Hannes Schoenemann, Andi Sorgatz for |
---|
218 | MP_PariBigInt.c. |
---|
219 | |
---|
220 | The package makes use of copyrighted material from Sun's XDR and GNU's |
---|
221 | Multiple Precision package. |
---|