Aufruf des OpenCL-Kernels von einem anderen OpenCL-Kernel

8

Ich habe in einem Beitrag gesehen, dass wir eine Funktion von einem OpenCL-Kernel aufrufen können. Aber in meiner Situation muss ich diese komplexe Funktion parallelisieren (von allen verfügbaren Threads), also muss ich diese Funktion auch zu einem Kernel machen und ihn sofort wie die Funktion vom Hauptkernel aufrufen? oder was ist mögliche Lösung für diese Situation? Vielen Dank im Voraus

    
Akhtar Ali 12.10.2011, 13:58
quelle

3 Antworten

8

Sie können Hilfsfunktionen von Ihrem Kernel aufrufen und sie werden auf die gleiche Weise wie der Kernel parallelisiert, stellen Sie sich diese als inline innerhalb Ihres Kernel-Codes vor. So wird jedes Arbeitselement die Hilfsfunktion für den Arbeitssatz aufrufen, den es behandelt.

%Vor%     
sramij 13.10.2011 20:08
quelle
3

Wenn ich Ihre Frage richtig verstanden habe, möchten Sie einen separaten vollständigen Durchlauf über einen Puffer innerhalb des Kernels durchführen. Ich glaube nicht, dass dies vom Kernel aus möglich ist. Sie müssten also den Code für den "inneren" Pass als separaten Kernel erstellen und diesen Kernel auch separat von Ihrem Host-Code aufrufen. Die Ausgabe dieses Kernels muss nicht in den Hostspeicher zurückgelesen werden, sondern kann zwischen den Kernelaufrufen im Gerätespeicher verbleiben.

    
Emil Styrke 10.11.2011 09:16
quelle
2

OpenCL 2.0 spec hat ein neues Feature für dynamischen Paralelismus hinzugefügt.

%Vor%

Im folgenden Beispiel my_func_B enqueus my_func_A auf dem Gerät:

%Vor%     
zr. 30.07.2014 13:24
quelle

Tags und Links