;;; .EnTete "Le-Lisp (c) version 15.2" " " "Test du Scheduler"
;;; .EnPied "testsched.ll" "%" " "
;;;
;;; .SuperTitre "Test du Scheduler"
;;;
;;;
;;; .Centre "*****************************************************************"
;;; .Centre " Ce fichier est en lecture seule hors du projet ALE de l'INRIA. "
;;; .Centre " Il est maintenu par ILOG SA, 2 Avenue Gallie'ni, 94250 Gentilly "
;;; .Centre " (c) Le-Lisp est une marque de'pose'e de l'INRIA "
;;; .Centre "*****************************************************************"
;;;
;;; .Centre "$Header: testsched.ll,v 4.1 88/01/13 12:32:35 kuczynsk Rel $"
(unless (>= (version) 15.2)
(error 'load 'erricf 'testread))
(de ppr (l)
(while (cdr l)
(repeat 10000 ())
(prin " " (nextl l)))
(prin " " (nextl l)))
(de tppr ()
(parallel (ppr '(a b c d e f)) (ppr '(1 2 3 4 5 6 7 8 9))))
(print "faire (tppr)")
; .Section "Test de 'tryinparallel'"
; .SSection "En dynamique"
(de neg (n)
(if (= n 0)
'negatif
(neg (1+ n))))
(de pos (n)
(if (= n 0)
'positif
(pos (1- n))))
(de sign (n)
; A LANCER elle est vraiment belle cette fonction ...
(if (= n 0)
'zero
(tryinparallel (neg n) (pos n))))
(print "faire (sign 10000) et (sign -10000)")
; .SSection "en lexical"
(de lneg (n)
(prog ((i 0))
re (if (= i n)
(return 'negatif)
(setq i (- i 1))
(go re))))
(de lpos (n)
(prog ((i 0))
re (if (= i n)
(return 'positif)
(setq i (+ i 1))
(go re))))
(de lsign (n)
; A LANCER elle est vraiment belle cette fonction ...
(if (= n 0)
'zero
(tryinparallel (lneg n) (lpos n))))
(print "faire (lsign 10000) et (lsign -10000)")
; .Section "test de parallelvalues"
(de 2**N (n)
(cond ((= n 0) 1)
((= n 1) 2)
((letparallel ((n1 (2**N (div n 2)))
(n2 (2**N (- n (div n 2)))))
(* n1 n2)))))
(de fib (n)
(cond ((= n 1) 1)
((= n 2) 1)
(t (apply '+ (parallelvalues (fib (1- n)) (fib (- n 2))))))))
(de nfib (n)
(cond ((= n 1) 1)
((= n 2) 1)
(t (apply '+ (list (nfib (1- n)) (nfib (- n 2)))))))
(de tpprv ()
(parallelvalues (ppr '(a b c d e f))
(ppr '(x y z))
(ppr '(1 2 3 4 5 6 7 8 9))
(ppr '(10))))
(de testb ()
(let ((l '(f 20)) (v ()))
(while t
(schedule (lambda (vv) (setq v vv))
(if l
(eval (nextl l))
(resume v)))))))
(de tp ()
; A LANCER
(tycls)
(parallel (voir #/.) (voir #/ ) (voir #/*) (voir #/O)))
(de voir (c)
(loop (tycursor (random 0 (tyxmax)) (random 0 (tyymax)))
(tyo c)
(tyflush)))
(print "faire (tp)")
(print "faire (2**N 10), (fib 14), (tpprv)")
(print "L'horloge est lancee tout les " (clockstart) " secondes")