[Beowulf] Stroustrup regarding multicore

Ed Hill ed at eh3.com
Tue Aug 26 11:04:46 PDT 2008


On Tue, 26 Aug 2008 12:53:11 -0400 "Perry E. Metzger" wrote:
> "Perry E. Metzger" <perry at piermont.com> writes:
> > I have a copy of the C99 document and it is indeed required that the
> > locations be consecutive (though there can of course be padding for
> > alignment purposes if you have an array of structures).
> >
> > If you wish for me to quote chapter and verse from the document, I
> > will.
> 
> For the hell of it, I whipped my copy out, since I was in the mood.
> 
> Indeed, if one looks at page 47 of Technical Corrigendum 2 of the C99
> document, one learns that:
> 
>    An array type describes a contiguously allocated nonempty set of
>    objects with a particular member object type, called the element
>    type.
> 
> Note the phrase "contiguously allocated", which is a term of art in
> the document meaning precisely what you think it means.


Hi Perry,

Thank you for shining some light into this language ghetto !!!

[ And I mean that in the best possible sense.  Its sad to see  
  some folks on this list make such simultaneously eager and 
  untrue pronouncements about programming languages. ]

The ISO C++ standard has similar contiguous-allocation guarantees such
as (Sec 23.2.4 of ISO/IEC 14882:2003):

   A vector is a kind of sequence that supports random access 
   iterators.  In addition, it supports (amortized) constant 
   time insert and erase operations at the end; insert and 
   erase in the middle take linear time.  Storage management 
   is handled automatically, though hints can be given to
   improve efficiency. The elements of a vector are stored 
   contiguously, meaning that if v is a vector<T, Allocator> 
   where T is some type other than bool, then it obeys the 
   identity &v[n] == &v[0] + n for all 0 <= n < v.size().

And guarantees like the above make it rather easy for programmers to,
for instance, "assemble" their inputs in C++ and then, if they want,
call C, Fortran, assembly-optimized, or even GPU-/FPGA-implemented
routines to perform BLAS, (I)DFT, or other operations.

Remember, folks, languages do not have to be an "xor" choice.  The "and"
operator is available to all of us.

Ed

-- 
Edward H. Hill III, PhD  |  ed at eh3.com  |  http://eh3.com/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://www.beowulf.org/pipermail/beowulf/attachments/20080826/73963150/attachment.sig>


More information about the Beowulf mailing list