From: Chris Hecker <checker@d6.com>
To: "O'Caml Mailing List" <caml-list@inria.fr>
Subject: Re: [Caml-list] Bigarray map & set/get (long)
Date: Wed, 24 Jul 2002 20:02:04 -0700 [thread overview]
Message-ID: <4.3.2.7.2.20020724194422.028aa970@mail.d6.com> (raw)
In-Reply-To: <20020722113136.A10720@pauillac.inria.fr>
>In the applications for which Bigarray was initially intended, the
>Caml code that manipulates directly the bigarrays isn't
>time-critical: the time-critical computations are done by external
>libraries such as BLAS, Lapack, etc. Your matrix multiplication code
>is a good example: if you care about its performances, then you need
>to make it a lot more sophisticated so that it will be cache-friendly
>(e.g. blocking); better use an existing, well-tuned C or Fortran
>implementation than try to do your own in Caml.
The problem with this is that sometimes you don't want the discontinuity
and inconvenience of calling to C. Obviously, it'd be nice if we could do
everything in ocaml from a simplicity and consistency standpoint, assuming
it's not an infinite amount of work to get there.
There is an important middle ground between "not caring about speed" and
"needing the highest end BLAS performance", and since CPUs are making bad
code fast faster than they're making good code fast, the middle ground is
moving higher up the importance ladder, and getting easier to attain.
When I looked at it a few months ago, there actually only seem to be a few
things that are needed to make bigarrays as efficient as C float * arrays
for most operations. I don't have my list handy, but when I get around to
optimizing my game I hope to implement some of these into the
compiler. Off the top of my head, I think bounds checking made a
measurable difference, as did the indirection in the way the bigarray
header structures are stored on the heap (even when they're going through
the optimized path in the compiler), and it would be easier to write a
lapack-style modularized matrix library if there was the concept of taking
a "pointer" into a 1D bigarray that was lower level than the currently
exising slice and subarray stuff (so that you can pass a pointer to a
submatrix + a stride around).
Chris
-------------------
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:[~2002-07-25 3:23 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-07-19 13:59 Christophe TROESTLER
2002-07-20 18:29 ` Daniel de Rauglaudre
2002-07-21 0:45 ` Oleg
2002-07-22 13:30 ` [Caml-list] Bigarray map & set/get Christophe TROESTLER
2002-07-22 9:31 ` [Caml-list] Bigarray map & set/get (long) Xavier Leroy
2002-07-22 13:03 ` [Caml-list] Bigarray map & set/get Christophe TROESTLER
2002-07-22 15:43 ` [Caml-list] Bigarray map & set/get (long) Fernando Alegre
2002-07-25 3:02 ` Chris Hecker [this message]
2002-07-25 9:30 ` Xavier Leroy
2002-07-25 18:11 ` Chris Hecker
2002-07-26 5:44 ` Michael Vanier
2002-07-26 22:33 ` wanted features (was: Re: [Caml-list] Bigarray map & set/get (long)) Chris Hecker
2002-07-26 22:40 ` Michael Vanier
2002-07-26 22:44 ` Chris Hecker
2002-07-27 0:28 ` Michael Vanier
2002-07-27 0:32 ` Chris Hecker
2002-07-27 10:53 ` Dimitri Ara
2002-07-27 12:06 ` Dimitri Ara
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=4.3.2.7.2.20020724194422.028aa970@mail.d6.com \
--to=checker@d6.com \
--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