From: Yann Regis-Gianas <yann.regisgianas@free.fr>
To: caml-list@inria.fr
Subject: Re: [Caml-list] partial eval question
Date: Mon, 27 Oct 2003 20:17:50 +0100 [thread overview]
Message-ID: <200310272017.50686.yann.regisgianas@free.fr> (raw)
In-Reply-To: <16285.15401.421786.814601@beertje.william.bogus>
William Chesters wrote :
> And that's an improvement over
>
> double pow(double x, int n) {
> double it = 1;
> while (--n >= 0) it *= x;
> return it;
> }
>
> double pow3(double x, int n) {
> return pow(x, 3);
> }
>
> in what way exactly? (If it doesn't work for you, try
> -funroll-all-loops.)
>
> For these kinds of purposes, Multi-Stage Programming is a very
> labour-intensive and error-prone way of doing what mainstream
> compilers will do for you already.
I agree with you that constant folding, inlining and unrolling are well known
by common compilers. However, when you want to _control_ these
optimisations, this is more difficult with standard optimizers since they are
black-boxes. For example, the benefit of these optimizations is linked with
the size of code, the processor type but also with the values of data (think
of the sparse matrix example). All these parameters cannot be managed by a
low level compiler optimizer.
In MetaOCaml, the general process of multi-stage evaluation enables the
user-control of optimization simply :
let k = eval_processor_capabilities ()
let rec pow n = function
| 1 -> .< fun x -> x >.
| n when n < k -> .< fun x -> x * .~(pow (n-1)) x>.
| n -> .< fun x -> x *. (.! (pow (n-1)) x >.
> Maybe it has useful applications
> in e.g. generation of numerical codes, where inlining, unrolling,
> "templatization" and partial evaluation are not enough because major
> structural transformations are required. But then, maybe
> sophisticated jobs like that are always going to be easiest done with
> special-purpose code generators?
By adding the multi-stage evaluation into a programming language, we obtain
one general, transparent and simple tool. Why should we develop or learn the
usage of many special-purpose optimizers ? Yes, some work has to be done to
enhance its user-friendliness but, in my opinion, this feature can be
relevant in many daily programming situations (not only optimization). There
are some papers about that, for example :
"Accomplishments and Research Challenges in Meta-programming".
Tim Sheard.
--
Yann Regis-Gianas.
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
next prev parent reply other threads:[~2003-10-27 19:18 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-10-27 1:41 Ben Kavanagh
2003-10-27 7:14 ` Damien
2003-10-27 15:39 ` William Chesters
2003-10-27 18:50 ` Andrew Lenharth
2003-10-27 19:12 ` William Chesters
2003-10-27 20:08 ` Jacques Carette
2004-02-04 3:03 ` Walid Taha
2003-10-27 22:11 ` Andrew Lenharth
2004-02-04 2:59 ` Walid Taha
2004-02-04 5:53 ` Andrew Lenharth
2004-02-05 21:29 ` Walid Taha
2003-10-27 19:17 ` Yann Regis-Gianas [this message]
2003-10-28 10:46 ` William Chesters
2004-02-04 2:22 ` Walid Taha
2004-02-04 2:56 ` Walid Taha
2003-10-28 15:09 ` Dmitry Lomov
2003-10-27 15:16 ` Vincent Balat [prof Moggi team]
2004-02-04 2:51 ` Walid Taha
2004-02-04 10:26 ` Ben Kavanagh
2004-02-04 10:32 ` Ben Kavanagh
2004-02-05 21:11 ` Walid Taha
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200310272017.50686.yann.regisgianas@free.fr \
--to=yann.regisgianas@free.fr \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox