OpenCL



  • Und noch eine Frage.

    Der opencl teil im Code muss mit einem anderen Compiler als der Rest compiliert werden. Wie soll das funktionieren wenn ich im Visual Studio kompiliere ?



  • die kernels werden der opencl api uebergeben, zur laufzeit, was sollte daran nicht funktionieren? bzw wie sollte es sonst funktionieren bei heterogenen systemen, du weisst doch meist nicht welche ISA die compute prozessoren haben, kann sein dass dein OpenCl source in SSE2, SSE4.1, PTX assembler oder direkt in intel's oder AMD's GPU ISA uebersetzt wird und vielleicht hat irgendjemand mal eine ImgTec oder Qualcomm beschleunigerkarte in seinem PC die es jetzt noch nicht gibt. da ist es doch gut und billig den source der API zu geben, denn jede compilieren in eine zwischensprache bedeutet informantionsverlust und waere (bis auf fuer obfuscation) nicht sonderlich hilfreich.



  • Ja ich ruf die Funktionen der API auf. Ich ruf die library auf und da wird die CPU schnell merken dass sie den Code nicht ausführen kann. Dann gibt sie ihn an die GPU weiter oder ?



  • Wenn ein Prozessor "merkt, daß er Code nicht ausführen kann" gibt's ne Invalid Opcode Exception und sonst nix.

    In der Introduction to OpenCL ist doch eh alles so schön aufgemalt!?



  • Wie wäre es, wenn ihr mal aufhören würdet, dem Obertroll zu antworten?



  • ich verwende in meiner main.c das Schlüsselwort __kernel vor einer funktion . Obwohl ich die cl.h einbinde erkennt er dieses nicht. Woran liegt das ?



  • blurry333 schrieb:

    ich verwende in meiner main.c das Schlüsselwort __kernel vor einer funktion . Obwohl ich die cl.h einbinde erkennt er dieses nicht. Woran liegt das ?

    Vielleicht hat er auf der Silvesterparty zuviel gehabt.

    Du schaust dir jetzt an wie OpenCL funktioniert! Und zwar sofort! Und stocherst nicht so unsinnig rum! LOS ⚠



  • Trotzdem will ich wissen warum das Schlüsselwort __kernel nicht erkannt wird. Die cl.h ist eingebunden !



  • In C bzw. C++ gibt es kein Schlüsselwort __kernel, auch wenn du noch so viele Header einbindest...



  • blurry333 schrieb:

    Trotzdem will ich wissen warum das Schlüsselwort __kernel nicht erkannt wird. Die cl.h ist eingebunden !

    Artikuliere dich doch ordentlich. Er? Wer ist ER? Von wem wird __kernel nicht erkannt? Versuchst du OpenCL Source in gcc zu kompilieren? Oder ist "ER" die OpenCL API und eine Funktion versteht dein Source nicht?

    Und schau dir endlich die Grundlagen an, ein Tutorial zu laden und durchzuarbeiten reicht, damit sich hier niemand mehr fremdschämen muss.



  • int arr1[10];
    int arr2[10];
    int arrErgebnis[10];
    
    for(int i = 0;i<10;i++)
    {
    
    arrErgebnis[i]=arr1[i]+arr2[i];
    
    }
    

    Warum ist dieser einfache serielle Code, als paralleler Code in OpenCL mehr als 3 Seiten lang und hat mehrere Dateien ?



  • int arr1[10];
    int arr2[10];
    int arrErgebnis[10];
    
    int i = get_local_id(0);
    arrErgebnis[i]=arr1[i]+arr2[i];
    

    Du hast anscheinend aus Versehen den C code reingestellt, ich habe mir erlaubt es in OpenCL zu schreiben.

    Warum ist dieser einfache serielle Code, als paralleler Code in OpenCL mehr als 3 Seiten lang und hat mehrere Dateien ?

    Hyperaktiver- oder dokugeiler-Programmierer.



  • Die main function ist mehr als 300 Zeilen lang und dann noch die cl Datei mit dem Kernel



  • Und?



  • Ist OpenCl also schlecht designed ? Wenn ich seriell 8 Zeilen brauche aber für OpenCL 300 Zeilen, frag ich mich schon ob da nicht was überflüssig ist.



  • blurry333 schrieb:

    Ist OpenCl also schlecht designed ? Wenn ich seriell 8 Zeilen brauche aber für OpenCL 300 Zeilen, frag ich mich schon ob da nicht was überflüssig ist.

    Definitiv. Ich würde, wenn ich du wäre, die Finger von Computern lassen. Da ist doch eh alles der selbe schwachfug...



  • OpenCL ist eine API mit der man mit der Grafikkarte kommuniziert. Schonmal mit einem externen Geraet kommuniziert? Mal 'nen Mikrkontroller programmiert? Schon mal selbst Dateien gelinkt? Und jetzt misst du OpenCL anhand des Codeumfangs von deinem Spielzeugbeispiel?

    Warum gleich zu OPenCL greifen? Mache doch dein Spielzeugbeispiel mal Multithreaded!



  • blurry333 schrieb:

    Ist OpenCl also schlecht designed ? Wenn ich seriell 8 Zeilen brauche aber für OpenCL 300 Zeilen, frag ich mich schon ob da nicht was überflüssig ist.

    Dir ist klar dass du dich da grad drüber beschwerst, dass Verkehrsflugzeuge komplizierter sind als Rolltreppen!?



  • blurry333 schrieb:

    Ist OpenCl also schlecht designed ? Wenn ich seriell 8 Zeilen brauche aber für OpenCL 300 Zeilen, frag ich mich schon ob da nicht was überflüssig ist.

    wenn man deiner logik folgt, müstest dann nicht auch du schlecht designed sein, wenn du ein ganzes projekt aufsetzt, hundert zeichen tippst, statt den taschenrechner aufzurufen, um 10 zahlen xu addieren?



  • Es gibt doch auch CSharp für OpenCL. Ist das nur ein Wrapper oder wurde der Code völlig neu in CSharp geschrieben ?


Anmelden zum Antworten