Boost logo

Boost :

Subject: Re: [boost] interest in structure of arrays container?
From: Michael Marcin (mike.marcin_at_[hidden])
Date: 2016-10-26 00:07:34


On 10/25/2016 8:23 PM, Larry Evans wrote:
>>
>> At the very least support for the basic SSE 16 byte alignment of
>> subarrays is crucial.
>>
>>
>> My best idea so far is some magic wrapper type that gets special
>> treatment. Like:
>> using data_t = soa_block< float3, soa_align<float,16>, bool >;
>
> Something like:
>
> template<typename T, std::size_t Alignment>
> struct alignas(Alignment) soa_align {
> T data;
> };
>
> Have you tried that yet. If not, I might try.
>

The issue is you don't want to overalign all elements of the array, just
the first element.

I have a working solution (using Peter Dimov's mp11 library as I'm not
well-versed in post cpp03 metaprogramming).

I'm just trying to play around with implementation ideas at the moment.

Basically it'd be a nice to store only a single pointer and cheap
constant time member sub-array access.

But with alignment concerns all I've managed so far are two implementations.

  1. 1 pointer with linear time member array access
  2. n-pointers with constant time member array access

I feel like there should exist implementation that trades a bit of
dynamic allocation size for a single pointer and constant time member
array access.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk