1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

OpenCL - generelle Frage

Dieses Thema im Forum "OS X-Developer" wurde erstellt von blutaermer, 29.01.09.

  1. blutaermer

    blutaermer Ingrid Marie

    Dabei seit:
    31.12.03
    Beiträge:
    273
    Gleich mal vorne weg: das hat jetzt nix mit der OpenCL Implementierung in 10.6 zu tun! Es geht mir nicht darum NDAs zu brechen!

    Vielleicht hat sich hier mal jemand mit OpenCL auseinander gesetzt und kann mir weiterhelfen. Bei OpenCL gibt es ja diese kernels, die sich spaeter auf die Hardware verteilen koennen und das Hauptprogramm, dass so ein bisschen fuer die Organisation sorgt.

    Wenn man sich die Header-Dateien von der Khronosgruppe runterlaed, dann kann man zumindest letzteres uebersetzen (nicht linken etc, ist ja klar). Zumindest mit den Beispielen der Khronosgruppe funktioniert das.

    Bei kernel-Implementierungen sieht das leider nicht so aus . Da helfen die Header Dateien nichts und der Compiler scheitert an Syntax wie
    Code:
    __kernel
    Sind die entsprechenden Header noch nicht freigegeben? Oder braucht man fuer die kernel immer eine benutzbare Laufzeitumgebung, weil die kernel nur zur laufzeit uebersetzt werden? Ich dachte eigentlich die kernel muessen nicht in seperate Dateien - leider finde ich in den Spezifikationen nichts.
     
  2. Jamsven

    Jamsven London Pepping

    Dabei seit:
    21.11.07
    Beiträge:
    2.046
    Ich hab mich mit OpenCL noch gar nicht beschäftigt, ich denke aber dass es noch abstrahiert wird.
    Vielleicht in "Grand Central"...
     
  3. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.470
    OpenCL und „Grand Central” sind zwei verschiedene Paar Schuhe.

    MacApple
     
  4. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    So wie ich OpenCL verstehe, werden die Kernel erst zur Laufzeit durch den OpenCL-Compiler in grafikkartenspezifischen Code übersetzt. Einen OpenCL-Compiler gibt es aber leider noch nirgends zum Herunterladen (korrigiere mich ggf. wer), sowas kommt frühestens mit Snow Leopard.
     
  5. Jamsven

    Jamsven London Pepping

    Dabei seit:
    21.11.07
    Beiträge:
    2.046
    Warum?
    Die GPU ist auch nur ein Prozessor, wenn Code auf der GPU ausgeführt wird ist das auch nichts anderes als MP.
     
  6. Pii

    Pii Rheinischer Krummstiel

    Dabei seit:
    25.06.07
    Beiträge:
    383
    Das denke ich nicht. Eher zwei verschiedene Schuhe des selben Paares.
     
  7. blutaermer

    blutaermer Ingrid Marie

    Dabei seit:
    31.12.03
    Beiträge:
    273
    @quarx:

    sicher hast du recht, dass die kernel erst zur Laufzeit uebersetzt werden, sonst muesste man fuer jede vorstellbare Hardwarekombi eine eigenes Binaerfile erzeugen.

    Ich vermute mal, dass die kernel in die LLVM IR uebersetzt werden und dann JIT auf jedem Rechner fuer die vorhandene Hardware.

    Aber egal wie das nun uebersetzt wird und wann : es muss uebersetzt werden. LLVM und Clang sind sicher ganz heisse Kandidaten. Und ich habe es mit LLVM auch schon versucht, aber es muss ja zwangslaeufig an den syntaktischen Huerden scheitern - oder? woher soll der Compiler auch Syntax wie __kernel kennen?

    Vor Weihnachten hatte auf der LLVM Liste einer von tungsten graphics angekuendigt, das innerhalb von einer Woche ein OpenCL Frontend erscheint.

    Ich vermute mal, dass die Uebernahme von Tungstengraphics durch Vmware einen Strich durch Rechnung derer machte, die darauf hofften ein bisschen mit OpenCL zu spielen.

    Aus dem Land der Mythen: Auch Leute die Snow Leopard haben, scheinen ein Problem damit zu haben etwas OpenCL-iges zum Laufen zu bekommen (obwohl die Infrastruktur vermutlich vorhanden ist)
     
  8. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Das hört sich alles sinnvoll an. Mit OpenCL beschäftige ich mich überhaupt erst seit ein paar Tagen, aber bin bereits nach kurzer Recherche ganz heiß auf die Möglichkeiten im Hinblick auf Scientific GPU Computing :). Angeblich soll sich OpenCL vom Aufbau her ja nicht so sonderlich von CUDA unterscheiden, da könnte man schonmal reinschnuppern.
     
  9. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.470
    Na ja, OpenCL ist eine Programmiersprache, „Grand Central” ist eine „Betriebssystemfunktion”. „Grand Central” dürfte es relativ egal sein, aus welcher Programmiersprache der Code generiert wurde, den es auf die Recheneinheiten verteilt.

    MacApple
     
  10. Jamsven

    Jamsven London Pepping

    Dabei seit:
    21.11.07
    Beiträge:
    2.046
    Ach so ok ich dachte das GC ein Framework ist, dann ist das ganz klar.
     
  11. blutaermer

    blutaermer Ingrid Marie

    Dabei seit:
    31.12.03
    Beiträge:
    273
    OpenCL bedingt ja eine Laufzeitumgebung, die den Code fuer die zusaetzlichen Recheneinheiten (GPU) uebersetzt. Und ich denke mal das ist Teil von GC.
    Andererseits braucht GC Code, der auf allen moeglichen Recheneinheiten (abseits der CPU) laeuft. Und das ist in diesem Fall OpenCL.
    Ein bisschen gehoert das schon zusammen.

    Schade das es momentan anscheinend keine Moeglichkeit gibt, OpenCL Kernel zu uebersetzen :(

    BTW: es gibt seit kurzem ein wiki, vielleicht kommt da in der naechsten Zeit mal was gescheites rueber (ich glaubs eher nicht)

    http://openclwiki.wetpaint.com/
     
  12. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    http://llvm.org/devmtg/2008-08/
    Chris Lattner, Apple, Inc.
    Steve Naroff, Apple, Inc.
    Dan Gohman, Apple, Inc.
    Evan Cheng, Apple, Inc.
    Nate Begeman, Apple, Inc.
    Ted Kremenek, Apple, Inc.

    6 von insgesamt 13.
    Zufälle gibt's …
     
  13. blutaermer

    blutaermer Ingrid Marie

    Dabei seit:
    31.12.03
    Beiträge:
    273
    leider hilft diese erkenntnis nicht beim uebersetzen der kernel.
    es gibt einen netten ansatz die namensgebung der einzelnen bestandteile zu erklaeren:
    OpenCL, Clang, Chris Lattner ;)

    zu meinem eigentlichen problem: mir wuerde llvm bitcode fuer ein paar beispielkernel schon reichen. ich will ja gar nichts auf einer gpu oder sonstwo laufen lassen.
     
  14. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Bei der Khronos Group gibt's übrigens ein interessantes PDF zu OpenCL zum Runterladen. Da steht etwas zum Zeitplan drin: im März will die Khronos Group eine Testsuite für standardkonforme OpenCL-Umsetzungen fertigstellen, was für die OpenCL-Umsetzung auf anderen Plattformen als OS X (z.B. Linux) wichtig sein könnte.
     
    Jamsven gefällt das.
  15. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
  16. James Grieve

    James Grieve Holländischer Prinz

    Dabei seit:
    15.04.07
    Beiträge:
    1.866
    Bringt Open CL eigentlich nur was bei den fetten Grafikkarten des Mac Pros oder des iMacs etwas oder haben auch Besitzer eines MacBooks (mit Intel-Grafik :eek: ) etwas davon?
     
  17. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
  18. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    James Grieve gefällt das.
  19. blutaermer

    blutaermer Ingrid Marie

    Dabei seit:
    31.12.03
    Beiträge:
    273
    oh danke ich guck da mal rein.
     
  20. blutaermer

    blutaermer Ingrid Marie

    Dabei seit:
    31.12.03
    Beiträge:
    273
    Spielt denn hier niemand mit OpenCL?
    Also wie man ein OpenCL-kernel uebersetzt, wuerde mich schon brennend interessieren.
    Zur Laufzeit uebersetzt es doch Apple auch in LLVM-IR, also ist doch der Compiler da. Ich finde ihn nur nicht :( Vielleicht weil ich mich mit Xcode zu wenig auskenne ...

    Von mir aus auch auf der Kommandozeile (clang, llvm-gcc).
     

Diese Seite empfehlen