Boost logo

Boost :

Subject: Re: [boost] interest in structure of arrays container?
From: Michael Marcin (mike.marcin_at_[hidden])
Date: 2016-10-30 19:45:41


On 10/30/2016 12:29 PM, Larry Evans wrote:
> On 10/30/2016 10:40 AM, Larry Evans wrote:
>> On 10/30/2016 07:45 AM, Larry Evans wrote:
>>> Michael, the latest revision of the code, when run, aborts when
>>> running the SSEopt_vec method, as detailed here:
>>>
>>> https://github.com/cppljevans/soa/blob/master/soa_compare.benchmark.cpp#L953
>>>
>>>
>>> Would you have some idea what's causing that?
>>>
>> [snip]
>> After rebooting, the SSEopt_vec method now runs without problem.
>> I've no idea what was causing errors before the reboot :(
>>
> I suspect the problem was a wrong bit_vector definition.
> Hopefully the lastest push will solve problem.
>

Was going to suggest that bit_vector might be the problem I'm not sure
where the alternative implementation came from but it needs to be
something about like this as a minimum.

#ifdef HAVE_GOON_BIT_VECTOR
using goon::bit_vector;
#else
struct bit_vector {
     void resize( size_t num_bits, bool value = false )
     {
         size_t num_blocks = (num_bits + 63) / 64;
         constexpr uint64_t block_none = 0;
         constexpr uint64_t block_all = ~block_none;
         data_m.resize( num_blocks, value ? block_all : block_none );
         num_bits_m = num_bits;
     }
     uint64_t * data() { return data_m.data(); }
     std::size_t size() const { return num_bits_m; }

     std::vector<uint64_t> data_m;
     std::size_t num_bits_m;
};

#endif


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