2016-06-17 13 views
0

Ich frage mich, ob es ein Analog zu Boost-Compute-Funktion (http://www.boost.org/doc/libs/1_61_0/libs/compute/doc/html/boost_compute/advanced_topics.html#boost_compute.advanced_topics.custom_functions), die in Kernel verwandelt wird und kann als eingebetteter Inline-Code, der in einen Kernel verwandelt wird erstellt werden?Gibt es eine Analogie der Boost-Compute-Funktion in Thrust?

+4

Sie können [einen Funktor mit Schub] (https://github.com/thrust/thrust/wiki/Quick-Start-Guide) oder [Lambda-Ausdrücke] verwenden (https://devblogs.nvidia.com/ parallelforall/new-features-cuda-7-5 /). –

Antwort

3

In Schub, können Sie Funktion/Funktor mit __device__ Qualifier verwenden. Ein Beispiel für eine Vektoroperation saxpy ist in dem Link angezeigt, in dem Sie den Funktors saxpy_functor

http://docs.nvidia.com/cuda/thrust/#transformations

ähnlich boost::compute finden konnten, können Sie auch Schub Lambda-Ausdruck als

thrust::transform(X.begin(), X.end(), Y.begin(), Y.begin(), A * _1 + _2); 

oder mehr Standard verwenden könnten C++ Lambda-Ausdruck wie von @ RobertCrovella gezeigt.