diff --git a/Makefile b/Makefile index 0e1e670a4b6e1a431279c7ed693d207ce30081c5..9b9877701f7ecbf048349904b27148c3f0b58808 100644 --- a/Makefile +++ b/Makefile @@ -40,3 +40,6 @@ ilp-noncached.scm: ilp.scm clean: rm -rf $(RACKET_BUILD_DIR)/* rm -rf $(LARCENY_BUILD_DIR)/* + +run: racket + fab call_racket:cli.scm,ag | tee ast-output.txt | head diff --git a/ast-generation.scm b/ast-generation.scm index a40b6c04dbf753ff263e6c07fc726bdda1bcad7d..6e7dbb6ef67f252956b6f502b296a96a82bb745f 100644 --- a/ast-generation.scm +++ b/ast-generation.scm @@ -7,13 +7,13 @@ (library (mquat ast-generation) (export create-hw create-sw create-system rand - freq-name load-name mp-name node-name make-prov make-req) + pn-freq pn-load mp-name node-name make-prov make-req) (import (rnrs) (racr core) (srfi :27) (mquat constants) (mquat ast) (mquat basic-ag) (mquat join) (mquat utils)) ;;; Reusable nodes and names - (define load-name "load") - (define freq-name "frequency") + (define pn-load "load") + (define pn-freq "frequency") (define mp-name "size") @@ -27,8 +27,8 @@ (lambda _ val))) (define (something v) v) - (define (make-prov property comparator value) (:ProvClause mquat-spec property comparator value)) - (define (make-req property comparator value) (:ReqClause mquat-spec property comparator value)) + (define (make-prov propname comparator value) (:ProvClause mquat-spec (:PropertyRef propname) comparator value)) + (define (make-req propname comparator value) (:ReqClause mquat-spec (:PropertyRef propname) comparator value)) ; return a proc or #f (define (create-clause udfs default-fun name) @@ -43,7 +43,7 @@ (define (create-hw load freq num-pe num-subs ud-clauses ud-types) (define types-al (list)) (define (make-type nr container?) (:ResourceType mquat-spec (node-name "type" (list nr)) container? - (list (:PropertyRef mquat-spec load) (:PropertyRef mquat-spec freq)))) + (list (:PropertyRef mquat-spec pn-load) (:PropertyRef mquat-spec pn-freq)))) (define (type nr container?) (let ([entry (assq nr types-al)]) (if entry (cdr entry) (let ([new (make-type nr container?)]) (set! types-al (cons (cons nr new) types-al)) new)))) @@ -55,8 +55,8 @@ #f))) (define (default-hw-clause-gen property-name) (cond - [(string=? property-name load-name) (list make-prov comp-eq (rand 50 2 0))] ; provided load = [0.01, 50.00] - [(string=? property-name freq-name) (list make-prov comp-eq (rand 1000 2 500))] ; provided freq = [500.01 - 1000.00] + [(string=? property-name pn-load) (list make-prov comp-eq (rand 50 2 0))] ; provided load = [0.01, 50.00] + [(string=? property-name pn-freq) (list make-prov comp-eq (rand 1000 2 500))] ; provided freq = [500.01 - 1000.00] [else (error "default-hw-clause-gen" "Wrong property" property-name)])) (letrec ([make-subs (lambda (outer-id total subs) (call-n-times (lambda (sub-n) @@ -79,8 +79,9 @@ (define (new-comp comp comp-nr) (set! last-comp-nr comp-nr) (set! last-comp comp)) (define energy (:RealProperty mquat-spec pn-energy "J" 'runtime 'decreasing agg-sum)) (define prop-al (list)) - (define (make-sw-prop n) (list (:RealProperty mquat-spec (node-name "p" (list n)) "unit" 'runtime 'increasing agg-max) - (:PropertyRef mquat-spec energy))) + (define (make-sw-prop n) (debug "make-sw-prop" n) + (list (:RealProperty mquat-spec (node-name "p" (list n)) "unit" 'runtime 'increasing agg-max) + (:PropertyRef mquat-spec pn-energy))) (define (prop n) (let ([entry (assq n prop-al)]) (if entry (cdr entry) (let ([new (make-sw-prop n)]) (set! prop-al (cons (cons n new) prop-al)) new)))) @@ -92,9 +93,9 @@ [comp-nr+1 (+ comp-nr 1)]) (cond ; required load max [50.01, 100.00] if valid!?, [0.01 - 100.00] otherwise - [(string=? property-name load-name) (list make-req comp-max-eq (if valid!? (rand 100 2 50) (rand 100 2 0)))] + [(string=? property-name pn-load) (list make-req comp-max-eq (if valid!? (rand 100 2 50) (rand 100 2 0)))] ; required freq min [0.01, 500.00] - [(string=? property-name freq-name) (list make-req comp-min-eq (rand 500 2 0))] + [(string=? property-name pn-freq) (list make-req comp-min-eq (rand 500 2 0))] ; provided prop-n = [5.01 - 10.00] if valid!?, [0.01 - 10.00] otherwise [(string=? property-name (->name (car ps))) (list make-prov comp-eq (if valid!? (rand 10 2 5) (rand 10 2 0)))] ; provided energy = [0.001 - 100.000] @@ -106,10 +107,12 @@ [create-sw-clause (lambda (udfs name comp-nr property) (let ([f (create-clause udfs default-sw-clause-gen name)] - [real-property (=real property)]) - (if f (let ([args (f (->name real-property) comp-nr)]) - (if (eq? args #t) (set! args (default-sw-clause-gen (->name real-property) comp-nr))) - (if args ((car args) real-property (cadr args) (caddr args)) #f)) #f)))] + [property-name (if (ast-subtype? property 'RealProperty) (->name property) (ast-child 'refname property))]) + (debug "create-sw-clause: f=" f ", propertyname =" property-name ) + (if f (let ([args (f property-name comp-nr)]) + (debug "create-sw-clause: args=" args) + (if (eq? args #t) (set! args (default-sw-clause-gen property-name comp-nr))) + (if args ((car args) property-name (cadr args) (caddr args)) #f)) #f)))] ; (car args) is either make-req or make-prov [ps (prop comp)] [name (node-name "m" (cons mode impl-lon))] [cls (filter something (list (create-sw-clause ud-clauses name comp load) @@ -136,10 +139,11 @@ (define (create-request target-property) (let* ([make-req (lambda (p maxVal digits offset) (:ReqClause mquat-spec p comp-min-eq (rand maxVal digits offset)))] [target (<<- target-property)]) + (debug "create-request: target-property = " target-property) (:Request mquat-spec (list (:MetaParameter mquat-spec mp-name ((rand 100 2 0)))) - target (list (make-req target-property 1 2 0)) #f))) + target (list (make-req target-property 1 2 0)) #f))) ;TODO: check type of target-property (terminal?, Property?) ; Creates a new system. ; num-pe: total number of resources @@ -170,8 +174,8 @@ (define (create-system1 num-pe num-pe-subs num-comp impl-per-comp mode-per-impl sw-reqc ud-sw-clauses ud-hw-clauses ud-types) (let* ([types-al (list)] [prop-al (list)] - [load (:RealProperty mquat-spec load-name "%" 'runtime 'decreasing agg-sum)] - [freq (:RealProperty mquat-spec freq-name "MHz" 'runtime 'increasing agg-max)] + [load (:RealProperty mquat-spec pn-load "%" 'runtime 'decreasing agg-sum)] + [freq (:RealProperty mquat-spec pn-freq "MHz" 'runtime 'increasing agg-max)] [sw-result (create-sw load freq num-comp impl-per-comp mode-per-impl ud-sw-clauses sw-reqc)] [sw-root (car sw-result)] [target-property (cdr sw-result)]) diff --git a/ast.scm b/ast.scm index 2dad022a3fbb0e63a5c90644bdeea84faa247265..e263bd515b44eecd10fc0627b9f70c3ff7af8fc9 100644 --- a/ast.scm +++ b/ast.scm @@ -13,7 +13,7 @@ ->Impl* ->selected-impl ; Comp ->Mode* ->deployed-on ->selected-mode ; Impl ->Clause* ; Mode - ->return-type ->comparator ; Clause + ->ReturnType ->comparator ; Clause ->ResourceType* ; HWRoot ->container? ; ResourceType ->type ->status ->ProvClause* ; Resource @@ -47,7 +47,7 @@ (define (->target n) (ast-child 'target n)) (define (->Constraints n) (ast-child 'Constraints n)) (define (->objective n) (ast-child 'objective n)) - (define (->return-type n) (ast-child 'returntype n)) + (define (->ReturnType n) (ast-child 'ReturnType n)) (define (->comparator n) (ast-child 'comp n)) (define (->value n) (ast-child 'value n)) (define (->unit n) (ast-child 'unit n)) @@ -82,10 +82,10 @@ (ast-rule 'Comp->name-Impl*-selectedimpl-Property*) (ast-rule 'Impl->name-Mode*-reqcomps-deployedon-selectedmode) (ast-rule 'Mode->name-Clause*) - ;value is a function, expecting an AST-List-Node with MetaParameters and the target resource type, returning the value - ;comp is a lambda expecting two values, required and actual, returning #t or #f - (ast-rule 'Clause->returntype-comp-value) + ; value is a function, expecting an AST-List-Node with MetaParameters and the target resource type, returning the value + ; comp is a lambda expecting two values, required and actual, returning #t or #f ; target is either a Comp or a ResourceType + (ast-rule 'Clause->PropertyRef<ReturnType-comp-value) (ast-rule 'ReqClause:Clause->) (ast-rule 'ProvClause:Clause->) (ast-rule 'HWRoot->ResourceType*-Resource*<SubResources-RealProperty*) diff --git a/basic-ag.scm b/basic-ag.scm index 1736b057f69167fd2177dd7cec01696f7c62ca8c..5b4663e2c1e7bba07ab0c73c20bac5e0d649dbf0 100644 --- a/basic-ag.scm +++ b/basic-ag.scm @@ -75,8 +75,8 @@ actual-value (ReqClause (lambda (n) - (let ([propName (->name (=real (->return-type n)))] - [target (<<- (=real (->return-type n)))]) + (let ([propName (->name (=real (->ReturnType n)))] + [target (<<- (=real (->ReturnType n)))]) ((->value (if (ast-subtype? target 'ResourceType) ; hw → search in deployedon for name and type (=provided-clause (->deployed-on (<=impl n)) propName target) @@ -122,7 +122,7 @@ (Property (lambda (n comparator) (filter (lambda (cl) (and (eq? comparator (->comparator cl)) (ast-subtype? cl 'ReqClause) - (eq? n (=real (->return-type cl))))) (=every-sw-clause n))))) + (eq? n (=real (->ReturnType cl))))) (=every-sw-clause n))))) ; =every-prov-clause: Return every provision clauses referencing this property and using the given comparator (ag-rule @@ -130,7 +130,7 @@ (Property (lambda (n comparator) (filter (lambda (cl) (and (eq? comparator (->comparator cl)) (ast-subtype? cl 'ProvClause) - (eq? n (=real (->return-type cl))))) (append (=every-sw-clause n) (=every-hw-clause n)))))) + (eq? n (=real (->ReturnType cl))))) (append (=every-sw-clause n) (=every-hw-clause n)))))) ; =every-container: Returns a list of every pe that can run software on it (ag-rule every-container (Root (lambda (n) (filter (lambda (pe) (->container? (->type pe))) (=every-pe n))))) @@ -179,8 +179,8 @@ ; =lookup-clause: Given a property, return the first clause referencing this property at this resource/mode (ag-rule lookup-clause - (Resource (lambda (n prop) (ast-find-child (lambda (i cl) (eq? (=real prop) (=real (->return-type cl)))) (->ProvClause* n)))) - (Mode (lambda (n prop) (ast-find-child (lambda (i cl) (eq? (=real prop) (=real (->return-type cl)))) (->Clause* n))))) + (Resource (lambda (n prop) (ast-find-child (lambda (i cl) (eq? (=real prop) (=real (->ReturnType cl)))) (->ProvClause* n)))) + (Mode (lambda (n prop) (ast-find-child (lambda (i cl) (eq? (=real prop) (=real (->ReturnType cl)))) (->Clause* n))))) ; =lookup-property: Given the name of the property, resolves to a RealProperty. Always invoke on Root. (ag-rule @@ -239,7 +239,7 @@ (if (eq? (->type n) type) ; if n has correct type ... (let ([found-clause (ast-find-child ; (1) ... then try to find a child in n ... - (lambda (index clause) (string=? (->name (=real (->return-type clause))) name)) + (lambda (index clause) (string=? (->name (=real (->ReturnType clause))) name)) (->ProvClause* n))]) (if found-clause ; (1.q) if a child was found ... found-clause ; (1.1) ... return it @@ -253,7 +253,7 @@ (ag-rule real (RealProperty (lambda (n) n)) - (PropertyRef (lambda (n) (=real (=lookup-property (<=root n) (ast-child 'refname n)))))) + (PropertyRef (lambda (n) (info n ", refname=" (ast-child 'refname n) ", hasParent=" (ast-has-parent? n)) (=real (=lookup-property (<=root n) (ast-child 'refname n)))))) ; =req-comp-map: Returns a associate list, mapping required components to a list of implementations requiring that component (ag-rule @@ -302,7 +302,7 @@ (debug "search" name "in" (->name n)) (ast-find-child (lambda (index clause) - (and (ast-subtype? clause subtype) (string=? (->name (=real (->return-type clause))) name))) + (and (ast-subtype? clause subtype) (string=? (->name (=real (->ReturnType clause))) name))) (->Clause* n))))) ; =search-pe: Search for a resource with the given name diff --git a/ilp-measurement.scm b/ilp-measurement.scm index d7b435edb9e01c2adf1a8088283b5e856fe5f08f..44dad7860bc024601a18020fa851e3f6375e721a 100644 --- a/ilp-measurement.scm +++ b/ilp-measurement.scm @@ -228,14 +228,14 @@ (->Property* (car (->* (->ResourceType* (->HWRoot ast)))))))] [find-prop-sw (lambda (name comp) (ast-find-child (lambda (i child) (string=? (->name (=real child)) name)) (->Property* comp)))] - [load (find-prop-hw load-name)] + [load (find-prop-hw pn-load)] [energy (find-prop-sw pn-energy (find-create-comp ast comp-nr))] [prev-p (and req-comp-nr (find-prop-sw (node-name "p" (list req-comp-nr)) (find-create-comp ast req-comp-nr)))] [this-p (find-prop-sw (node-name "p" (list comp-nr)) (find-create-comp ast comp-nr))] - [clauses (filter (lambda (c) c) (list (:ReqClause mquat-spec load comp-max-eq load-f) - (:ProvClause mquat-spec energy comp-max-eq energy-f) - (:ProvClause mquat-spec this-p comp-max-eq prov-f) - (and req-comp-nr (:ReqClause mquat-spec prev-p comp-max-eq prev-f))))] + [clauses (filter (lambda (c) c) (list (:ReqClause mquat-spec (:PropertyRef pn-load) comp-max-eq load-f) + (:ProvClause mquat-spec (:PropertyRef pn-energy) comp-max-eq energy-f) + (:ProvClause mquat-spec (:PropertyRef (->name this-p)) comp-max-eq prov-f) + (and req-comp-nr (:ReqClause mquat-spec (:PropertyRef (->name prev-p)) comp-max-eq prev-f))))] [new (:Mode mquat-spec (node-name "m" (list mode-nr impl-nr comp-nr)) clauses)]) (rewrite-add (->Mode* impl) new) new)) (define (comp-nr-of i) (ast-child-index (<=comp i))) @@ -334,7 +334,7 @@ (define (add-new-resource) (let* ([max-id (apply max (map (lambda (pe) (string->number (substring (->name pe) 2))) (=every-container ast)))] [first-clauses (->* (->ProvClause* (car (=every-container ast))))] - [new-clauses (map (lambda (cl) (make-prov (->return-type cl) (->comparator cl) (rand 50 2 0))) first-clauses)] ;TODO + [new-clauses (map (lambda (cl) (make-prov (:PropertyRef (ast-child 'refname (->ReturnType cl))) (->comparator cl) (rand 50 2 0))) first-clauses)] ;TODO [new-res (:Resource mquat-spec (string-append "r-" (number->string (+ 1 max-id))) rt online (list) new-clauses)]) (rewrite-add (->SubResources (->HWRoot ast)) new-res))) (define (update-change outer steps) @@ -376,7 +376,7 @@ (define (add-new-resource) (let* ([max-id (apply max (map (lambda (pe) (string->number (substring (->name pe) 2))) (=every-container ast)))] [first-clauses (->* (->ProvClause* (car (=every-container ast))))] - [new-clauses (map (lambda (cl) (make-prov (->return-type cl) (->comparator cl) (rand 50 2 0))) first-clauses)] ;TODO + [new-clauses (map (lambda (cl) (make-prov (:PropertyRef (ast-child 'refname (->ReturnType cl))) (->comparator cl) (rand 50 2 0))) first-clauses)] ;TODO [new-res (:Resource mquat-spec (string-append "r-" (number->string (+ 1 max-id))) rt online (list) new-clauses)]) (rewrite-add (->SubResources (->HWRoot ast)) new-res))) (define (update-change steps) diff --git a/ilp-test.scm b/ilp-test.scm index fd75c9f7da26c7f56c0ad30c454c97d1c586180a..16942e46e5aa1b79afc19952a020365fa36f61d0 100644 --- a/ilp-test.scm +++ b/ilp-test.scm @@ -44,15 +44,15 @@ (define (change-req-constraint ast name comparator new-value) (debug (->* (->Constraints (<=request ast)))) - (let ([clause (ast-find-child (lambda (i child) (string=? (->name (=real (->return-type child))) name)) + (let ([clause (ast-find-child (lambda (i child) (string=? (->name (=real (->ReturnType child))) name)) (->Constraints (<=request ast)))]) (rewrite-terminal 'value clause (lambda _ new-value)) (rewrite-terminal 'comp clause comparator))) (define (change-req-mp-value ast new-value) (rewrite-terminal 'value (car (->* (->MetaParameter* (<=request ast)))) new-value)) - (define no-freq-hw-clauses (lambda _ (lambda (p) (if (string=? freq-name p) #f (list make-prov comp-eq (lambda _ 0.5)))))) - (define no-freq-sw-clauses (lambda _ (lambda (p comp-nr) (if (string=? freq-name p) #f #t)))) + (define no-freq-hw-clauses (lambda _ (lambda (p) (if (string=? pn-freq p) #f (list make-prov comp-eq (lambda _ 0.5)))))) + (define no-freq-sw-clauses (lambda _ (lambda (p comp-nr) (if (string=? pn-freq p) #f #t)))) (define (run-test id-string) ; (set!no-frequency) ; only use property load for system creation @@ -597,7 +597,7 @@ ; Normally only deployable on resource of type-0 (which is only res-2) (let* ([hw-types (lambda (res-name) (if (or (string=? res-name "r-1") (string=? res-name "r-3")) (cons 1 #t) #f))] [load-f (lambda (lomp target) (if (string=? (->name target) "type-1") 0.3 0.7))] - [sw-clauses (lambda _ (lambda (p comp-nr) (if (string=? load-name p) (list make-req comp-max-eq load-f) + [sw-clauses (lambda _ (lambda (p comp-nr) (if (string=? pn-load p) (list make-req comp-max-eq load-f) ((no-freq-sw-clauses) p comp-nr))))] [ast (create-system 3 0 1 2 2 (list #f sw-clauses no-freq-hw-clauses hw-types))]) (change-sw-prov ast pn-energy (+ 10 (/ id 1e3)) "m-1-1-1") @@ -636,7 +636,7 @@ (define (add-resource name status prototype parent) (let* ([type (->type prototype)] [cs (->* (->ProvClause* prototype))] - [new-cs (map (lambda (c) (:ProvClause mquat-spec (->return-type c) (->comparator c) (->value c))) cs)]) + [new-cs (map (lambda (c) (:ProvClause mquat-spec (:PropertyRef (ast-child 'refname (->ReturnType c))) (->comparator c) (->value c))) cs)]) (rewrite-add (->SubResources parent) (:Resource mquat-spec name type status (list) new-cs)))) ; General description: New resources entering the system, enabling new configurations (let ([ast (create-system 2 0 1 1 2 (list #f no-freq-sw-clauses no-freq-hw-clauses #f))]) @@ -703,14 +703,14 @@ (->Property* (car (->* (->ResourceType* (->HWRoot ast)))))))] [find-prop-sw (lambda (name comp) (ast-find-child (lambda (i child) (string=? (->name (=real child)) name)) (->Property* comp)))] - [load (find-prop-hw load-name)] + [load (find-prop-hw pn-load)] [energy (find-prop-sw pn-energy (find-create-comp comp-nr))] [prev-p (and req-comp-nr (find-prop-sw (node-name "p" (list req-comp-nr)) (find-create-comp req-comp-nr)))] [this-p (find-prop-sw (node-name "p" (list comp-nr)) (find-create-comp comp-nr))] - [clauses (filter (lambda (c) c) (list (:ReqClause mquat-spec load comp-max-eq load-f) - (:ProvClause mquat-spec energy comp-max-eq energy-f) - (:ProvClause mquat-spec this-p comp-max-eq prov-f) - (and req-comp-nr (:ReqClause mquat-spec prev-p comp-max-eq prev-f))))] + [clauses (filter (lambda (c) c) (list (:ReqClause mquat-spec (:PropertyRef pn-load) comp-max-eq load-f) + (:ProvClause mquat-spec (:PropertyRef pn-energy) comp-max-eq energy-f) + (:ProvClause mquat-spec (:PropertyRef (->name this-p)) comp-max-eq prov-f) + (and req-comp-nr (:ReqClause mquat-spec (:PropertyRef (->name prev-p)) comp-max-eq prev-f))))] [new (:Mode mquat-spec (node-name "m" (list mode-nr impl-nr comp-nr)) clauses)]) (rewrite-add (->Mode* impl) new) new)) (define (prov-obj val id) (+ val (/ id 1e3))) @@ -767,7 +767,7 @@ [name->type-nr (lambda (type-name) (string->number (substring type-name 5 (string-length type-name))))] [load-f (lambda (lomp target) (case (name->type-nr (->name target)) [(0) 0.2] [(1) 0.4] [(2) 0.7] [else (error "load-f" "wrong type" (->name target))]))] - [sw-clauses (lambda _ (lambda (p comp-nr) (if (string=? load-name p) (list make-req comp-max-eq load-f) + [sw-clauses (lambda _ (lambda (p comp-nr) (if (string=? pn-load p) (list make-req comp-max-eq load-f) ((no-freq-sw-clauses) p comp-nr))))] [ast (create-system 30 3 1 1 2 (list #f sw-clauses no-freq-hw-clauses hw-types))]) (change-sw-prov ast pn-energy (+ 10 (/ id 1e3)) "m-1-1-1") @@ -854,11 +854,11 @@ (info "reqs" req-cls (length req-cls)) (info "provs" prov-cls (length prov-cls)) (for-each (lambda (cl) (info "comp" (eq? comp-max-eq (->comparator cl)) "sub" (ast-subtype? cl 'ReqClause) - "prop" (eq? p2 (=real (->return-type cl))))) (=every-sw-clause ast)) + "prop" (eq? p2 (=real (->ReturnType cl))))) (=every-sw-clause ast)) ; "clone" req-clauses cls in p1 and change new clauses to target new property - (for-each (lambda (cl) (rewrite-add (<- cl) (:ReqClause mquat-spec new-p (->comparator cl) (->value cl)))) req-cls) + (for-each (lambda (cl) (rewrite-add (<- cl) (:ReqClause mquat-spec (:PropertyRef (->name new-p)) (->comparator cl) (->value cl)))) req-cls) ; "clone" prov-clauses in p2 - (for-each (lambda (cl) (rewrite-add (<- cl) (:ProvClause mquat-spec new-p (->comparator cl) (->value cl)))) prov-cls) + (for-each (lambda (cl) (rewrite-add (<- cl) (:ProvClause mquat-spec (:PropertyRef (->name new-p)) (->comparator cl) (->value cl)))) prov-cls) ; adjust values, s.t. one impl fulfills req for first property only, second impl fulfills req for second property only (change-sw-req ast "p-2" comp-max-eq 10 "m-1-1-1" "m-1-2-1") (change-sw-req ast "new-p-2" comp-max-eq 10 "m-1-1-1" "m-1-2-1") diff --git a/ilp.scm b/ilp.scm index acd934793947db366eda4c1789b78ec0ac37a11d..f0a10639685075232dcc32942aa38e1574204f64 100644 --- a/ilp.scm +++ b/ilp.scm @@ -238,7 +238,7 @@ ; (if (and (ast-subtype? clause clausetype) (eq? (->comparator clause) comparator)) ; (fold-left ; fold over pe ; (lambda (inner pe) -; (add-to-al inner (=real (->return-type clause)) +; (add-to-al inner (=real (->ReturnType clause)) ; (list (=eval-on clause pe) (=ilp-binvar-deployed (<<- clause) pe)))) ;; (=ilp-eval-binvar clause pe))) ; result (=every-container n)) @@ -257,7 +257,7 @@ (if (and (ast-subtype? clause clausetype) (eq? (->comparator clause) comparator)) (fold-left ; fold over pe (lambda (inner pe) - (add-to-al inner (=real (->return-type clause)) + (add-to-al inner (=real (->ReturnType clause)) (list (=eval-on clause pe) (=ilp-binvar-deployed n pe)))) result (=every-container n)) result)) @@ -269,7 +269,7 @@ (fold-left (lambda (result clause) (if (eq? (->comparator clause) comparator) - (add-to-al result (=real (->return-type clause)) (list (=eval-on clause #f) "")) ;use arbitrary target #f + (add-to-al result (=real (->ReturnType clause)) (list (=eval-on clause #f) "")) ;use arbitrary target #f result)) (list) (->* (->Constraints n)))))) @@ -283,9 +283,9 @@ ; (Comp ; (lambda (n) ; → all properties required in here. ([prop (clause ... )] ... ) ; (fold-left -;; (lambda (result clause) (let ([prop (=real (->return-type clause))]) +;; (lambda (result clause) (let ([prop (=real (->ReturnType clause))]) ;; (if (member prop result) result (cons prop result)))) -; (lambda (result clause) (add-to-al result (=real (->return-type clause)) clause)) +; (lambda (result clause) (add-to-al result (=real (->ReturnType clause)) clause)) ; (list) (=every-clause-of n))))) ; ; (ag-rule @@ -345,12 +345,12 @@ (Clause (lambda (n pe) (att-value-compute 'ilp-eval-binvar) -; (let ([real-return-type (=real (->return-type n))]) +; (let ([real-ReturnType (=real (->ReturnType n))]) (debug "ilp-eval-binvar" n (->name pe)) -; (if (or (eq? (->type pe) (<<- real-return-type)) -; (ast-subtype? (<<- real-return-type) 'HWRoot)) +; (if (or (eq? (->type pe) (<<- real-ReturnType)) +; (ast-subtype? (<<- real-ReturnType) 'HWRoot)) (list (=eval-on n (->type pe)) (=ilp-binvar-deployed (<<- n) pe)) -; (begin (debug "not suitable" real-return-type pe) (list)))) +; (begin (debug "not suitable" real-ReturnType pe) (list)))) ))) ;empty pair if not a suitable clause (ag-rule @@ -361,7 +361,7 @@ (Clause (lambda (n) (att-value-compute 'required-hw-properties) - (let ([prop (=real (->return-type n))]) + (let ([prop (=real (->ReturnType n))]) (if (and (ast-subtype? n 'ReqClause) (=hw? prop)) (list (list (->comparator n) prop)) (list)))))) @@ -373,7 +373,7 @@ (Clause (lambda (n) (att-value-compute 'required-hw-clauses) - (let ([prop (=real (->return-type n))]) + (let ([prop (=real (->ReturnType n))]) (if (and (ast-subtype? n 'ReqClause) (=hw? prop)) (list (list (cons (->comparator n) prop) (list n))) (list)))))) diff --git a/mquat.scm b/mquat.scm index a66a906eca960900abbc102aa67d3fa8e0bda2fd..9a72fc8067b3e07876b59d1dd7736f7449948d97 100644 --- a/mquat.scm +++ b/mquat.scm @@ -56,13 +56,13 @@ ;; Software entities (define (make-mode workers particles) (:Mode ms (string-append "KLD-" (number->string workers) "-" (number->string particles)) - (list (:ProvClause ms sample-energy comp-max-eq (make-energy-f workers particles)) - (:ProvClause ms precision comp-min-eq (make-precision-f workers particles)) - (:ProvClause ms sample-response-time comp-max-eq (make-rt-f workers particles)) + (list (:ProvClause ms (:PropertyRef ms energy) comp-max-eq (make-energy-f workers particles)) + (:ProvClause ms (:PropertyRef (->name precision)) comp-min-eq (make-precision-f workers particles)) + (:ProvClause ms (:PropertyRef ms response-time) comp-max-eq (make-rt-f workers particles)) ))) (define modes (map make-mode (list 1 1 1 3 3 3 5 5 5) (list 300 500 700 300 500 700 300 500 700))) (define kld (:Impl ms "KLD" modes (list) #f #f)) -(define Sample (:Comp ms "Sampling" (list kld) #f (list precision sample-response-time sample-energy))) +(define Sample (:Comp ms "Sampling" (list kld) #f (list precision (:PropertyRef ms response-time) (:PropertyRef ms energy)))) (define ast (:Root ms @@ -82,12 +82,12 @@ (define (r id) (string-append "r-" (number->string id))) (define (update-request-constraints property property-value comparator) - (let ([clause? (ast-find-child (lambda (i n) (eq? (=real property) (=real (->return-type n)))) + (let ([clause? (ast-find-child (lambda (i n) (eq? (=real property) (=real (->ReturnType n)))) (->Constraints (<=request ast)))]) (if (and property-value (> 0 property-value)) (if clause? (rewrite-terminal 'value clause? (lambda _ property-value)) ; rewrite existing clause ; add new clause - (rewrite-add (->Constraints (<=request ast)) (:ReqClause ms property comparator (lambda _ property-value)))) + (rewrite-add (->Constraints (<=request ast)) (:ReqClause ms (:PropertyRef (->name (=real property))) comparator (lambda _ property-value)))) (when clause? (rewrite-delete clause?))))) ; delete existing clause (define (update-request-objective objective) diff --git a/properties.py b/properties.py index f64854ab03ab669372dc3a478fd686dbb3e9579e..355521e24abceb23f37dcc3a7e91f59f7e503aaf 100644 --- a/properties.py +++ b/properties.py @@ -65,12 +65,14 @@ def confirm(question, default_val = False): prompt = question if isinstance(default_val, bool): prompt += ' [{0}]'.format('Y/n' if default_val else 'y/N') + elif isinstance(default_val,int): + prompt += ' [{0}]'.format(default_val) answer = raw_input(prompt + ' ') if answer == '': answer = default_val if isinstance(default_val, bool): return answer in ('y','Y','yes','Yes',True) - if isinstance(default_val,int): + elif isinstance(default_val,int): return int(answer) return answer diff --git a/scheme.properties b/scheme.properties index 23f04c9e4567d80ee97a622d772c5332f7f4f285..f249126e1b985f01c8996bfd6603b3e619513712 100644 --- a/scheme.properties +++ b/scheme.properties @@ -3,7 +3,7 @@ timing = 0 log.info = 1 -log.debug = 0 +log.debug = 1 measure.lp.write = 0 measure.profiling = 1 measure.flush = 0 diff --git a/ui.scm b/ui.scm index d3d449a12d9b187bd65123975533fa06a2ab7f7c..d408d47356a5fe47ad5032a1c2f3f4bbbf0c5759 100644 --- a/ui.scm +++ b/ui.scm @@ -16,12 +16,12 @@ (define (clauses-to-list loc) (fold-left (lambda (result clause) - (let ([returnType (->name (=real (->return-type clause)))] + (let ([returnType (->name (=real (->ReturnType clause)))] [evalValue (=eval clause)] [compName (comp->rev-string (->comparator clause))]) (cons (if (ast-subtype? clause 'ProvClause) (list returnType compName evalValue) - (list returnType 'on (name-or-type (<<- (=real (->return-type clause)))) + (list returnType 'on (name-or-type (<<- (=real (->ReturnType clause)))) compName evalValue 'currently: (=actual-value clause))) result))) (list) loc))