Giriş
command_queue Sınıfı
Giriş
Bir device içinde kernel vardır. Kernel işleri çalıştırır. Uygulamanın kernel'e iş ataması için command_queue sınıfına ihtiyacı vardır.
enqueue_1d_range_kernel metodu
Şöyle yaparız.
Constructor
Örnek
Şöyle yaparız.
Şu satırı dahil ederiz.
Örnek
Elimizde şöyle bir mask olsun.
device Sınıfı
Constructor
Şöyle yaparız.
queue Sınıfı
Constructor
Şöyle yaparız.
Şöyle yaparız.
Device üzerinde sort işlemi yapar. Şöyle yaparız.
transform metodu
Device üzerinde transform işlemi yapar.Şöyle yaparız.
Giriş
Vector sınıfı context'i bilir. Bu sayede hangi device üzerinde çalıştığını bilir.
Constructor
Şöyle yaparız.
Örnek ver
end metodu
Örnek ver
Şu satırı dahil ederiz.
Açıklaması şöyle.#include <boost/compute.hpp>
Rahat kullanmak için şöyle yaparız. OpenCL ile linklemek gerekir.namespace compute = boost::compute;
boost:compute functions are not OpenCL kernel functions. They are more like OpenGL kernel functions.boost compute yerine kendi OpenCL kütüphanemizi geliştirmek mümkün.
command_queue Sınıfı
Giriş
Bir device içinde kernel vardır. Kernel işleri çalıştırır. Uygulamanın kernel'e iş ataması için command_queue sınıfına ihtiyacı vardır.
enqueue_1d_range_kernel metodu
Şöyle yaparız.
kernel.set_arg(0, values.get_buffer());
kernel.set_arg(1, results.get_buffer());
kernel.set_arg(2, &constant);
queue.enqueue_1d_range_kernel(kernel, 0, count, 0);
context SınıfıConstructor
Örnek
Şöyle yaparız.
compute::device gpu = ...;
// create a compute context and command queue
compute::context ctx (gpu);
Örnek
Şöyle yaparız.
copy metodu
Host ve device arasında bellek kopyalar.
Örnek
Şöyle yaparız.
copy_if metoducompute::device gpu = compute::system::default_device();
// create a compute context and command queue
compute::context ctx (gpu);
Host ve device arasında bellek kopyalar.
Örnek
Şöyle yaparız.
std::vector<float> host_vector = ...;
compute::vector<float> device_vector (...,...);
compute::command_queue queue = (...,...);
// copy data to the device
compute::copy(
host_vector.begin(), host_vector.end(), device_vector.begin(), queue
);
Şu satırı dahil ederiz.
#include <boost/compute/algorithm/copy_if.hpp>
Kolay kullanmak için şöyle yaparız.using namespace boost::compute;
Host ve device arasında bellek kopyalar.Örnek
Elimizde şöyle bir mask olsun.
mask = [0 0 0 1 1 0 1 0 1]
Şöyle yaparız.detail::copy_index_if (mask.begin(), mask.end(), inds.begin(), _1 == 1, queue);
default_random_engine Sınıfı
Device üzerinde çalışan rastgelen sayı üretecidir.
device Sınıfı
Constructor
Şöyle yaparız.
// get the default compute device
compute::device gpu = compute::system::default_device();
queue Sınıfı
Constructor
Şöyle yaparız.
compute::device gpu = ...;
compute::context ctx = ...
compute::command_queue queue (ctx, gpu);
reduce_by_key metoduboost::compute::vector<int> keys_output = ...;
boost::compute::vector<int> values_output = ...;
boost::compute::reduce_by_key(
boost::compute::make_transform_iterator(
boost::compute::make_counting_iterator<int>(0),
boost::compute::_1 / 100
),
boost::compute::make_transform_iterator(
boost::compute::make_counting_iterator<int>(values_input.size()),
boost::compute::_1 / 100
),
values_input.begin(),
keys_output.begin(),
values_output.begin(),
queue
);
sort metoduDevice üzerinde sort işlemi yapar. Şöyle yaparız.
compute::vector<float> device_vector (...,...);
compute::command_queue queue = (...,...);
// sort data on the device
compute::sort(
device_vector.begin(), device_vector.end(), queue
);
Device üzerinde transform işlemi yapar.Şöyle yaparız.
using namespace boost::compute::lambda;
float c = 1.234; // some constant
boost::compute::transform(values.begin(), values.end() -1, // values0
values.begin() +1, // values1
results.begin(), // results
_1 + _2 + c, queue);
vector SınıfıGiriş
Vector sınıfı context'i bilir. Bu sayede hangi device üzerinde çalıştığını bilir.
Constructor
Şöyle yaparız.
compute::context ctx = ...;
// create vector on the device
compute::vector<float> device_vector (1000000, ctx);
begin metoduÖrnek ver
end metodu
Örnek ver
Hiç yorum yok:
Yorum Gönder