Boost logo

Boost :

Subject: Re: [boost] Boost SIMD beta release
From: Mathias Gaunard (mathias.gaunard_at_[hidden])
Date: 2012-12-20 13:58:57


On 20/12/12 19:42, Dave Abrahams wrote:
>
> on Thu Dec 20 2012, Mathias Gaunard <mathias.gaunard-AT-ens-lyon.org> wrote:
>
>> On 20/12/12 19:12, Dave Abrahams wrote:
>>>
>>> on Thu Dec 20 2012, Joel Falcou <joel.falcou-AT-gmail.com> 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
>>> (http://lafstern.org/matt/segmented.pdf) 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.
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. 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.

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.


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