ja du hast recht mit den 5 bzw. 6 Stellen. Ich hab das jetzt mal geändert und die "number" noch in die Zeropage gelegt, damit komm ich jetzt auf 15.79 Sekunden. Ich glaube mehr ist nicht zu machen.
Was ich jetzt noch interessant fände wäre, das Dingens als Benchmark für versch. C-Implementationen auf dem C64/C128 zu nutzen, also cc65, Power-C, Super-C - würde mich mal interessieren, welcher Compiler da bei gleichem Sourcecode am besten abschneidet.
Sag mal, Marc, bist du eigentlich auch in einem der einschlägigen 8-bit Foren (z. Bsp. forum-64.de) zugegen, würde da evtl. besser passen, als hier 😉
[Code-Gala] Lychrel-Zahlen
Anmeldungsdatum: Beiträge: Zähle... Wohnort: Ulm |
|
||||||
Anmeldungsdatum: Beiträge: 1814 |
Moin, was soll nun mit der Seite Baustelle/Code Gala passieren? Löschen oder nach Projekte verschieben? Oder sagen wir mal so: würde jemand der Seite nachtrauern? In der Baustelle kann sie jedenfalls nicht bleiben. Gruß, BigMc |
||||||
Anmeldungsdatum: Beiträge: 17583 Wohnort: Berlin |
Ich würde nachtrauern. |
||||||
Anmeldungsdatum: Beiträge: 1814 |
So sehr, dass du die paar Syntaxfehler ausbesserst, damit ich nach Projekte verschieben kann? EDIT: Ok, verschoben. Wieder eine Baustelle weniger. ☺ |
||||||
Anmeldungsdatum: Beiträge: 3620 |
user unknown hat so gut wie nichts verbessert. Die C- und C++-Programme waren voll mit irgendwelchen völlig sinnlosen Sternchen. Ich hab das jetzt mal überarbeitet, allerdings müsste jetzt die Baustelle wieder entfernt werden. |
||||||
Anmeldungsdatum: Beiträge: 1814 |
Jetzt erstellt bitte nicht immer wieder die Baustelle neu. Die Seite ist jetzt unter Projekte/Code Gala. Baustelle nochmal gelöscht. |
||||||
Anmeldungsdatum: Beiträge: 3620 |
BigMc schrieb:
Entschuldigung, ich werde mir nicht nochmal die Mühe machen, dutzende Syntaxfehler in der Seite zu beheben. |
||||||
Anmeldungsdatum: Beiträge: 2159 |
Hello World schrieb:
Qualität wird halt bei ubuntu(users) generell nicht hoch angesehen. Auch ist wohl zu viel Wissen schädlich, daher möchte man auch gerne Sachen löschen. Vielleicht wäre ein Stop Schild gut? |
||||||
Anmeldungsdatum: Beiträge: 1814 |
Hello World schrieb:
Sorry, hatte eine Änderung übersehen. Jetzt sind wieder alle Änderungen von dir auf der Seite im Wiki enthalten. Gruß, BigMc |
||||||
Anmeldungsdatum: Beiträge: 965 Wohnort: Österreich |
Hi, wie sieht's mit dem "Projekt" (Code-Gala) aus? Ich hätte noch Interesse an so was. Schade das es "tot" ist, es könnte ja wieder ins Leben gerufen werden. |
||||||
Anmeldungsdatum: Beiträge: 562 |
Ich wär auch noch interessiert. Wie wärs mit folgender Aufgabe, die ich aus dem Projekt Euler habe:
Übersetzt heiszt das so viel wie:
Meine Lösung in C:
|
||||||
Anmeldungsdatum: Beiträge: 562 |
Entschuldigung hab die Überschrift nicht ganz gelesen. Mein Post ist dann wohl etwas fehlgeleitet. |
||||||
Anmeldungsdatum: Beiträge: 1091 |
Danke für die Aufgabenstellung Lychrel Zahlen. War nicht trivial, habe was dazu gelernt. |
||||||
Anmeldungsdatum: Beiträge: 4287 |
Ich weiß, der Thread ist uralt, mich hat trotzdem mal interessiert, ob ein rein lokal lauffähiges LLM das hinbekommt. Aufgerufen wurde das so: ./main -t 6 -m ~/Downloads/models/Codestral-22B-v0.1-Q8_0.gguf -c 8192 --temp 0.7 --repeat_penalty 1.1 --log-enable -n -1 -p '<s> [INST] <<SYS>>\n'''Kommentiere den Quellcode ausführlich in deutscher Sprache.'''\n<</SYS>>\n\n'''Erstelle ein C++ Programm, das folgende Aufgabe löst: Gib alle vermutlichen Lychrel Zahlen zwischen 1 und 100000 aus. Für jede Zahl sollen 100 Iterationen ausgeführt werden. Verwende 8 Threads um die Ausgabe zu beschleunigen. Die Ausgabe soll richtig sortiert erst am Ende aller Berechnungen erfolgen.''' [/INST] </s>\n' --mirostat 2 -e -i -s 2333334
Ausgabe:
Ausführung: time ./a.out 196 295 394 493 592 ... 99961 99973 99974 99979 99990 99999 real 0m0,015s user 0m0,062s sys 0m0,000s
Edit ergänzt noch die Pythonversion: Aufruf: ./main -t 6 -m ~/Downloads/models/Codestral-22B-v0.1-Q8_0.gguf -c 8192 --temp 0.7 --repeat_penalty 1.1 --log-enable -n -1 -p '<s> [INST] <<SYS>>\n'''Kommentiere den Quellcode ausführlich in deutscher Sprache.'''\n<</SYS>>\n\n'''Erstelle ein Python Programm, das folgende Aufgabe löst: Gib alle vermutlichen Lychrel Zahlen zwischen 1 und 100000 aus. Für jede Zahl sollen 100 Iterationen ausgeführt werden. Verwende 8 Threads um die Ausgabe zu beschleunigen. Die Ausgabe soll richtig sortiert erst am Ende aller Berechnungen erfolgen. Das Programm soll auf Ausführungsgeschwindigkeit optimiert sein.''' [/INST] </s>\n' --mirostat 2 -e -i -s 2333334 Ausgabe:
Ausführung: time python3 test.py ... 99947 99953 99958 99961 99973 99974 99979 99990 99999 real 0m1,918s user 0m1,635s sys 0m0,971s Bearbeitet von sebix: Forensyntax verbessert. |
||||||
Ehemalige
Anmeldungsdatum: Beiträge: 4650 Wohnort: Berlin |
@verdooft: Man muss halt vorsichtig mit so etwas sein ob die Fehler die diese Sprachmodelle machen am Ende nicht falsche Ergebnisse produzieren. Und man kann den Erklärungen und Kommentaren nicht glauben, und damit eignet es sich nur für Leute die schon programmieren können, und das richtig einschätzen können, aber nicht für Leute die damit programmieren lernen wollen.
Das da Zahlen bis 100.000 geprüft werden ist mir zu indirekt ausgedrückt. Wenn man die Anzahl der Threads ändert, muss man immer selber daran denken die beiden literalen 12.500-Werte auch zu ändern. In einem Kommentar steht etwas davon das der Beim Python-Programm sind die Threads falsch. Da kann das LLM nicht wirklich etwas dafür weil explizit nach Threads gefragt wurde, aber die verlangsamen das in CPython weil immer nur ein Thread Python-Bytecode ausführen kann. Threads sind für „CPU bound tasks“ also keine gute Lösung es sei denn man weiss, dass da viel in Bibliotheken abgearbeitet wird, die in C geschrieben sind, und die das „global interpreter lock“ (GIL) freigeben. Was fehlt ist ein Lock/Mutex zum Absichern von Dann sind die globalen Variablen unsauber und das Dann lande ich bei so etwas:
Mein Rechner ist schon etwas älter, hier die Zeit: real 0m3,916s user 0m3,880s sys 0m1,242s Das macht ja nur Sinn wenn das auch tatsächlich schneller ist als ohne Threads:
Laufzeit: real 0m1,063s user 0m1,046s sys 0m0,017s Mit Threads also deutlich langsamer! Da kann man noch mal was raus holen in dem man das Umwandeln in eine Zeichenkette und das umdrehen der Ziffern nicht unnötig mehrfach macht:
Laufzeit: real 0m0,658s user 0m0,649s sys 0m0,009s |