ParallelAverage

ParallelAverage defines a routine named ParallelAverage that sets output[i] to the average of input[i-1], input[i], and input[i+1], for 0 ≤ i < n .

Example 11-1. ParallelAverage

#include "tbb/parallel_for.h"
#include "tbb/blocked_range.h"

using namespace tbb;

class Average {
public:
    float* input;
    float* output;
    void operator()( const blocked_range<int>& range ) const {
        for( int i=range.begin(); i!=range.end(); ++i )
            output[i] = (input[i-1]+input[i]+input[i+1])*(1/3.0f);
    }
};

// Note: The input must be padded such that input[-1] and input[n]
// can be used to calculate the first and last output values.
void ParallelAverage( float* output, float* input, size_t n ) {
    Average avg;
    avg.input = input;
    avg.output = output;parallel_for( blocked_range<int>( 0, n, 1000 ), avg );
}
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.222.80.122