{- Time-stamp: 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 -}