caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
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


  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;
as well as URLs for NNTP newsgroup(s).