cash-0.1.0.0: src/Math/ComputerAlgebra/Cash/BaseServices.hs
{-
Time-stamp: <Fri Jul 23 2010 21:38:00 Stardate: Stardate: [-28]3419.09 hwloidl>
This module defines basic services, provided via SCSCP interfaces, that should
be known to the coordination server from initialisation.
Naming scheme (it's just a scheme, for convenience, the CD should identify the service):
WS_ ... GAP server
HS_ ... Haskell server
CS_ ... Coordination server
See testClient.hs as an example of a client, testing the coordination server.
See CoordinationServer.hs, acting as a client to eg. GAP server.
-}
module Math.ComputerAlgebra.Cash.BaseServices where
import Math.ComputerAlgebra.Cash.SCSCP_API
-----------------------------------------------------------------------------
-- GAP services
scscp_WS_Plus = Left ("scscp_transient_1", "WS_Plus")
scscp_WS_Factorial = Left("scscp_transient_1", "WS_Factorial")
scscp_WS_Phi = Left ("scscp_transient_1", "WS_Phi") -- matches GAP server init
scscp_WS_Fibonacci = Left ("scscp_transient_1", "WS_Fibonacci") -- matches GAP server init
scscp_WS_FactorsInt = Left("scscp_transient_1", "WS_FactorsInt")
-- scscp_WS_Factors = Left("scscp_transient_1", "WS_Factors")
scscp_WS_Factors = Left("scscp_transient_1", "WS_FactorsStr") -- HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK
scscp_WS_FactorsStr = Left("scscp_transient_1", "WS_FactorsStr")
scscp_WS_GcdInt = Left("scscp_transient_1", "WS_GcdInt")
--scscp_WS_Bonzo = Left ("scscp_transient_1", "WS_Phi") -- matches GAP server init
scscp_WS_sumEulerClassic = Left("scscp_transient_1", "WS_sumEulerClassic")
scscp_WS_SumEulerRange = Left("scscp_transient_1", "WS_SumEulerRange")
scscp_WS_sumEulerList = Left("scscp_transient_1", "WS_sumEulerList")
scscp_WS_IdGroup = Left("scscp_transient_1", "WS_IdGroup")
scscp_WS_AutomorphismGroup = Left("scscp_transient_1", "WS_AutomorphismGroup")
-- ...
scscp_WS_RandomPolynomial = Left("scscp_transient_1", "WS_RandomPolynomial")
scscp_WS_RandomPolynomialAsString = Left("scscp_transient_1", "WS_RandomPolynomialAsString")
--scscp_WS_Karatsuba = Left("scscp_transient_1", "WS_Karatsuba")
scscp_WS_Polynomial2String = Left("scscp_transient_1", "WS_Polynomial2String")
scscp_WS_KaratsubaStr = Left("scscp_transient_1", "WS_KaratsubaStr")
scscp_WS_KaratsubaStr_x = Left("scscp_transient_1", "WS_KaratsubaStr_x")
scscp_WS_Karatsuba = Left ("scscp_transient_1","WS_Karatsuba")
scscp_WS_ProdPoly = Left("scscp_transient_1", "WS_ProdPoly")
scscp_WS_SumPoly = Left("scscp_transient_1", "WS_SumPoly")
--scscp_WS_KaratsubaGAPstr = Left ("scscp_transient_1","WS_Karatsuba") -- this uses strings as input, i.e. GAP specific
--scscp_WS_KaratsubaGAP = Left ("scscp_transient_1","HWL_Karatsuba")
--scscp_WS_Polynomial2String = Left ("scscp_transient_1", "HWL_Polynomial2String")
scscp_WS_Resultant = Left ("scscp_transient_1","WS_Resultant")
scscp_WS_Res = Left ("scscp_transient_1","WS_Res")
scscp_WS_GroebnerBasis = Left ("scscp_transient_1","WS_GroebnerBasis")
-----------------------------------------------------------------------------
-- Haskell services
scscp_HS_Phi = Left ("scscp_transient_2","euler")
scscp_HS_Fib = Left ("scscp_transient_2","fib")
scscp_HS_Factorial = Left ("scscp_transient_2","fact")
scscp_HS_FactorialAcc = Left ("scscp_transient_2","factAcc")
scscp_HS_Plus = Left ("scscp_transient_2","plus")
-- scscpSumEulerClassic = Left("scscp_transient_1", "WS_sumEulerClassic")
scscp_HS_ProductPoly = Left ("scscp_transient_2","productPoly")
scscp_HS_SumPoly = Left ("scscp_transient_2","sumPoly")
scscp_HS_DifferencePoly = Left ("scscp_transient_2","differencePoly")
scscp_HS_QuotientPoly = Left ("scscp_transient_2","quotientPoly")
scscp_HS_KaratsubaPoly = Left ("scscp_transient_2","karatsubaPoly")
-----------------------------------------------------------------------------
-- Coordination server
scscp_CS_Phi = Left ("scscp_transient_1", "CS_Phi")
scscp_CS_Fib = Left ("scscp_transient_1", "CS_Fib")
scscp_CS_Factorial = Left("scscp_transient_1", "CS_Factorial")
scscp_CS_GcdInt = Left("scscp_transient_1", "CS_GcdInt")
scscp_CS_GcdIntPar = Left("scscp_transient_1", "CS_GcdIntPar")
-- scscp_CS_GcdPoly = Left("scscp_transient_1", "CS_GcdPoly")
scscp_CS_GcdPolyPar = Left("scscp_transient_1", "CS_GcdPolyPar")
scscp_CS_SumEuler2 = Left("scscp_transient_1", "CS_sumEuler2") -- HACK: uses transient_1 to match with gap CLIENT
scscp_CS_SumEuler = Left("scscp_transient_1", "CS_SumEuler") -- HACK: uses transient_1 to match with gap CLIENT
scscp_CS_SumEulerPar = Left("scscp_transient_1", "CS_sumEulerPar") -- HACK: uses transient_1 to match with gap CLIENT
scscp_CS_SumEulerShuffle = Left ("scscp_transient_1","CS_sumEulerShuffleSCSCP") -- HACK: uses transient_1 to match with gap CLIENT
scscp_CS_RandomPolynomial = Left ("scscp_transient_1","CS_RandomPolynomial") -- pass through
scscp_CS_RandomPolynomialAsString = Left ("scscp_transient_1","CS_RandomPolynomialAsString") -- pass through
scscp_CS_Polynomial2String = Left("scscp_transient_1", "CS_Polynomial2String") -- pass through
scscp_CS_KaratsubaStr = Left("scscp_transient_1", "CS_KaratsubaStr") -- pass through
scscp_CS_KaratsubaStr_x = Left("scscp_transient_1", "CS_KaratsubaStr_x") -- pass through
scscp_CS_Karatsuba = Left ("scscp_transient_1","CS_Karatsuba") -- pass through
scscp_CS_KaratsubaPar = Left ("scscp_transient_1","CS_karatsubaParSCSCP")
scscp_CS_KaratsubaPar0 = Left ("scscp_transient_1","CS_karatsubaPar0SCSCP")
scscp_CS_ProdPoly = Left("scscp_transient_1", "CS_ProdPoly")
scscp_CS_SumPoly = Left("scscp_transient_1", "CS_SumPoly")
-- these are only passed through
scscp_CS_SumEulerClassic = Left ("scscp_transient_1","CS_sumEulerClassicSCSCP")
scscp_CS_Resultant = Left ("scscp_transient_1","CS_Resultant")
scscp_CS_Res = Left ("scscp_transient_1","CS_Res")
scscp_CS_Resultant2 = Left ("scscp_transient_1","CS_Resultant2")
scscp_CS_GroebnerBasis = Left ("scscp_transient_1","CS_GroebnerBasis")
-- skeletons
scscp_CS_ParProcesses1 = Left ("scscp_transient_1","CS_parProcesses1") -- run 1 givne services on given input lists
scscp_CS_ParProcesses2 = Left ("scscp_transient_1","CS_parProcesses2") -- run 2 given services on given input lists
scscp_CS_ParList = Left ("scscp_transient_1","CS_parList") -- parallel map
scscp_CS_ParMap = Left ("scscp_transient_1","CS_parMap") -- parallel map
scscp_CS_ParMap' = Left ("scscp_transient_1","CS_parMap'") -- parallel map
scscp_CS_ParMapFold = Left ("scscp_transient_1","CS_parMapFold") -- parallel fold-of-map
scscp_CS_ParMapFold1 = Left ("scscp_transient_1","CS_parMapFold1") -- parallel fold-of-map (non-empty list)
scscp_CS_ParZipWith = Left ("scscp_transient_1","CS_parZipWith") -- parallel zipWith
scscp_CS_Map = Left ("scscp_transient_1","CS_map") -- sequential map
scscp_CS_Map' = Left ("scscp_transient_1","CS_map'") -- sequential map
scscp_CS_MapFold = Left ("scscp_transient_1","CS_mapFold") -- sequential fold-of-map
scscp_CS_MapFold1 = Left ("scscp_transient_1","CS_mapFold1") -- sequential fold-of-map (non-empty list)
scscp_CS_ZipWith = Left ("scscp_transient_1","CS_zipWith") -- sequential zipWith
{-
-- some convenience short-cuts, good for interactive testing
s'prodPolyGB = scscpProductPoly
s'sumPolyGB = scscpSumPoly
s'diffPolyGB = scscpDifferencePoly
s'quotPolyGB = scscpQuotientPoly
s'karaGB = scscpKaratsuba
s'randPoly = scscpRandomPoly
s'poly2string = scscpPolynomial2String
s'kara = scscpKaratsubaGAP
s'kara' = scscpKaratsubaGAPstr
s'karaPar = scscpKaratsubaPar
s'sE = scscpSumEulerShuffle
s'sE2 = scscp_sumEuler2
s'sE' = scscpSumEulerClassic
-}