summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/compute/example/transform_sqrt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/compute/example/transform_sqrt.cpp')
-rw-r--r--src/boost/libs/compute/example/transform_sqrt.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/boost/libs/compute/example/transform_sqrt.cpp b/src/boost/libs/compute/example/transform_sqrt.cpp
new file mode 100644
index 00000000..860063fc
--- /dev/null
+++ b/src/boost/libs/compute/example/transform_sqrt.cpp
@@ -0,0 +1,58 @@
+//---------------------------------------------------------------------------//
+// 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.
+//---------------------------------------------------------------------------//
+
+//[transform_sqrt_example
+
+#include <vector>
+#include <algorithm>
+
+#include <boost/compute/algorithm/transform.hpp>
+#include <boost/compute/container/vector.hpp>
+#include <boost/compute/functional/math.hpp>
+
+namespace compute = boost::compute;
+
+int main()
+{
+ // get default device and setup context
+ compute::device device = compute::system::default_device();
+ compute::context context(device);
+ compute::command_queue queue(context, device);
+
+ // generate random data on the host
+ std::vector<float> host_vector(10000);
+ std::generate(host_vector.begin(), host_vector.end(), rand);
+
+ // create a vector on the device
+ compute::vector<float> device_vector(host_vector.size(), context);
+
+ // transfer data from the host to the device
+ compute::copy(
+ host_vector.begin(), host_vector.end(), device_vector.begin(), queue
+ );
+
+ // calculate the square-root of each element in-place
+ compute::transform(
+ device_vector.begin(),
+ device_vector.end(),
+ device_vector.begin(),
+ compute::sqrt<float>(),
+ queue
+ );
+
+ // copy values back to the host
+ compute::copy(
+ device_vector.begin(), device_vector.end(), host_vector.begin(), queue
+ );
+
+ return 0;
+}
+
+//]