Пример #1
0
hpx::future<void> measure_task_foreach(std::size_t size)
{
    boost::shared_ptr<std::vector<std::size_t> > data_representation(
        boost::make_shared<std::vector<std::size_t> >(size));
    std::iota(boost::begin(*data_representation),
        boost::end(*data_representation),
        std::rand());

    // invoke parallel for_each
    return
        hpx::parallel::for_each(
            hpx::parallel::par(hpx::parallel::task, chunk_size),
            boost::begin(*data_representation),
            boost::end(*data_representation),
            [](std::size_t) {
                worker_timed(delay);
            }
        ).then(
            [data_representation](hpx::future<void>) {}
        );
}
Пример #2
0
void measure_parallel_foreach(std::size_t size)
{
    std::vector<std::size_t> data_representation(size);
    std::iota(boost::begin(data_representation),
        boost::end(data_representation),
        std::rand());

    // create executor parameters object
    hpx::parallel::static_chunk_size cs(chunk_size);

    // invoke parallel for_each
    hpx::parallel::for_each(hpx::parallel::par.with(cs),
        boost::begin(data_representation),
        boost::end(data_representation),
        [](std::size_t d) {
            d=d+1; 
        });

    hpx::parallel::for_each(hpx::parallel::par.with(cs),
        boost::begin(data_representation),
        boost::end(data_representation),
        [](std::size_t d) {
            for(int i=0; i<10000; ++i) {
		d=d*2; 
		d=d-2;}
        });

    hpx::parallel::for_each(hpx::parallel::par.with(cs),
        boost::begin(data_representation),
        boost::end(data_representation),
        [](std::size_t d) {
            	d=d+1; 
		for(int i=0; i<1000000000; ++i) {
			d=d*2; 
			d=d-2;}
        });
}
Пример #3
0
hpx::future<void> measure_task_foreach(std::size_t size)
{
    std::shared_ptr<std::vector<std::size_t> > data_representation(
        std::make_shared<std::vector<std::size_t> >(size));
    std::iota(boost::begin(*data_representation),
        boost::end(*data_representation),
        std::rand());

    // create executor parameters object
    hpx::parallel::static_chunk_size cs(chunk_size);

    // invoke parallel for_each
    return
        hpx::parallel::for_each(
            hpx::parallel::par(hpx::parallel::task).with(cs),
            boost::begin(*data_representation),
            boost::end(*data_representation),
            [](std::size_t) {
                worker_timed(delay);
            }
        ).then(
            [data_representation](hpx::future<void>) {}
        );
}