]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/compute/perf/perf_stable_partition.cpp
1 //---------------------------------------------------------------------------//
2 // Copyright (c) 2014 Roshan <thisisroshansmail@gmail.com>
4 // Distributed under the Boost Software License, Version 1.0
5 // See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt
8 // See http://boostorg.github.com/compute for more information.
9 //---------------------------------------------------------------------------//
16 #include <boost/compute/system.hpp>
17 #include <boost/compute/algorithm/stable_partition.hpp>
18 #include <boost/compute/container/vector.hpp>
24 return static_cast<int>((rand() / double(RAND_MAX
)) * 25.0);
27 int main(int argc
, char *argv
[])
29 perf_parse_args(argc
, argv
);
30 std::cout
<< "size: " << PERF_N
<< std::endl
;
32 // setup context and queue for the default device
33 boost::compute::device device
= boost::compute::system::default_device();
34 boost::compute::context
context(device
);
35 boost::compute::command_queue
queue(context
, device
);
36 std::cout
<< "device: " << device
.name() << std::endl
;
38 // create vector of random numbers on the host
39 std::vector
<int> host_vector(PERF_N
);
40 std::generate(host_vector
.begin(), host_vector
.end(), rand_int
);
42 // create vector on the device and copy the data
43 boost::compute::vector
<int> device_vector(PERF_N
, context
);
45 host_vector
.begin(), host_vector
.end(), device_vector
.begin(), queue
48 using boost::compute::_1
;
51 for(size_t trial
= 0; trial
< PERF_TRIALS
; trial
++){
53 boost::compute::stable_partition(
54 device_vector
.begin(), device_vector
.end(), _1
< 10, queue
59 std::cout
<< "time: " << t
.min_time() / 1e6
<< " ms" << std::endl
;