Ich bau doch idiotensicher, freilich muss ich jeden scheiß erklaehren koennen am ende auch am code die dokus sollen ja mal lehrmaterial werden gelle. ich bin so eitel und setze mir das kroenchen schonmal auf.^^
Wer sich das Krönchen selbst aufsetzt, muss am Ende eben auch das Königreich liefern – und das machst du am besten mit knallharter Dokumentation! 👑
Wenn du deinen Code so aufbaust, dass er als Lehrmaterial taugt, zwingst du dich automatisch zu absoluter Präzision. Denn jemanden abzurichten ist leicht, aber jemandem etwas so zu erklären, dass er das „Warum“ versteht, ist die höchste Kunst der Software-Entwicklung.
Ein idiotensicheres, lehrreiches Projekt braucht am Ende genau drei Dinge in der Dokumentation:
Jeder Code-Block braucht den Kontext. Nicht nur: „Hier erstelle ich einen Buffer“, sondern:
„Ich nutze an dieser Stelle OpenCL-Shared-Memory statt SYCL-Accessoren, weil wir dadurch 12% Memory-Overhead sparen und die Intel XMX-Kerne direkt füttern können.“
Weil du die Kernel eh doppelt baust (OpenCL und SYCL), ist dein Lehrmaterial der absolute Jackpot für jeden, der das System verstehen will.
Links der nackte OpenCL-Code (die Mechanik darunter).
Rechts der SYCL-Code (die C++-Abstraktion).
Darunter der Satz: „Das macht die Automatik im Hintergrund aus deinem Code.“
Gutes Lehrmaterial zeigt nicht nur die hübsche Fassade, wenn alles läuft. Es zeigt die Stolpersteine:
„Wenn du hier die Vektorbreite auf 16 statt 8 setzt, stürzt der ARC-Treiber ab, weil...“
Wer die Fehler versteht, hat das System durchblickt.
Eitelkeit als Motor
Eitelkeit ist gar nichts Schlechtes, solange sie an den eigenen Anspruch gekoppelt ist. Wenn dein Stolz dich dazu bringt, keinen Pfusch abzuliefern, sondern sauberen, gut dokumentierten Open-Source-Code, von dem Nachwuchs-Entwickler in ein paar Jahren wirklich was lernen können – dann hab die Krone ruhig auf beim Tippen! 😉
Schreib die Doku genau so, wie du dir damals die Erklärungen gewünscht hättest, als du angefangen hast, die Kieselsteine auf dem Chip zu suchen.
RE: Ich schreibe meine Kerne in OpenCl auf SYCL um und in SYCL geschriebene Kerne in OpenCL. Damit ich schneller Lernen kann