我目前正在探索boost_compute。不幸的是,文檔頁面和示例較少,比我需要了解要做什麼。如何調用boost_compute'BOOST_COMPUTE_FUNCTION'定義的函數?
考慮下面的代碼縮小的:
BOOST_COMPUTE_FUNCTION(bool, add, (int* values, int* results, int constant),
{
// Whats the indexing variable?
// In opencl it would be get_global_id(0)
int index = // ?
results[index] = values[index] + values[index + 1] + values[index + 2] + constant;
});
void compute(float* results, compute::context* ctx, compute::command_queue* queue)
{
compute::vector<float> device_values(100, *ctx);
compute::vector<float> device_results(98, *ctx);
compute::copy(
parameters->values.begin(), parameters->values.end(), device_values.begin(), *queue
);
// Actual computation
// HOW TO CALL 'add' for every device_results element?
compute::copy(
device_results.begin(), device_results.end(), results, *queue
);
}
如何調用「添加」功能,這是什麼函數內的迭代變量?此外,我需要這種代碼結構來進行更復雜的計算。
親切的問候, 託尼
使用'計算:: transform',在這裏的例子:http://www.boost.org/doc/libs/1_63_0/libs/compute/doc/html/boost_compute/advanced_topics.html# boost_compute.advanced_topics.custom_functions – ddemidov
boost :: compute中的函數應用於單個向量元素。你可能在尋找的是一個定製的內核。 – ddemidov
不幸的是,我無法想象調用正確的方式進行轉換。這個例子沒有回答我任何問題:/ – infotoni91