Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| 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> |
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 | Next — Previous in thread | Next in thread | Find similar | Unroll 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