boost accumulate returns 0

24 views
Skip to first unread message

Joshua Laferriere

unread,
Jun 29, 2016, 11:28:11 PM6/29/16
to boost-compute
#include <iostream>
#include <vector>
#include <algorithm>
#include <boost/compute/system.hpp>
#include <boost/compute/algorithm/copy.hpp>
#include <boost/compute/algorithm/accumulate.hpp>
#include <boost/compute/container/vector.hpp>
#include <boost/compute/types/fundamental.hpp>

#include <boost/compute/algorithm/inclusive_scan.hpp>
//#include <boost/compute/interop/opencv/core.hpp>
//#include <boost/compute/interop/opencv/highgui.hpp>
#include <boost/compute/random/default_random_engine.hpp>
#include <boost/compute/random/uniform_real_distribution.hpp>
#include <boost/compute/utility/source.hpp>

//#include <ctime>
//#include <random>
//#define CL_USE_DEPRECATED_OPENCL_1_1_APIS
//#undef CL_VERSION_1_2

namespace compute = boost::compute;


int main()
{
    //srand ( time(NULL) );

    //int seed = int(time);

    //std::random_device rd;
    //std::default_random_engine generator(rd());

    compute::device gpu = compute::system::default_device();
    compute::context ctx(gpu);
    compute::command_queue queue(ctx, gpu);

    size_t steps = 10;

    compute::vector<float> random_vector(steps, ctx);
    compute::default_random_engine random_engine(queue);
    random_engine.seed(time(NULL), queue);

    compute::uniform_real_distribution<float> random_distribution(0.f, 1.f);

    random_distribution.generate(
        random_vector.begin(), random_vector.end(), random_engine, queue
    );

    float result = compute::accumulate(random_vector.begin(), random_vector.end(), 0, queue);



    std::cout << "result: " << result << std::endl;

    std::cout << "vector: [ ";
    boost::compute::copy(
        random_vector.begin(), random_vector.end(),
        std::ostream_iterator<float>(std::cout, ", "),
        queue
    );
    std::cout << "]" << std::endl;
}

Joshua Laferriere

unread,
Jun 29, 2016, 11:28:47 PM6/29/16
to boost-compute
Correction: compute::accumulate returns 0

Joshua Laferriere

unread,
Jun 29, 2016, 11:45:45 PM6/29/16
to boost-compute
and answered:

casting

float result = compute::accumulate(random_vector.begin(), random_vector.end(), float(0), queue);
Reply all
Reply to author
Forward
0 new messages