Was ist die Beziehung zwischen einem Workitem und einem Streaming-Prozessor (Cuda-Core). Ich habe irgendwo gelesen, dass die Anzahl der Arbeitsschritte die Anzahl der Kerne deutlich übersteigen sollte, sonst gibt es keine Leistungsverbesserung. Aber warum ist das so ?? Ich dachte 1 Kern repsresents 1 workitem. Kann mir jemand helfen, das zu verstehen? DankeOpencl Workitems und Streaming-Prozessoren
Antwort
Der Grund ist hauptsächlich Planung - ein einzelner Kern/Prozessor/Einheit kann normalerweise mehrere Threads ausführen und zwischen ihnen wechseln, um Speicher Latenz (SMT) zu verstecken. Daher ist es in der Regel eine gute Idee, dass mehrere Threads in der Warteschlange stehen.
Ein Thread entspricht normalerweise mindestens einem Arbeitselement, obwohl je nach Treiber und Hardware mehrere Arbeitselemente zu einem Thread zusammengefasst werden können, um die SIMD/vector-Funktionen eines Kerns zu nutzen.
GPUs und die meisten anderen Hardware tendieren dazu, Arithmetik viel schneller als sie auf den meisten verfügbaren Speicher zugreifen können. Wenn Sie mehr Arbeitsaufgaben haben, als Sie Prozessoren haben, kann der Scheduler die Speicherbelegung staffeln, während diejenigen Arbeitsaufgaben, die bereits ihre Daten gelesen haben, die ALU-Hardware für die Verarbeitung verwenden.
Here is a good page about optimization in opencl. Scrollen Sie nach unten zu " 2.4. Entfernen von 'kostspieligen' globalen GPU-Speicherzugriff", wo es in dieses Konzept eingeht.