public inbox for gsl-discuss@sourceware.org
 help / color / mirror / Atom feed
From: Gerard Jungman <jungman@lanl.gov>
To: GSL Discuss Mailing List <gsl-discuss@sourceware.org>
Subject: Re: libflame version 4.0 announced
Date: Wed, 17 Feb 2010 22:49:00 -0000	[thread overview]
Message-ID: <1266446869.8015.201.camel@manticore.lanl.gov> (raw)
In-Reply-To: <87aav7r2u4.wl%bjg@network-theory.co.uk>

On Wed, 2010-02-17 at 21:04 +0000, Brian Gough wrote:
> 
> The problems below are all fixable I am sure.

Sure, they're fixable, but the question is by whom.
I'm trying to chart a specific course for integration.

I assume we don't want to touch (fork) their code
base; that's to be avoided at almost all costs.

I just want to link against it, presumably through
some GSL-owned insulation layer, which can be
configured to point to any conforming implementation.
Similar to the BLAS wrapper layer.

But this requires some kind of interface design. With
BLAS we were lucky that a standard C interface existed
already. But it's not so clear what a "standard" LAPACK
interface would look like. It's very nice that they have
gifted us with their implementation and their interfaces
for a model. But it doesn't leave us entirely off the hook.

The other big problem is what to do with their data
structures. Obviously we need an insulation layer to
protect clients from changes in FLA_Obj and friends.


Here are some problems to be solved:

(1) Explicitly specify the data layout for buffers of underlying
    types. There is presumably only one reasonable way to do this,
    but we should be sure not to paint ourselves into a corner
    in some initially unforeseen way. Understand how it fits
    into a larger scheme involving multiarrays, etc. Make sure
    that it makes sense _across_ language barriers. This includes
    things like the complex types. What is our philosophy about
    packing complex types and can we make it language-neutral?
    Is this a solved problem yet?

(2) Decide how to map (semantically and syntactically) the
    FLAME picture of metadata to/from anything else we might
    want to expose. Do we compose our metadata objects from
    theirs (bad insulation?)? Do we transform representations
    on the fly (performance penalties?)? Is metadata hidden
    behind functional interfaces (performance again?)? Or
    is it exposed (as documented struct elements for example)?

    I am perfectly happy to accept their definitions for the
    abstract metadata. It's good to have a document (FLAME manual)
    that lays it all out explicitly. But there is still stuff to do.

(3) Design an access scheme that makes sense, i.e. no awful
    element-wise '_get' and '_set' functions. Make sure that
    GSL clients have full and free access to the data buffer,
    so that it can be manipulated directly, passed to external
    functions for element-wise processing, etc. Make sure that
    other GSL components that expect globs of data are friendly
    to these buffers and to the metadata that may be needed to
    guide access to these buffers. Also make sure no
    heap-centric-isms creep in.


These are only some things to think about. Of course, I have
some (very preliminary) opinions, but that's for later discussions.

--
G. Jungman


  reply	other threads:[~2010-02-17 22:49 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-02  8:19 GSL extension ode-initval2-1.0 released Tuomo Keskitalo
2010-01-22  9:16 ` [Help-gsl] " Forest Yang
2010-01-23 11:15   ` Tuomo Keskitalo
2010-02-16 23:36 ` libflame version 4.0 announced Gerard Jungman
2010-02-17 21:20   ` Brian Gough
2010-02-17 22:49     ` Gerard Jungman [this message]
2010-02-17 23:10       ` Rhys Ulerich
2010-02-19 18:19       ` Brian Gough
2010-02-17 22:51     ` James Amundson
2010-02-14  6:15 Rhys Ulerich
2010-02-17 21:20 ` Brian Gough

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=1266446869.8015.201.camel@manticore.lanl.gov \
    --to=jungman@lanl.gov \
    --cc=gsl-discuss@sourceware.org \
    /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 read-only IMAP folder(s) and NNTP newsgroup(s).