On 2015-01-27 21:39-0000 Andrew Ross wrote:

> The sane way round this [potential misalignment issue] is make two 
> allocations, one for the array of
> pointers and one for all the data. This is still a lot more efficient
> than the current multiple allocation approach, but still always
> guarantees correct alignment etc.

Hi Andrew:

I also saw your two mallocs idea suggested somewhere in my recent
reading, and I have not seen Jim's single malloc alternative (or my
aligned variant of it) mentioned anywhere other than here. 
Nevertheless, the aligned variant of Jim's idea is guaranteed to work
and does have the small advantage that the destructor (in Phil's
terminology) is simply a call to free that requires no special routine
to free the two memory areas.  Note the ephcom API is quite small
(currently only 14 functions with 3 of those strongly deprecated). 
Therefore reducing that API to only 11 functions (by replacing two variants
of the 2d constructor by one, and by dropping the two special
destructor functions) seems like a simplification that will make the
API slightly easier to learn for someone who is just starting with
ephcom.

You will be amused to learn that I first "discovered" alignment issues
in 1970 or so in conjunction with Fortran common blocks.  The solution
in that case was always to put the largest objects first in the common
block.  So it seems quite natural to me to do that in the present case
as well.  But your two malloc idea may seem more sane to those
without such historical Fortran experience.  :-)

Whatever I finally decide to do, I will be careful to define 2D array
types (like Phil's idea) to help discourage users from relying on
internal implementation details.

Alan

__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________

Linux-powered Science
__________________________

------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to