summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/compute/example/time_copy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/compute/example/time_copy.cpp')
-rw-r--r--src/boost/libs/compute/example/time_copy.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/boost/libs/compute/example/time_copy.cpp b/src/boost/libs/compute/example/time_copy.cpp
new file mode 100644
index 00000000..35168770
--- /dev/null
+++ b/src/boost/libs/compute/example/time_copy.cpp
@@ -0,0 +1,63 @@
+//---------------------------------------------------------------------------//
+// Copyright (c) 2013 Kyle Lutz <kyle.r.lutz@gmail.com>
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+// See http://boostorg.github.com/compute for more information.
+//---------------------------------------------------------------------------//
+
+//[time_copy_example
+
+#include <vector>
+#include <cstdlib>
+#include <iostream>
+
+#include <boost/compute/event.hpp>
+#include <boost/compute/system.hpp>
+#include <boost/compute/algorithm/copy.hpp>
+#include <boost/compute/async/future.hpp>
+#include <boost/compute/container/vector.hpp>
+
+namespace compute = boost::compute;
+
+int main()
+{
+ // get the default device
+ compute::device gpu = compute::system::default_device();
+
+ // create context for default device
+ compute::context context(gpu);
+
+ // create command queue with profiling enabled
+ compute::command_queue queue(
+ context, gpu, compute::command_queue::enable_profiling
+ );
+
+ // generate random data on the host
+ std::vector<int> host_vector(16000000);
+ std::generate(host_vector.begin(), host_vector.end(), rand);
+
+ // create a vector on the device
+ compute::vector<int> device_vector(host_vector.size(), context);
+
+ // copy data from the host to the device
+ compute::future<void> future = compute::copy_async(
+ host_vector.begin(), host_vector.end(), device_vector.begin(), queue
+ );
+
+ // wait for copy to finish
+ future.wait();
+
+ // get elapsed time from event profiling information
+ boost::chrono::milliseconds duration =
+ future.get_event().duration<boost::chrono::milliseconds>();
+
+ // print elapsed time in milliseconds
+ std::cout << "time: " << duration.count() << " ms" << std::endl;
+
+ return 0;
+}
+
+//]