Boost logo

Boost :

Subject: Re: [boost] Boost SIMD beta release
From: Dave Abrahams (dave_at_[hidden])
Date: 2012-12-20 14:34:55

on Thu Dec 20 2012, Mathias Gaunard <> wrote:

> On 20/12/12 19:42, Dave Abrahams wrote:
>> on Thu Dec 20 2012, Mathias Gaunard <> wrote:
>>> On 20/12/12 19:12, Dave Abrahams wrote:
>>>> on Thu Dec 20 2012, Joel Falcou <> wrote:
>>>>> Maybe we should have a simd::unaligned_input_iterator and/or make
>>>>> simd::transform accept non aligned data. Note that on any pre-Nehalem
>>>>> CPU, the unaligned load will be horrendsously slow.
>>>> It's probably a bit late to bring this up, but did you consider a design
>>>> that uses something like Matt Austern's segmented iterator concept
>>>> ( and imposes a hierarchical view
>>>> over regular memory that segments on aligned memory regions?
>>> The code needs to be the same for all segments in that model, unless
>>> I've missed something.
>> I don't understand exactly what you mean, nor what problem you see with
>> that model.
> This model is good for B-trees and other similar things. deques, circular buffers, blocked arrays, etc.

> I don't see how this can apply here at all.
> We need to iterate, load and store our data differently depending on
> the segment.

Yes, incomplete end segments are dealt with differently. Did you have
something else in mind?

> We even have different types to manipulate on each of them. In the
> segmented iterator model, all sibling iterators must be the same type,
> and therefore have the same code.

Yes; there's a runtime test.

> The only reasonable thing to do would be to return a fusion sequence
> of ranges, and have algorithms deal with that. Even this still has a
> bit of overhead over a hand-written loop structure.

I'm afraid you have not been specific enough about the problem you claim
to see for me to be able to evaluate whether it exists or not.

Dave Abrahams
BoostPro Computing                  Software Development        Training             Clang/LLVM/EDG Compilers  C++  Boost

Boost list run by bdawes at, gregod at, cpdaniel at, john at