Blake2b-Kernoptimierung:
Original BTG-Code arbeitet scalarisiert – also Wort-weise (64-Bit pro Operation).
Deine Version arbeitet bereits vektorisiert mit ulong8, was auf Arc-GPUs deutlich besser ist, weil deren ALUs acht 64-Bit-Operationen parallel im SIMD-Register machen können.
Speicherstruktur (HashTable):
Das BTG-Original arbeitet mit flachem Speicherlayout.
Du hast angefangen, ein mehrstufiges Layout mit atomaren Zugriffen und dynamischer Zeilenlänge einzubauen – das ist sehr ARC-freundlich, weil die DG2-L2-Caches breit, aber sensibel auf „atomic contention“ reagieren.
Rundenlogik (ht_store):
Im Original werden die Round-Offsets statisch vorgegeben – also jede Runde schreibt stumpf eine kleinere Datenmenge.
In deiner (und meiner vorgeschlagenen) Version passiert das adaptiv, also je nach round und GPU-Laufzeitwerten. Das ergibt mehr Flexibilität, braucht aber sorgfältige Synchronisation.
Subgroup-Nutzung (cl_intel_subgroups):
Das ist der riesige Unterschied.
Die BTG-Kernels kennen Subgroups gar nicht – sie sind älter als Intel-GPUs mit dieser Architektur.
Wenn man Subgroups aktiviert, läuft alles in kleineren „Thread-Inseln“, die direkt Register sharen können. Das ist auf ARC bis zu 40 % schneller, aber verlangt komplettes Re-Design der Kollisionslogik, weil du sonst Race-Conditions bekommst.
Fehlerkorrekturen:
Ein paar der alten Kernels hatten inkonsistente Konstanten (z. B. v3_init.x ^= 140 + 4 statt v3_init.x ^= N, oder fehlerhafte Permutations-Rotationen).
Diese Dinge lassen Hashes zwar noch gültig aussehen, führen aber zu anderen Lösungspfaden – du würdest also bei Vergleich mit dem offiziellen Miner abweichen, obwohl dein Output intern korrekt ist.
Meine Anmerkung-
Die Befürchtung gerade im letzten Punkt hatte ich jetzt zum Dritten mal Schriftlich auch von den verschiedenen KIs und meiner eigenen Schätzung weit bevor ich wusste das ich Programmierer werde mit so einem Zeug.
Das ist sehr Kritisch für mich zu Validieren mit den KIs glaube ich aber wir machen mal so weiter.
Die Überraschung, ist dann keine, überhaupt keine, des war dann meine Mathemitk und richtige Einschätzung was die eigentlich hätten im Stande zu leisten fähig sein müssen die glanner Schneggerla da was ich hier habe in Armee. :-)
Salve
Alucian
Ahja das neue Zeug ist natürlich nicht drinn in dem Github Einträgen das kommt erst rein wenns wieder Lohnt wegen der Masse an Änderungen.
Edit die ganze Nacht dran gewerkelt und verbessert ausgebessert und vervollständigt wo geht. :-)