diff --git a/Makefile b/Makefile index 9b9877701f7ecbf048349904b27148c3f0b58808..c1d0121468724fc362b69ff75e9823b4bef12b81 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ LDEPS := $(shell sed -e '1,/@sources:/d' -e '/^\#/d' dependencies.txt | while re # larceny builds everytime, so not included in default target all: racket -racket: $(RDEPS) Makefile +racket: $(RDEPS) @rm -f $(RACKET_BUILD_DIR)/mquat/ilp.ss larceny: $(LSRC) @@ -21,7 +21,7 @@ larceny: $(LSRC) @cp compile-stale $(LARCENY_BUILD_DIR)/mquat @cd $(LARCENY_BUILD_DIR)/mquat && larceny --r6rs --path ..:$(RACR_LARCENY_BIN) --program compile-stale -$(RACKET_BUILD_DIR)/mquat/%.ss: %.scm Makefile +$(RACKET_BUILD_DIR)/mquat/%.ss: %.scm @mkdir -p $(RACKET_BUILD_DIR) @rm -f $@ plt-r6rs ++path $(RACR_RACKET_BIN) --install --collections $(RACKET_BUILD_DIR) $< @@ -42,4 +42,4 @@ clean: rm -rf $(LARCENY_BUILD_DIR)/* run: racket - fab call_racket:cli.scm,ag | tee ast-output.txt | head + fab call_racket:cli.scm,ag | tee ast-output.txt | less diff --git a/ast-generation.scm b/ast-generation.scm index 6e7dbb6ef67f252956b6f502b296a96a82bb745f..d9aed7339d94bc7f03cc26fb6b3fe91be71c2d8d 100644 --- a/ast-generation.scm +++ b/ast-generation.scm @@ -27,8 +27,8 @@ (lambda _ val))) (define (something v) v) - (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)) + (define (make-prov propname comparator value) (:ProvClause mquat-spec (:PropertyRef mquat-spec propname) comparator value)) + (define (make-req propname comparator value) (:ReqClause mquat-spec (:PropertyRef mquat-spec propname) comparator value)) ; return a proc or #f (define (create-clause udfs default-fun name) diff --git a/ilp-measurement.scm b/ilp-measurement.scm index 44dad7860bc024601a18020fa851e3f6375e721a..b0331b0d9a7e7621404588ed7c33a55c88d418c2 100644 --- a/ilp-measurement.scm +++ b/ilp-measurement.scm @@ -232,10 +232,10 @@ [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 (: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))))] + [clauses (filter (lambda (c) c) (list (:ReqClause mquat-spec (:PropertyRef mquat-spec pn-load) comp-max-eq load-f) + (:ProvClause mquat-spec (:PropertyRef mquat-spec pn-energy) comp-max-eq energy-f) + (:ProvClause mquat-spec (:PropertyRef mquat-spec (->name this-p)) comp-max-eq prov-f) + (and req-comp-nr (:ReqClause mquat-spec (:PropertyRef mquat-spec (->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 (:PropertyRef (ast-child 'refname (->ReturnType cl))) (->comparator cl) (rand 50 2 0))) first-clauses)] ;TODO + [new-clauses (map (lambda (cl) (make-prov (:PropertyRef mquat-spec (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 (:PropertyRef (ast-child 'refname (->ReturnType cl))) (->comparator cl) (rand 50 2 0))) first-clauses)] ;TODO + [new-clauses (map (lambda (cl) (make-prov (:PropertyRef mquat-spec (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 16942e46e5aa1b79afc19952a020365fa36f61d0..4ca60813fe7c5c0642580dfe54b41ee5da9c0657 100644 --- a/ilp-test.scm +++ b/ilp-test.scm @@ -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 (:PropertyRef (ast-child 'refname (->ReturnType c))) (->comparator c) (->value c))) cs)]) + [new-cs (map (lambda (c) (:ProvClause mquat-spec (:PropertyRef mquat-spec (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))]) @@ -707,10 +707,10 @@ [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 (: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))))] + [clauses (filter (lambda (c) c) (list (:ReqClause mquat-spec (:PropertyRef mquat-spec pn-load) comp-max-eq load-f) + (:ProvClause mquat-spec (:PropertyRef mquat-spec pn-energy) comp-max-eq energy-f) + (:ProvClause mquat-spec (:PropertyRef mquat-spec (->name this-p)) comp-max-eq prov-f) + (and req-comp-nr (:ReqClause mquat-spec (:PropertyRef mquat-spec (->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))) @@ -856,9 +856,9 @@ (for-each (lambda (cl) (info "comp" (eq? comp-max-eq (->comparator cl)) "sub" (ast-subtype? cl 'ReqClause) "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 (:PropertyRef (->name new-p)) (->comparator cl) (->value cl)))) req-cls) + (for-each (lambda (cl) (rewrite-add (<- cl) (:ReqClause mquat-spec (:PropertyRef mquat-spec (->name new-p)) (->comparator cl) (->value cl)))) req-cls) ; "clone" prov-clauses in p2 - (for-each (lambda (cl) (rewrite-add (<- cl) (:ProvClause mquat-spec (:PropertyRef (->name new-p)) (->comparator cl) (->value cl)))) prov-cls) + (for-each (lambda (cl) (rewrite-add (<- cl) (:ProvClause mquat-spec (:PropertyRef mquat-spec (->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/mquat.scm b/mquat.scm index 9a72fc8067b3e07876b59d1dd7736f7449948d97..43a9cccb1c538e6222259e9c0e68eef57756700d 100644 --- a/mquat.scm +++ b/mquat.scm @@ -57,7 +57,7 @@ (define (make-mode workers particles) (:Mode ms (string-append "KLD-" (number->string workers) "-" (number->string 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 (->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))) @@ -87,7 +87,7 @@ (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 (:PropertyRef (->name (=real property))) comparator (lambda _ property-value)))) + (rewrite-add (->Constraints (<=request ast)) (:ReqClause ms (:PropertyRef ms (->name (=real property))) comparator (lambda _ property-value)))) (when clause? (rewrite-delete clause?))))) ; delete existing clause (define (update-request-objective objective)