MP version 1.1.2: Multi Protocol Kent State University, Kent, OH Authors: S. Gray, N. Kajler, P. Wang (C) 1993, 1994, 1995, 1996, 1997 All Rights Reserved NOTICE Permission to use, copy, modify, and distribute this software and its documentation for non-commercial purposes and without fee is hereby granted provided that the above copyright notice appear in all copies and that both the copyright notice and this permission notice appear in supporting documentation. Neither Kent State University nor the Authors make any representations about the suitability of this software for any purpose. This software is provided ``as is'' without express or implied warranty. MP 1.1.2 is available through public FTP at ftp.mcs.kent.edu in the directory /dist/MP/MP-1.1.2.tar.gz. New MP developments and releases are announced from time to time on SymbolicNet : http://SymbolicNet.mcs.kent.edu/areas/protocols/mp.html What is the Multi Protocol? -------------------------- The Multi Protocol (MP) is designed for exploring issues in integrating symbolic, numeric, graphics, document processing, and other software tools for scientific computation within different computing paradigms (e.g., point to point, distributed, parallel, software bus). All data is transmitted in the form of linearized annotated syntax trees. Interior nodes of a syntax tree are operators, while leaves are non-operator basic types or an operator with no children. Each node of the tree is sent individually in a node packet. Each node of the tree (node packet) may have 0 or more annotations attached to it. Annotations are transmitted individually as annotation packets and immediately follow the node to which they are attached. To support this experimentation, MP was implemented in a layered fashion and is independent of the transport mechanism used to transmit the data. Device interfaces are available for files, TCP sockets, and PVM). Table of contents of distribution --------------------------------- README This file INSTALL Instructions on how to install MP MP/ Sources for the MP library MPT/ Sources for the MP Tree library Makefile.in Template for the toplevel makefile configure Configuration program (shell script) configure.in Template for configure file doc/ Documentation (Guide to MP Programming) examples/ Other example programs gmp/ Source for the GNU Multiple Precision package mp-pvm3/ Files related to using PVM as a transport device mpviewer/ Source for a simple program for viewing MP trees Installation ------------ The code is written in C and has been compiled and tested on the following platforms: - SGI workstations running IRIX 5.2 (cc) - Sun workstations running SunOS 4.x (gcc) - DECstation 5000 running Ultrix 4.2 (gcc) - HP workstations running HP-UX A.09.05 (cc and gcc) - IBM RS6000 workstations running AIX 3.2.5 (gcc) - Intel 586 system running Linux 1.2.13 (gcc) - Intel 586 system running Windows 95 (Borland C++ 5.0) For instructions on how to install MP, see the file INSTALL contained in this directory. Compiling with libMP.a ---------------------- To compile a program, yourprog.c, you would do: gcc -LLIB_DIR -IINCLUDE_DIR yourprog.c -lMP -lgmp -o yourprog Where LIB_DIR is the directory in which libMP.a and libgmp.a have been installed and INCLUDE_DIR is the include directory of the MP distribution. The GMP include files used by MP are also kept there. NOTE: You may have additional libraries to list and may have to change their order to have the linker accept them. Reporting Results ----------------- As the library and the protocol are still experimental, we would greatly appreciate learning of your experiences: how you have used the library, what you found worthwhile, what you had to change, any bugs (!) you found. Please send bug reports or fixes, inquiries, and experiences to mp@mcs.kent.edu. If you use MP as part of significant project and/or publish a result that was partly obtained using MP, please cite MP. We would greatly appreciate it if you could inform us about such a project or paper. Thank you. ####################################################################### # Remarks for Borland C++ users from Eckhard Hennig hennig@rhrk.uni-kl.de ####################################################################### I know I should have provided a MAKE file here but the ones automatically generated by the IDE make things look even worse. So follow these steps to compile the MP library on your Windows95/NT system: 1. Make a new project named mpwin32 with link target mpwin32.lib (Target type static library (for *.exe), Environment Win32, Target model GUI or Console) 2. In the project window, include all MP_*.c files (except for MP_BigNum, MP_TbTransp, MP_PvmTransp, and MP_SacBigInt) under your link target mpwin32.lib 3. Under "Options | Project | Compiler | Definitions" set these compiler definitions: __STDC__=1;_IEEE 4. If you wish to include GMP then define HAVE_GMP, too, and include MP_BigNum.c in your project (I haven't included the GMP library yet, so I don't know if this works.) 5. Make sure that the compiler source code type is set to Borland extensions AND NOT ANSI C!!! Why? Because some Borland header files use C++ style double-slash comments (aaargh!) which won't compile with the ANSI setting. This also explains why the definition __STDC__=1 above is necessary: The library should be compiled in ANSI C mode but BCC doesn't define __STDC__ if the Borland language extension are selected. 6. Now try to compile the MP library. (Write to hennig@rhrk.uni-kl.de if this doesn't work.) 7. For using MP with TCP in a Win32 environment see the remarks below. ####################################################################### # Remarks concerning the Windows95/NT port of the TCP transport device # (E. Hennig) ####################################################################### The TCP transport device has been ported for use with the WinSock32 DLL with the only restriction that -MPmode launch will only work on the local machine, i.e. -MPhost localhost. If TCP is to be used as transport mechanism in a Windows program which uses MP it is absolutely necessary to call the function int WinSockInitialize(void); (declared in MP_TcpTransp.h, automatically included with MP.h) before making any calls to MP library functions. WinSockInitialize returns zero if everything is OK, and a value other than zero if the initialization has failed. Failure may result from a missing or outdated WinSock DLL. In the case of failure the program should abort and must not attempt to make any calls to MP library functions. Before exiting the Windows program, WSACleanup() must be called to free the WinSock resources allocated for the Windows MP application. Such an application would therefore typically have a main() function such as this: #include "MP.h" main(int argc, char **argv) { int WinSockError; WinSockError = WinSockInitialize(); /* Install WinSock DLL */ if (WinSockError != 0) exit(-1); /* * ... your own code ... * */ WSACleanup(); /* Clean up WinSock resources */ return 0; } Acknowledgements ---------------- MP has received support through the years from a number of sources, including ARO, NSF, and ICM/Kent. The authors wish to thank: o Ch'ng Shi Baw for his work implementing the new buffering layer and in preparing the initial interface to PVM3. o Eckhard Hennig and Marcus Thiessel for the port to Windows 95/NT and numerous fixes and improvements. o Olaf Bachmann for the MPT code, the improved configure code, and numerous fixes and improvements. o Olaf Bachmann, Thomas Metzner, Hannes Schoenemann, Andi Sorgatz for MP_PariBigInt.c. The package makes use of copyrighted material from Sun's XDR and GNU's Multiple Precision package. -------------------------------------------------------------------------- *NOTICE* Important addition to the COPYING: As of September 2006, MP is also licensed under GPL: From: Simon Gray Date: 07-Sep-2006 07:43 Subject: Re: License for MP To: "Paul S. Wang" , Jordi Gutierrez Hermoso Cc: kajler@paris.ensmp.fr Agreed. Nice to hear this combination is still being used. Simon Gray, PhD Department of Mathematics and Computer Science College of Wooster ---------- Forwarded message ---------- From: Norbert Kajler Date: 07-Sep-2006 07:35 Subject: Re: License for MP To: Jordi Gutierrez Hermoso Cc: sgray@mcs.kent.edu, pwang@cs.kent.edu Dear Jordi, Paul, Simon, I have no objection either, and agrees with whatever Paul decides. BTW, I just attended a lecture by Richard Stallman yesterday. I know next to nothing about DRM and software licenses but after listening Richard, my understanding is that a "free" program (in terms of GNU philosophy) is indeed a program that includes some kind of viral licence (so that programs derived from a "free" program must remain 100% "free", and so on). Therefore I am confused with the following sentences : > The specific problem is that you do not allow modifications of your code fo r > commercial purposes, which according to the DFSG, makes your code > non-free. Not that I insist on any kind of license, but it looks like I missed something :-) Regards, -- Norbert ---------- Forwarded message ---------- From: Paul S. Wang Date: 06-Sep-2006 16:22 Subject: Re: License for MP To: Jordi Gutierrez Hermoso Cc: kajler@paris.ensmp.fr, sgray@wooster.edu Jordi, I am agreeable to any reasonable license including GLP. I am forwarding the msg to Simon and Norbert to see what they say. Paul