Verschiedene Möglichkeiten, Kernel zu machen

10

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.?

    
otisonoza 25.01.2014, 15:02
quelle

1 Antwort

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.

    
jprice 26.01.2014, 13:56
quelle

Tags und Links