caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Fernando Alegre <fernando@cc.gatech.edu>
To: Xavier Leroy <xavier.leroy@inria.fr>
Cc: Christophe TROESTLER <Christophe.Troestler@umh.ac.be>,
	"O'Caml Mailing List" <caml-list@inria.fr>
Subject: Re: [Caml-list] Bigarray map & set/get (long)
Date: Mon, 22 Jul 2002 11:43:25 -0400	[thread overview]
Message-ID: <20020722154325.GH2940@oso.local> (raw)
In-Reply-To: <20020722113136.A10720@pauillac.inria.fr>

On Mon, Jul 22, 2002 at 11:31:36AM +0200, Xavier Leroy wrote:

> Put it another way, bigarrays are oriented towards efficient
> communications with external libraries, not towards writing efficient
> numerical code in Caml; for the latter purpose, regular arrays are

However, the current implementation of bigarrays does not cooperate
with libraries that need to manage the memory allocation in special ways.
Some efficient libraries need special malloc and free that align the data
for faster cache use. But current bigarrays are unsafe in that kind of
setting. We had modify the source code of bigarrays (alloc and update_proxy)
so that proxies are also updated for externally allocated bigarrays, and
created custom bigarray_alloc and bigarray_finalize.


> 
> > * Are bound checks responsible for the difference between the "fully
> >   typed" version [mac (out:mat) (a:mat) (b:mat) (c:mat)] and C??
> 
> Partially responsible, but another source of overhead is the
> address computations when accessing a big array: these involve linear
> formulas of the form X * dim1(a) + Y, which are not optimized inside
> loops, while most C and Fortran compilers do extensive optimizations
> for this kind of computations (hoisting of loop-invariant code,
> transformation of multiplications into iterated additions, etc).

I have done somewhat extensive tests, and my results indicate that bound
checks are in fact the main source of slowdown. Address computation seemed
negligible in comparison. It was also surprising that setting a value was
much faster than retrieving it. Any ideas why this is so?

Thanks,

       Fernando
       
-------------------
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-22 15:43 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   ` Fernando Alegre [this message]
2002-07-25  3:02   ` [Caml-list] Bigarray map & set/get (long) Chris Hecker
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=20020722154325.GH2940@oso.local \
    --to=fernando@cc.gatech.edu \
    --cc=Christophe.Troestler@umh.ac.be \
    --cc=caml-list@inria.fr \
    --cc=xavier.leroy@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).