caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Guillaume Yziquel <guillaume.yziquel@citycable.ch>
To: Eray Ozkural <examachine@gmail.com>
Cc: Caml List <caml-list@inria.fr>
Subject: Re: [Caml-list] Unboxing: how to do it best?
Date: Sat, 15 Jan 2011 13:38:38 +0100	[thread overview]
Message-ID: <20110115123838.GS4195@localhost> (raw)
In-Reply-To: <AANLkTi=g2bny3VaSEOhYxEJRO_iGur365FgEsJe6d-_G@mail.gmail.com>

Le Saturday 15 Jan 2011 à 14:02:11 (+0200), Eray Ozkural a écrit :
>    It's obvious that avoiding pointer chasing, improving locality and
>    reducing storage will in some cases improve performance considerably.
>    I've found many discussions about unboxing, but I haven't seen any
>    solutions that would satisfy high-performance-computing programmers,
>    who would probably like to have better (i.e. fine-grained) control over
>    memory layout (unboxing double arrays isn't enough). In C++ this is
>    trivial, because C++ is just an abstraction of assembly code. To cut it
>    short,  could not we have basically the same affordances of C++ in
>    ocaml by annotating type definitions to indicate where unboxing would
>    be forced? Such annotations aren't a new idea in programming languages,
>    specifically HPF was based largely on parallel storage annotations.
> 
>    Regards,
>    --
>    Eray Ozkural, PhD candidate.  Comp. Sci. Dept., Bilkent University,
>    Ankara

If you do not care about having the annotation available at runtime
instead of being something static (after all, MPI datatypes are
available at runtime), you could go for encapsulating type information
in first class modules representing datatypes.

Then, for instance, given a datatype, you may wish to construct the
datatype of an array of such types. Such a function needs to know
details about the way OCaml boxes or unboxes different kinds of arrays,
and it can be done (though rather awkwardly in my case).

So first-class modules encapsulating datatype information seems to me a
worthwile option and the only solution I could come with to mimic what
would be done in C++ with traits.

As for 'annotating type definitions', where would you put the line as to
what 'annotating' means? Using type-conv-like Camlp4 processing?

But as to avoiding pointer chasing, I think there's no workaround to the
way OCaml handles memory. The only solution I can come of is the
obvious: use arrays or bigarrays and smart datatypes.

-- 
     Guillaume Yziquel


  reply	other threads:[~2011-01-15 12:40 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-15 12:02 Eray Ozkural
2011-01-15 12:38 ` Guillaume Yziquel [this message]
2011-01-15 14:00   ` Eray Ozkural
2011-01-15 17:23     ` Guillaume Yziquel
2011-01-15 18:33       ` Eray Ozkural
2011-01-16 16:53         ` Jon Harrop
2011-01-18 23:49         ` Guillaume Yziquel
2011-01-15 12:41 ` bluestorm
2011-01-15 13:37   ` Eray Ozkural
2011-01-16 17:03 ` Jon Harrop

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=20110115123838.GS4195@localhost \
    --to=guillaume.yziquel@citycable.ch \
    --cc=caml-list@inria.fr \
    --cc=examachine@gmail.com \
    /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).