Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #42260

Re: Padding involved

From James Kuyper <jameskuyper@verizon.net>
Newsgroups comp.lang.c
Subject Re: Padding involved
Date 2014-03-28 15:23 -0400
Organization Self
Message-ID <5335CC2C.4000401@verizon.net> (permalink)
References (5 earlier) <lnr46dv8ol.fsf@nuthaus.mib.org> <6c398cac-bf10-4213-b147-4a01ac23568f@googlegroups.com> <20140307165348.597@kylheku.com> <ejiaj9l37s39s39mnrf9rrrshaqr5mbb0k@4ax.com> <lh4g05$uu7$1@speranza.aioe.org>

Show all headers | View raw


On 03/28/2014 02:45 PM, glen herrmannsfeldt wrote:
> David Thompson <dave.thompson2@verizon.net> wrote:
> 
> (snip)
> 
>> No, the reverse. The offset must divide the size, or the size must be
>> divisible by the offset. E.g. struct { long a; float b; } if both long
>> and float are 4 bytes (as is common, though not universal and not
>> required by the Standard) then the struct has size at least 8 but is
>> unlikely to have alignment more than 4.
> 
> (snip)
> 
>> Note that alignment can be less than size, most commonly on systems
>> that can align everything to 1, but I've used a system where int is 4
>> bytes and aligned to 2. Alignment cannot be more than size.
> 
> As I understand it, for some systems an alignment greater than
> size is necessary for optimal use. Specifically, some of the SSE
> instructions, as I understand it, will process pairs of doubles
> aligned to 16 byte boundaries.  I believe other combinations, such
> as four floats or four ints.

In C, every object of a given type must be allocated at a location which
is correctly aligned for it's type. In an array, that means that the
first element of the array and the second element must both be correctly
aligned - but those two positions are also required to be separated by
exactly sizeof(type) bytes. That's not possible unless sizeof(type) is
an integer multiple of _Alignof(type).

On the platform you describe, must every double be aligned on a 16 byte
address, so the SSE instructions can always be used? Then that means
that the SSE instructions will never actually operate on two 8-byte
doubles at the same time; at most, they will operate on one 8-byte
double and one 8-byte piece of padding. In that case, sizeof(double)
must include the padding in order to implement arrays of double
correctly, so sizeof(double)==16, not 8.

Alternatively, is it perfectly feasible to have one double object
aligned to a 16 byte address and the next double object aligned 8 bytes
later, allowing both to be processed by the same SSE instruction? If so,
then _Alignof(double) == 8, not 16.

> Also, GPUs might have different alignment requirements than
> traditional processors.

Having different alignment requirements is not, in itself, a problem for
C, for which those requirements are implementation-defined. It's only
inconsistencies of those requirements with other things such as
sizeof(type) that would be a problem.

Back to comp.lang.c | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Padding involved anish singh <anish198519851985@gmail.com> - 2014-03-07 13:13 -0800
  Re: Padding involved jacob navia <jacob@spamsink.net> - 2014-03-07 22:17 +0100
  Re: Padding involved Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-07 16:26 -0500
    Re: Padding involved anish singh <anish198519851985@gmail.com> - 2014-03-07 13:49 -0800
      Re: Padding involved Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-07 18:11 -0500
        Re: Padding involved anish kumar <yesanishhere@gmail.com> - 2014-03-07 15:19 -0800
          Re: Padding involved Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2014-03-07 16:26 -0700
            Re: Padding involved anish kumar <yesanishhere@gmail.com> - 2014-03-07 15:41 -0800
              Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-07 18:50 -0500
            Re: Padding involved glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-08 00:10 +0000
              Re: Padding involved Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2014-03-08 09:27 -0700
          Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-07 16:24 -0800
            Re: Padding involved anish kumar <yesanishhere@gmail.com> - 2014-03-07 16:45 -0800
              Re: Padding involved Kaz Kylheku <kaz@kylheku.com> - 2014-03-08 01:03 +0000
                Re: Padding involved David Thompson <dave.thompson2@verizon.net> - 2014-03-28 06:11 -0400
                Re: Padding involved glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-28 18:45 +0000
                Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-28 15:23 -0400
                Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-28 12:40 -0700
                Re: Padding involved glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-28 21:19 +0000
                Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-28 17:07 -0500
                Re: Padding involved Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-28 18:25 -0400
                Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-28 21:15 -0500
                Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-29 01:03 -0700
                Re: Padding involved Tim Rentsch <txr@alumni.caltech.edu> - 2014-03-29 14:23 -0700
                Re: Padding involved glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-30 01:43 +0000
                Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-28 21:32 -0400
                Re: Padding involved Richard Damon <Richard@Damon-Family.org> - 2014-03-28 21:59 -0400
                Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-29 00:46 -0500
                Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-29 08:51 -0400
                Re: Padding involved Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-29 08:57 -0400
                Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-30 18:53 -0500
                Re: Padding involved Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-30 20:25 -0400
                Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-31 11:34 -0500
                Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-31 11:27 -0700
                Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-31 11:36 -0700
                Re: Padding involved Kaz Kylheku <kaz@kylheku.com> - 2014-03-31 19:14 +0000
                Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-31 15:43 -0500
                Re: Padding involved Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2014-04-01 03:12 +0300
                Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-04-03 00:45 -0500
                Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-29 13:02 -0500
                Re: Padding involved Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-29 14:44 -0400
                Re: Padding involved glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-29 19:49 +0000
                Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-30 19:12 -0400
                Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-31 16:20 -0500
                Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-31 17:53 -0400
                Re: Padding involved Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2014-04-01 03:22 +0300
                Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-04-04 14:36 -0500
                Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-04-04 17:33 -0400
                Re: Padding involved Tim Rentsch <txr@alumni.caltech.edu> - 2014-04-14 13:46 -0700
                Re: Padding involved glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-04-14 22:00 +0000
                Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-04-14 15:37 -0700
                Re: Padding involved Tim Rentsch <txr@alumni.caltech.edu> - 2014-04-17 09:11 -0700
                Re: Padding involved Tim Rentsch <txr@alumni.caltech.edu> - 2014-04-14 13:25 -0700
                Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-29 00:57 -0700
                Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-29 08:57 -0400
                Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-29 14:18 -0700
                Re: Padding involved Tim Rentsch <txr@alumni.caltech.edu> - 2014-03-30 12:02 -0700
                Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-30 19:35 -0700
                Re: Padding involved Tim Rentsch <txr@alumni.caltech.edu> - 2014-04-14 12:54 -0700
                Re: Padding involved Tim Rentsch <txr@alumni.caltech.edu> - 2014-03-29 14:44 -0700
                Re: Padding involved glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-29 03:50 +0000
                Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-29 09:02 -0400
                Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-29 13:19 -0500
                Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-28 21:21 -0400
                Re: Padding involved Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-28 15:27 -0400
                Re: Padding involved Kaz Kylheku <kaz@kylheku.com> - 2014-03-28 19:54 +0000
                Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-28 15:02 -0500
          Re: Padding involved Kaz Kylheku <kaz@kylheku.com> - 2014-03-08 00:43 +0000
          Re: Padding involved Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-07 20:20 -0500
    Re: Padding involved anish singh <anish198519851985@gmail.com> - 2014-03-07 13:49 -0800
  Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-07 16:46 -0500
  Re: Padding involved "BartC" <bc@freeuk.com> - 2014-03-07 21:59 +0000
    Re: Padding involved anish kumar <yesanishhere@gmail.com> - 2014-03-07 14:34 -0800
      Re: Padding involved "BartC" <bc@freeuk.com> - 2014-03-07 23:59 +0000
    Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-07 15:15 -0800
      Re: Padding involved "BartC" <bc@freeuk.com> - 2014-03-08 10:08 +0000
        Re: Padding involved Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-03-08 12:39 +0000
        Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-08 14:03 -0800
  Re: Padding involved Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-03-08 09:01 -0800

csiph-web