2017-12-13 3 views
0

, die eine Frage sein könnte, aber ich möchte Opencl nutzen, um die Vorteile der Dutzende der GPU-Kerne nutzen. Ein paar Tage zuvor, als ich nach opencl forschte, wurde ich mit Arbeitsgruppen, Workitems, Kernels und der Logik von opencl verwirrt. Bevor ich mit diesem Personal fortfahre, hier ist meine Frage:OpenCL: Programm gpu mehr wie eine Multithread-CPU

Kann ich nur einen Thread mit Code zuweisen, um in einem einzelnen GPU-Rechenkern (oder spezifizierten Kern) wie bei der Programmierung einer Multi-Core-CPU zu laufen?

+0

"* das könnte eine noob Frage sein *", Spekulation ist nicht notwendig. Stellen Sie Ihre Frage, geben Sie an, was Ihrer Meinung nach die Antwort ist und was Sie zu dieser Schlussfolgerung geführt hat. Geben Sie mit einer allgemeinen Aussage wie Ihrer auch einige Kommentare darüber ab, wie Sie bereits gegoogelt haben, was Sie gefunden haben (wenn überhaupt) und warum es Ihre Frage nicht beantwortet. Bei SO geht es wirklich um Probleme mit Code und Code als Beispiel dafür, was falsch ist. – 8protons

+0

Die Suchen, die ich gemacht habe, sprachen alle über Arbeitsgruppen, Arbeitsaufgaben, Kernel. Die grundlegenden Beispiele betrafen diese (Arbeitsgruppen, Workitems, Kernel), und ich konnte keinen direkten Weg finden, um das zu tun, was ich in meiner Frage beschreibe. –

Antwort

5

Nein, so funktioniert es nicht. In OpenCL schreiben Sie einen Kernel, der ein einzelnes Arbeitselement ausführt. Es könnte so einfach wie eine Speicherkopie sein oder könnte Pixel aus Quellbildern lesen, sie zusammen mischen und ein Pixel in ein Ausgabebild schreiben. Dieser Kernel wird über die gesamte Arbeitsgruppe ausgeführt (z. B. das gesamte Ausgabebild). Die Laufzeit macht das möglich. Es ist nicht wie Multithread-CPU-Code, wo jeder Thread andere Sachen macht. Es ist eher so, als hätte man ein Lager mit 1000 Praktikanten. Jede hat eine eindeutige Angestelltennummer, und das Zeug im Lagerhaus hat Zahlen, so dass Sie Dinge wie "Schaut in Kisten (Ihre Nummer) und (Ihre Nummer plus 1000) sagen können und die Teile, die Sie finden, zusammenlegen und den neuen Teil legen in Box (Ihre Nummer plus 2000) ". Du sagst das einmal im Megaphon, und 1000 Teile werden parallel gebaut.

+0

Also, Opencl erlaubt nicht zu tun, was ich beschreibe, dh was Sie in Ihrem Beispiel beschreiben, ist die einzige Möglichkeit, die GPU (über opencl) zu verwenden? –

+0

Das stimmt. Sie könnten die API dazu zwingen, so etwas wie einzelne Ausführungsthreads zu machen, aber es wäre eine äußerst ineffiziente Art, die GPU zu verwenden. – Dithermaster

+0

Können Sie bitte ein sehr einfaches und einfaches Beispiel dafür geben? (Und wenn möglich das gleiche Beispiel mit dem "normalen/richtigen" Weg?) –

Verwandte Themen