In diesem Lernprogramm
Es gibt 2 Methoden, um den Kernel auszuführen, und eine andere, die in den Kommentaren erwähnt wird:
1.
%Vor%Allerdings habe ich herausgefunden, dass KernelFunctor hat gegangen .
Also habe ich den alternativen Weg versucht:
2.
%Vor%Es kompiliert und läuft erfolgreich.
Allerdings gibt es eine dritte Option in den Kommentaren:
3.
%Vor%Was nicht kompiliert wird, denke ich, dass der make_kernel Template-Argumente benötigt. Ich bin neu bei OpenCl und habe es nicht geschafft, den Code zu reparieren.
Meine Frage ist:
1. Wie soll ich den zu kompilierenden 3. Code ändern?
2. Welcher Weg ist besser und warum? 2. vs. 3.?
Sie können die OpenCL C ++ - Bindungsspezifikation für eine detaillierte Beschreibung von die cl::make_kernel
API (in Abschnitt 3.6.1), die ein Anwendungsbeispiel enthält.
In Ihrem Fall könnten Sie etwas schreiben, um den Kernel-Funktor zu erstellen:
%Vor%Ihre zweite Frage basiert hauptsächlich auf Meinungen und ist daher schwer zu beantworten. Man könnte argumentieren, dass der Kernel-Funktor-Ansatz einfacher ist, da man den Kernel fast so "aufrufen" kann, als ob er nur eine Funktion wäre, und die Argumente auf eine vertraute Weise weiterzugeben. Der alternative Ansatz (Option 2 in Ihrer Frage) ist expliziter beim Festlegen von Argumenten und beim Einreihen des Kernels, stellt jedoch genauer dar, wie Sie denselben Code mit der OpenCL-C-API schreiben würden. Welche Methode Sie verwenden, hängt ganz von Ihrer persönlichen Präferenz ab.