|
Boost : |
Subject: Re: [boost] [gsoc] boost.simd news from the front.
From: David A. Greene (greened_at_[hidden])
Date: 2011-06-11 12:17:57
Mathias Gaunard <mathias.gaunard_at_[hidden]> writes:
> Making data parallelism simpler is the goal of NT2. And we do that by
> removing loops and pointers entirely.
First off, I want to apologize for sparking some emotions. That was not
my intent. I am deeply sorry for not expressing myself well.
NT2 sounds very interesting! Does it generate the loops given calls
into generic code?
Let me try to clarify my thinking about boost.simd a bit.
- There is a place for boost.simd. It's important that I emphasize this
upfront.
- Here is how I see a typical programmer using it, given a loop nest:
- Programmer tries to run the compiler on it, examines code
- Code sometimes (maybe most of the time) executes poorly
- If not, done
- Programmer restructures loop nest to expose parallelism
- Try compiler directives first, if available (tell compiler which
loops to interchange, where to cache block, blocking factors,
which loops to collapse, etc.)
- Otherwise, hand-restructure (ouch!)
- Programmer tries compiler again on restructured loop nest
- Code may execute poorly
- If not, done
- Programmer adds directives to tell the compiler which loops
to vectorize, which to leave scalar, etc.
- Code may still execute poorly
- If not, done
- Programmer uses boost.simd to write vector code at a higher level
than provided compiler intrinsics
Does that seem like a reasonable use case?
-Dave
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk