Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kwxm/multi cost model benchmark test #6063

Closed
wants to merge 16 commits into from
12 changes: 6 additions & 6 deletions plutus-benchmark/common/PlutusBenchmark/Common.hs
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ unsafeRunTermCek :: Term -> EvaluationResult Term
unsafeRunTermCek =
unsafeExtractEvaluationResult
. (\(res, _, _) -> res)
. runCekDeBruijn PLC.defaultCekParameters Cek.restrictingEnormous Cek.noEmitter
. runCekDeBruijn PLC.defaultCekParametersForTesting Cek.restrictingEnormous Cek.noEmitter

-- | Just run a term.
runTermCek ::
Expand All @@ -128,12 +128,12 @@ runTermCek ::
)
runTermCek =
(\(res, _, logs) -> (res, logs))
. runCekDeBruijn PLC.defaultCekParameters Cek.restrictingEnormous Cek.logEmitter
. runCekDeBruijn PLC.defaultCekParametersForTesting Cek.restrictingEnormous Cek.logEmitter

-- | Evaluate a script and return the CPU and memory costs (according to the cost model)
getCostsCek :: UPLC.Program UPLC.NamedDeBruijn DefaultUni DefaultFun () -> (Integer, Integer)
getCostsCek (UPLC.Program _ _ prog) =
case Cek.runCekDeBruijn PLC.defaultCekParameters Cek.tallying Cek.noEmitter prog of
case Cek.runCekDeBruijn PLC.defaultCekParametersForTesting Cek.tallying Cek.noEmitter prog of
(_res, Cek.TallyingSt _ budget, _logs) ->
let ExBudget (ExCPU cpu)(ExMemory mem) = budget
in (fromSatInt cpu, fromSatInt mem)
Expand All @@ -158,14 +158,14 @@ cekResultMatchesHaskellValue term matches value =
-- deliberately not including it in the benchmarks.
mkEvalCtx :: LedgerApi.EvaluationContext
mkEvalCtx =
case PLC.defaultCostModelParams of
case PLC.defaultCostModelParamsForTesting of
Just p ->
let errOrCtx =
-- The validation benchmarks were all created from PlutusV1 scripts
LedgerApi.mkDynEvaluationContext
LedgerApi.PlutusV1
[DefaultFunSemanticsVariant1]
(const DefaultFunSemanticsVariant1)
[DefaultFunSemanticsVariantC]
(const DefaultFunSemanticsVariantC)
p
in case errOrCtx of
Right ec -> ec
Expand Down
2 changes: 1 addition & 1 deletion plutus-benchmark/lists/exe/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import UntypedPlutusCore.Evaluation.Machine.Cek qualified as Cek
getBudgetUsage :: Term -> Maybe Integer
getBudgetUsage term =
case (\ (fstT,sndT,_) -> (fstT,sndT) ) $
Cek.runCekDeBruijn PLC.defaultCekParameters Cek.counting Cek.noEmitter term
Cek.runCekDeBruijn PLC.defaultCekParametersForTesting Cek.counting Cek.noEmitter term
of
(Left _, _) -> Nothing
(Right _, Cek.CountingSt c) ->
Expand Down
7 changes: 5 additions & 2 deletions plutus-benchmark/nofib/exe/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,10 @@ options = hsubparser
---------------- Evaluation ----------------

evaluateWithCek :: UPLC.Term UPLC.NamedDeBruijn DefaultUni DefaultFun () -> UPLC.EvaluationResult (UPLC.Term UPLC.NamedDeBruijn DefaultUni DefaultFun ())
evaluateWithCek = UPLC.unsafeExtractEvaluationResult . (\(fstT,_,_) -> fstT) . UPLC.runCekDeBruijn PLC.defaultCekParameters UPLC.restrictingEnormous UPLC.noEmitter
evaluateWithCek =
UPLC.unsafeExtractEvaluationResult
. (\(fstT,_,_) -> fstT)
. UPLC.runCekDeBruijn PLC.defaultCekParametersForTesting UPLC.restrictingEnormous UPLC.noEmitter

writeFlatNamed :: UPLC.Program UPLC.NamedDeBruijn DefaultUni DefaultFun () -> IO ()
writeFlatNamed prog = BS.putStr . Flat.flat . UPLC.UnrestrictedProgram $ prog
Expand Down Expand Up @@ -249,7 +252,7 @@ measureBudget compiledCode =
in case programE of
Left _ -> (-1,-1) -- Something has gone wrong but I don't care.
Right program ->
let (_, UPLC.TallyingSt _ budget) = UPLC.runCekNoEmit PLC.defaultCekParameters UPLC.tallying $ program ^. UPLC.progTerm
let (_, UPLC.TallyingSt _ budget) = UPLC.runCekNoEmit PLC.defaultCekParametersForTesting UPLC.tallying $ program ^. UPLC.progTerm
ExCPU cpu = exBudgetCPU budget
ExMemory mem = exBudgetMemory budget
in (fromSatInt cpu, fromSatInt mem)
Expand Down
4 changes: 2 additions & 2 deletions plutus-conformance/agda/Spec.hs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import PlutusCore.Default (DefaultFun, DefaultUni)
import PlutusCore.Evaluation.Machine.CostModelInterface (CekMachineCosts, CostModelParams,
applyCostModelParams)
import PlutusCore.Evaluation.Machine.ExBudget (ExBudget (..))
import PlutusCore.Evaluation.Machine.ExBudgetingDefaults (defaultCekCostModel)
import PlutusCore.Evaluation.Machine.ExBudgetingDefaults (defaultCekCostModelForTesting)
import PlutusCore.Evaluation.Machine.ExMemory (ExCPU (..), ExMemory (..))
import PlutusCore.Evaluation.Machine.MachineParameters (CostModel (..))
import PlutusCore.Evaluation.Machine.SimpleBuiltinCostModel (BuiltinCostKeyMap, BuiltinCostMap,
Expand Down Expand Up @@ -42,7 +42,7 @@ type RawCostModel = (CekMachineCosts, BuiltinCostMap)
toRawCostModel :: CostModelParams -> RawCostModel
toRawCostModel params =
let CostModel machineCosts builtinCosts =
case applyCostModelParams defaultCekCostModel params of
case applyCostModelParams defaultCekCostModelForTesting params of
Left e -> error $ show e
Right r -> r

Expand Down
4 changes: 2 additions & 2 deletions plutus-conformance/haskell-steppable/Spec.hs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
module Main (main) where

import PlutusConformance.Common
import PlutusCore.Evaluation.Machine.ExBudgetingDefaults (defaultCekParameters)
import PlutusCore.Evaluation.Machine.ExBudgetingDefaults (defaultCekParametersForTesting)
import UntypedPlutusCore as UPLC
import UntypedPlutusCore.Evaluation.Machine.SteppableCek qualified as SCek

Expand All @@ -20,7 +20,7 @@ evalSteppableUplcProg = UplcEvaluatorWithoutCosting $ traverseOf UPLC.progTerm $
case UPLC.deBruijnTerm t of
Left (_ :: UPLC.FreeVariableError) -> Nothing
Right _ -> Just ()
case SCek.evaluateCekNoEmit defaultCekParameters t of
case SCek.evaluateCekNoEmit defaultCekParametersForTesting t of
Left _ -> Nothing
Right prog -> Just prog

Expand Down
4 changes: 2 additions & 2 deletions plutus-conformance/src/PlutusConformance/Common.hs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import PlutusCore.Default (DefaultFun, DefaultUni)
import PlutusCore.Error (ParserErrorBundle)
import PlutusCore.Evaluation.Machine.CostModelInterface
import PlutusCore.Evaluation.Machine.ExBudget
import PlutusCore.Evaluation.Machine.ExBudgetingDefaults (defaultCostModelParams)
import PlutusCore.Evaluation.Machine.ExBudgetingDefaults (defaultCostModelParamsForTesting)
import PlutusCore.Name.Unique (Name)
import PlutusCore.Quote (runQuoteT)
import PlutusPrelude (Pretty (pretty), display, void)
Expand Down Expand Up @@ -219,7 +219,7 @@ runUplcEvalTests ::
-- whether it should labelled as `ExpectedFailure`.
-> IO ()
runUplcEvalTests eval expectedFailTests = do
let params = fromJust defaultCostModelParams
let params = fromJust defaultCostModelParamsForTesting
tests <-
discoverTests
eval
Expand Down
6 changes: 3 additions & 3 deletions plutus-core/cost-model/budgeting-bench/Benchmarks/Nops.hs
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ nopCostModel =
nopCostParameters :: MachineParameters CekMachineCosts NopFun (CekValue DefaultUni NopFun ())
nopCostParameters =
mkMachineParameters def $
CostModel defaultCekMachineCosts nopCostModel
CostModel defaultCekMachineCostsForTesting nopCostModel

-- This is just to avoid some deeply nested case expressions for the NopNc
-- functions below. There is a Monad instance for EvaluationResult, but that
Expand Down Expand Up @@ -153,7 +153,7 @@ n >: k =
instance uni ~ DefaultUni => ToBuiltinMeaning uni NopFun where
type CostingPart uni NopFun = NopCostModel

data BuiltinSemanticsVariant NopFun = NopFunSemanticsVariant1
data BuiltinSemanticsVariant NopFun = NopFunSemanticsVariantX

-- Built-in Bools
toBuiltinMeaning
Expand Down Expand Up @@ -287,7 +287,7 @@ instance uni ~ DefaultUni => ToBuiltinMeaning uni NopFun where
(runCostingFunSixArguments . paramNop6)

instance Default (BuiltinSemanticsVariant NopFun) where
def = NopFunSemanticsVariant1
def = NopFunSemanticsVariantX

---------------- Benchmarks ----------------

Expand Down
3 changes: 2 additions & 1 deletion plutus-core/cost-model/budgeting-bench/Common.hs
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,9 @@ benchWith params name term = bench name $ whnf (unsafeEvaluateCekNoEmit params)
back a 'Data' value it'll traverse all of it.
-}

{- Benchmark with the most recent CekParameters -}
benchDefault :: String -> PlainTerm DefaultUni DefaultFun -> Benchmark
benchDefault = benchWith defaultCekParameters
benchDefault = benchWith defaultCekParametersForTesting


---------------- Constructing Polymorphic PLC terms for benchmarking ----------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ builtinMemoryModels = BuiltinCostModelBase
, paramMultiplyInteger = Id $ ModelTwoArgumentsAddedSizes $ OneVariableLinearFunction 0 1
, paramDivideInteger = Id $ ModelTwoArgumentsSubtractedSizes $ ModelSubtractedSizes 0 1 1
, paramQuotientInteger = Id $ ModelTwoArgumentsSubtractedSizes $ ModelSubtractedSizes 0 1 1
, paramRemainderInteger = Id $ ModelTwoArgumentsSubtractedSizes $ ModelSubtractedSizes 0 1 1
, paramModInteger = Id $ ModelTwoArgumentsSubtractedSizes $ ModelSubtractedSizes 0 1 1
, paramRemainderInteger = Id $ ModelTwoArgumentsLinearInY $ OneVariableLinearFunction 0 1
, paramModInteger = Id $ ModelTwoArgumentsLinearInY $ OneVariableLinearFunction 0 1
, paramEqualsInteger = Id $ boolMemModel
, paramLessThanInteger = Id $ boolMemModel
, paramLessThanEqualsInteger = Id $ boolMemModel
Expand Down
1 change: 1 addition & 0 deletions plutus-core/cost-model/create-cost-model/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ benchmarkFile = namedBenchmarkFile <|> pure defaultBenchmarkFile
namedBenchmarkFile :: Parser BenchmarkFile
namedBenchmarkFile = BenchmarkFile <$> strOption
( long "csv"
<> short 'i'
<> metavar "FILENAME"
<> help "CSV file containing built-in function benchmark results")

Expand Down
Loading