SCSCP Symbolic Computation Software Composability Protocol Version 2.2.3 24 September 2017 Alexander Konovalov Steve Linton Alexander Konovalov Email: mailto:alexander dot konovalov at st-andrews dot ac dot uk Homepage: http://www.cs.st-andrews.ac.uk/~alexk/ Address: School of Computer Science University of St Andrews Jack Cole Building, North Haugh, St Andrews, Fife, KY16 9SX, Scotland Steve Linton Email: mailto:sal at cs dot st-andrews dot ac dot uk Homepage: http://www.cs.st-andrews.ac.uk/~sal/ Address: School of Computer Science University of St Andrews Jack Cole Building, North Haugh, St Andrews, Fife, KY16 9SX, Scotland ------------------------------------------------------- Abstract The GAP package SCSCP implements the Symbolic Computation Software Composability protocol (http://www.symbolic-computing.org/scscp) for the computational algebra system GAP. ------------------------------------------------------- Copyright © 2007-2017 by Alexander Konovalov and Steve Linton SCSCP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. For details, see the FSF's own site http://www.gnu.org/licenses/gpl.html. If you obtained SCSCP, we would be grateful for a short notification sent to one of the authors. If you publish a result which was partially obtained with the usage of SCSCP, please cite it in the following form: A. Konovalov and S. Linton. SCSCP --- Symbolic Computation Software Composability Protocol, Version 2.2.3; 2017 (https://gap-packages.github.io/scscp/). ------------------------------------------------------- Acknowledgements The development of the SCSCP package has been supported by:  EU FP6 Programme project 026133 SCIEnce - Symbolic Computation Infrastructure for Europe (see http://www.symbolic-computing.org/).  OpenDreamKit Horizon 2020 European Research Infrastructures project #676541 (see http://opendreamkit.org/). ------------------------------------------------------- Colophon Versions history:  Version 0.1 - first half of 2007;  Version 0.2 - December 2007;  Version 0.3 - May 2008;  Version 0.4 - August 2008;  Version 1.0 - March 2009;  Version 1.1 - May 2009;  Version 1.2 - March 2010.  Version 2.0 - October 2011.  Version 2.1 - March 2012.  Version 2.2 - February 2017. ------------------------------------------------------- Contents (scscp) 1 Preface 2 Installation 2.1 Installation and system requirements 2.2 Configuration files 3 Using streams 3.1 Input-output TCP streams 3.1-1 IsInputOutputTCPStream 3.1-2 IsInputOutputTCPStreamRep 3.1-3 InputOutputTCPStream 3.2 Example of client-server communication via input-output TCP streams 4 Message exchange by SCSCP 4.1 Communication with the SCSCP server 4.1-1 StartSCSCPsession 4.1-2 OMPutProcedureCall 4.1-3 SCSCPwait 4.1-4 OMGetObjectWithAttributes 4.2 Communication with the SCSCP client 4.2-1 OMPutProcedureCompleted 4.2-2 OMPutProcedureTerminated 4.3 Example: SCSCP session 5 Running SCSCP server 5.1 Installation of SCSCP procedures 5.1-1 InstallSCSCPprocedure 5.1-2 OMsymRecord 5.2 Starting SCSCP server 5.2-1 RunSCSCPserver 5.3 Procedures to get information about the SCSCP server 5.3-1 GetServiceDescription 5.3-2 GetAllowedHeads 5.3-3 IsAllowedHead 5.3-4 GetTransientCD 5.3-5 GetSignature 6 Client's functionality 6.1 SCSCP connections 6.1-1 IsSCSCPconnection 6.1-2 NewSCSCPconnection 6.1-3 CloseSCSCPconnection 6.2 Processes 6.2-1 IsProcess 6.2-2 NewProcess 6.2-3 CompleteProcess 6.2-4 TerminateProcess 6.3 All-in-one tool: sending request and getting result 6.3-1 EvaluateBySCSCP 6.4 Switching between Binary and XML OpenMath Encodings 6.4-1 SwitchSCSCPmodeToBinary 6.5 Remote objects 6.5-1 StoreAsRemoteObjectPersistently 6.5-2 IsRemoteObject 6.5-3 RemoteObjectsFamily 6.5-4 RetrieveRemoteObject 6.5-5 UnbindRemoteObject 7 Examples of SCSCP usage 7.1 Providing services with the SCSCP package 7.2 Identifying groups of order 512 8 Parallel computing with SCSCP 8.1 Managing multiple requests 8.1-1 SynchronizeProcesses 8.1-2 FirstProcess 8.1-3 SCSCPservers 8.1-4 ParQuickWithSCSCP 8.1-5 FirstTrueProcess 8.2 MasterWorker skeleton 8.2-1 ParListWithSCSCP 8.2-2 SCSCPreset 8.2-3 SCSCPLogTracesToGlobal 8.3 Example: parallelising Karatsuba multiplication for polynomials 9 Service functions 9.1 Pinging SCSCP servers 9.1-1 PingSCSCPservice 9.1-2 PingStatistic 9.2 Info classes for SCSCP 9.2-1 InfoSCSCP 9.2-2 InfoMasterWorker 9.3 Other SCSCP Utilities 9.3-1 DateISO8601 9.3-2 CurrentTimestamp 9.3-3 Hostname 9.3-4 MemoryUsageByGAPinKbytes 9.3-5 LastReceivedCallID 9.3-6 IO_PickleToString 9.3-7 IO_UnpickleFromString