Skip to content

Commit b433a05

Browse files
authored
Make generate-cost-model work (#6941)
* Make generate-cost-model work * Make generate-cost-model work * Move some code * Move some more code * Small update
1 parent 66b2402 commit b433a05

File tree

6 files changed

+42
-24
lines changed

6 files changed

+42
-24
lines changed

plutus-core/cost-model/create-cost-model/BuiltinMemoryModels.hs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,6 @@ builtinMemoryModels = BuiltinCostModelBase
110110
, paramHeadList = Id $ ModelOneArgumentConstantCost 32
111111
, paramTailList = Id $ ModelOneArgumentConstantCost 32
112112
, paramNullList = Id $ ModelOneArgumentConstantCost 32
113-
, paramLengthOfArray = Id $ ModelOneArgumentConstantCost 99
114-
, paramListToArray = Id $ ModelOneArgumentConstantCost 99
115-
, paramIndexArray = Id $ ModelTwoArgumentsConstantCost 99
116113
, paramChooseData = Id $ ModelSixArgumentsConstantCost 32
117114
, paramConstrData = Id $ ModelTwoArgumentsConstantCost 32
118115
, paramMapData = Id $ ModelOneArgumentConstantCost 32
@@ -176,5 +173,8 @@ builtinMemoryModels = BuiltinCostModelBase
176173
-- paramCaseList
177174
-- paramCaseData
178175
, paramDropList = Id $ ModelTwoArgumentsConstantCost 4
176+
, paramLengthOfArray = Id $ ModelOneArgumentConstantCost 99
177+
, paramListToArray = Id $ ModelOneArgumentConstantCost 99
178+
, paramIndexArray = Id $ ModelTwoArgumentsConstantCost 99
179179
}
180180
where identityFunction = OneVariableLinearFunction 0 1

plutus-core/cost-model/create-cost-model/CreateBuiltinCostModel.hs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,6 @@ builtinCostModelNames = BuiltinCostModelBase
7575
, paramHeadList = "headListModel"
7676
, paramTailList = "tailListModel"
7777
, paramNullList = "nullListModel"
78-
, paramDropList = "dropListModel"
79-
, paramLengthOfArray = "lengthOfArrayModel"
80-
, paramListToArray = "listToArrayModel"
81-
, paramIndexArray = "indexArrayModel"
8278
, paramChooseData = "chooseDataModel"
8379
, paramConstrData = "constrDataModel"
8480
, paramMapData = "mapDataModel"
@@ -129,6 +125,10 @@ builtinCostModelNames = BuiltinCostModelBase
129125
, paramFindFirstSetBit = "findFirstSetBitModel"
130126
, paramRipemd_160 = "ripemd_160Model"
131127
, paramExpModInteger = "expModIntegerModel"
128+
, paramDropList = "dropListModel"
129+
, paramLengthOfArray = "lengthOfArrayModel"
130+
, paramListToArray = "listToArrayModel"
131+
, paramIndexArray = "indexArrayModel"
132132
}
133133

134134

@@ -213,10 +213,6 @@ createBuiltinCostModel bmfile rfile = do
213213
paramHeadList <- getParams readCF1 paramHeadList
214214
paramTailList <- getParams readCF1 paramTailList
215215
paramNullList <- getParams readCF1 paramNullList
216-
-- Arrays
217-
paramLengthOfArray <- getParams readCF1 paramLengthOfArray
218-
paramListToArray <- getParams readCF1 paramListToArray
219-
paramIndexArray <- getParams readCF2 paramIndexArray
220216
-- Data
221217
paramChooseData <- getParams readCF6 paramChooseData
222218
paramConstrData <- getParams readCF2 paramConstrData
@@ -277,6 +273,10 @@ createBuiltinCostModel bmfile rfile = do
277273
-- paramCaseList
278274
-- paramCaseData
279275
paramDropList <- getParams readCF2 paramDropList
276+
-- Arrays
277+
paramLengthOfArray <- getParams readCF1 paramLengthOfArray
278+
paramListToArray <- getParams readCF1 paramListToArray
279+
paramIndexArray <- getParams readCF2 paramIndexArray
280280

281281
pure $ BuiltinCostModelBase {..}
282282

plutus-core/cost-model/data/benching-conway.csv

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11536,6 +11536,12 @@ DropList/1128/25015001,3.162749453267043e-6,3.162068091550841e-6,3.1636924811762
1153611536
DropList/207/25015001,1.3677632818657246e-6,1.366063566784575e-6,1.3702712053968081e-6,6.903273581765479e-9,4.89508668884939e-9,8.508124258033017e-9
1153711537
DropList/3959/25015001,8.706556596368919e-6,8.705731665456883e-6,8.707361328964902e-6,2.9039371832642988e-9,2.4578524757690477e-9,3.6454321543776463e-9
1153811538
DropList/1105/25015001,3.118675136929967e-6,3.118069043124161e-6,3.119277340025128e-6,2.124797971472072e-9,1.8136965951328366e-9,2.5336313519274434e-9
11539-
## Temporary fake data to allow us to cost dropList
11539+
## Temporary fake data to allow us to cost some missing builtins
1154011540
ExpModInteger/1/1/1,8.706556596368919e-6,8.705731665456883e-6,8.707361328964902e-6,2.9039371832642988e-9,2.4578524757690477e-9,3.6454321543776463e-9
11541-
ExpModInteger/2/2/2,3.118675136929967e-6,3.118069043124161e-6,3.119277340025128e-6,2.124797971472072e-9,1.8136965951328366e-9,2.533631351
11541+
ExpModInteger/2/2/2,3.118675136929967e-6,3.118069043124161e-6,3.119277340025128e-6,2.124797971472072e-9,1.8136965951328366e-9,2.533631351
11542+
LengthOfArray/1,8.706556596368919e-6,8.705731665456883e-6,8.707361328964902e-6,2.9039371832642988e-9,2.4578524757690477e-9,3.6454321543776463e-9
11543+
LengthOfArray/2,3.118675136929967e-6,3.118069043124161e-6,3.119277340025128e-6,2.124797971472072e-9,1.8136965951328366e-9,2.533631351
11544+
ListToArray/1,3.118675136929967e-6,3.118069043124161e-6,3.119277340025128e-6,2.124797971472072e-9,1.8136965951328366e-9,2.533631351
11545+
ListToArray/2,8.118675136929967e-6,8.118069043124161e-6,8.119277340025128e-6,2.124797971472072e-9,1.8136965951328366e-9,2.533631351
11546+
IndexArray/1/1,3.118675136929967e-6,3.118069043124161e-6,3.119277340025128e-6,2.124797971472072e-9,1.8136965951328366e-9,2.533631351
11547+
IndexArray/2/2,8.118675136929967e-6,8.118069043124161e-6,8.119277340025128e-6,2.124797971472072e-9,1.8136965951328366e-9,2.533631351

plutus-core/cost-model/data/models.R

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,10 @@ arity <- function(name) {
145145
"CountSetBits" = 1,
146146
"FindFirstSetBit" = 1,
147147
"ExpModInteger" = 3,
148-
"DropList" = 2
148+
"DropList" = 2,
149+
"LengthOfArray" = 1,
150+
"ListToArray" = 1,
151+
"IndexArray" = 2
149152
)
150153
}
151154

@@ -654,7 +657,6 @@ modelFun <- function(path) {
654657
headListModel <- constantModel ("HeadList")
655658
tailListModel <- constantModel ("TailList")
656659
nullListModel <- constantModel ("NullList")
657-
dropListModel <- linearInX ("DropList")
658660

659661
##### Data #####
660662

@@ -781,6 +783,13 @@ modelFun <- function(path) {
781783
countSetBitsModel <- linearInX ("CountSetBits")
782784
findFirstSetBitModel <- linearInX ("FindFirstSetBit")
783785

786+
dropListModel <- linearInX ("DropList")
787+
788+
## Arrays - TEMPORARY, but probably right
789+
lengthOfArrayModel <- constantModel ("LengthOfArray")
790+
listToArrayModel <- linearInX ("ListToArray")
791+
indexArrayModel <- constantModel ("IndexArray")
792+
784793

785794
##### Models to be returned to Haskell #####
786795

@@ -870,7 +879,10 @@ modelFun <- function(path) {
870879
findFirstSetBitModel = findFirstSetBitModel,
871880
ripemd_160Model = ripemd_160Model,
872881
expModIntegerModel = expModIntegerModel,
873-
dropListModel = dropListModel
882+
dropListModel = dropListModel,
883+
lengthOfArrayModel = lengthOfArrayModel,
884+
listToArrayModel = listToArrayModel,
885+
indexArrayModel = indexArrayModel
874886
)
875887

876888
## The integer division functions have a complex costing behaviour that requires some negative

plutus-core/plutus-core/src/PlutusCore/Evaluation/Machine/BuiltinCostModel.hs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,6 @@ data BuiltinCostModelBase f =
127127
, paramHeadList :: f ModelOneArgument
128128
, paramTailList :: f ModelOneArgument
129129
, paramNullList :: f ModelOneArgument
130-
-- Arrays
131-
, paramLengthOfArray :: f ModelOneArgument
132-
, paramListToArray :: f ModelOneArgument
133-
, paramIndexArray :: f ModelTwoArguments
134130
-- Data
135131
, paramChooseData :: f ModelSixArguments
136132
, paramConstrData :: f ModelTwoArguments
@@ -191,6 +187,10 @@ data BuiltinCostModelBase f =
191187
-- , paramCaseList here
192188
-- , paramCaseData here
193189
, paramDropList :: f ModelTwoArguments
190+
-- Arrays
191+
, paramLengthOfArray :: f ModelOneArgument
192+
, paramListToArray :: f ModelOneArgument
193+
, paramIndexArray :: f ModelTwoArguments
194194
}
195195
deriving stock (Generic)
196196
deriving anyclass (FunctorB, TraversableB, ConstraintsB)

plutus-core/plutus-core/src/PlutusCore/Evaluation/Machine/ExBudgetingDefaults.hs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -288,10 +288,6 @@ unitCostBuiltinCostModel = BuiltinCostModelBase
288288
, paramHeadList = unitCostOneArgument
289289
, paramTailList = unitCostOneArgument
290290
, paramNullList = unitCostOneArgument
291-
-- Arrays
292-
, paramLengthOfArray = unitCostOneArgument
293-
, paramListToArray = unitCostOneArgument
294-
, paramIndexArray = unitCostTwoArguments
295291
-- Data
296292
, paramChooseData = unitCostSixArguments
297293
, paramConstrData = unitCostTwoArguments
@@ -352,6 +348,10 @@ unitCostBuiltinCostModel = BuiltinCostModelBase
352348
-- paramCaseList
353349
-- paramCaseData
354350
, paramDropList = unitCostTwoArguments
351+
-- Arrays
352+
, paramLengthOfArray = unitCostOneArgument
353+
, paramListToArray = unitCostOneArgument
354+
, paramIndexArray = unitCostTwoArguments
355355
}
356356

357357
unitCekParameters :: Typeable ann => MachineParameters CekMachineCosts DefaultFun (CekValue DefaultUni DefaultFun ann)

0 commit comments

Comments
 (0)