]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/compute/perf/perf_comparison_sort.cpp
1 //---------------------------------------------------------------------------//
2 // Copyright (c) 2016 Jakub Szuppe <j.szuppe@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 //---------------------------------------------------------------------------//
15 #include <boost/program_options.hpp>
17 #include <boost/compute/system.hpp>
18 #include <boost/compute/algorithm/sort.hpp>
19 #include <boost/compute/algorithm/is_sorted.hpp>
20 #include <boost/compute/container/vector.hpp>
24 namespace po
= boost::program_options
;
25 namespace compute
= boost::compute
;
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 using boost::compute::int_
;
40 // create vector of random numbers on the host
41 std::vector
<int_
> host_vector(PERF_N
);
42 std::generate(host_vector
.begin(), host_vector
.end(), rand
);
44 // create vector on the device and copy the data
45 boost::compute::vector
<int_
> device_vector(PERF_N
, context
);
47 // less function for float
48 BOOST_COMPUTE_FUNCTION(bool, comp
, (int_ a
, int_ b
),
55 for(size_t trial
= 0; trial
< PERF_TRIALS
; trial
++){
59 device_vector
.begin(),
66 device_vector
.begin(),
74 std::cout
<< "time: " << t
.min_time() / 1e6
<< " ms" << std::endl
;
76 // verify vector is sorted
77 if(!boost::compute::is_sorted(device_vector
.begin(),
81 std::cout
<< "ERROR: is_sorted() returned false" << std::endl
;