Category: Entwicklung

IPv4 ausgefallen? Linux, WireGuard und Hetzner haben mein Internet gerettet!

2025-06-29

Ein Stromausfall hat meine IPv4-Internetverbindung unterbrochen, nur IPv6 funktionierte noch, aber viele Websites waren nicht erreichbar. Ich habe einen Hetzner VPS, WireGuard und Linux-Netzwerk-Namespaces verwendet, um das Problem elegant zu lösen. Durch die Einrichtung eines WireGuard-Servers auf dem VPS habe ich einen Tunnel für meine IPv6-Verbindung erstellt und so die IPv4-Funktionalität wiederhergestellt. Netzwerk-Namespaces ermöglichten es mir, mein Arbeits-VPN und Docker auszuführen, ohne WireGuard zu beeinträchtigen. Ich habe auch MTU-Probleme von WireGuard behoben. Der gesamte Prozess hat die Flexibilität und die Problemlösungsfähigkeit von Linux hervorgehoben.

Entwicklung

Zwei rätselhafte Mathematica-Programme

2025-06-29

Dieser Code zeigt zwei Mathematica-Programme, die numerische Folgen generieren. Das erste verwendet `Do`- und `While`-Schleifen, um iterativ eine Folge zu erstellen, deren Wachstumsmodell von der Position vorhergehender Elemente abhängt. Das zweite Programm erweitert die Folge, indem es kumulativ vorherige Differenzen addiert, bis die Länge 50 übersteigt. Beide Programme heben die Fähigkeit von Mathematica hervor, komplexe Folgen zu generieren, wobei die Algorithmen weitere Untersuchungen verdienen.

Entwicklung Folgengenerierung

XLibre: Eine rebellische Gabelung von X11 fordert Waylands Dominanz heraus

2025-06-29
XLibre: Eine rebellische Gabelung von X11 fordert Waylands Dominanz heraus

Frustriert über den langsamen Fortschritt und die Mängel von Wayland, hat der Entwickler Enrico Weigelt XLibre gestartet, eine tiefgreifende Verbesserung von X11. XLibre ist nicht nur ein einfacher Zweig; es ist eine komplette Überarbeitung, die darauf abzielt, die Mängel von Wayland zu beheben und überlegene Leistung und Sicherheit zu bieten. Weigelt behauptet, er sei von Red Hat aus dem Xorg-Projekt vertrieben worden, was eine Debatte in der Branche über die Kontrolle von Red Hat über die Linux-Entwicklung ausgelöst hat. Überraschenderweise erwägt Fedora, eine von Red Hat abgeleitete Distribution, X11 durch XLibre zu ersetzen. Die Zukunft von XLibre ist ungewiss, aber es hat unbestreitbar neue Variablen in die Welt des Linux-Desktops eingebracht.

Entwicklung

Linux-Kernel-Drama: Bcachefs wird entfernt

2025-06-29
Linux-Kernel-Drama: Bcachefs wird entfernt

Der kommende Linux-Kernel 6.17 wird die Unterstützung für das Dateisystem Bcachefs entfernen, aufgrund eskalierender Spannungen zwischen seinem Maintainer, Kent Overstreet, und Linus Torvalds. Der Konflikt rührt von Meinungsverschiedenheiten über die Einreichungspraktiken und den Zeitpunkt von Code-Änderungen her, wodurch etablierte Community-Regeln verletzt wurden. Ein zentraler Streitpunkt war eine neue Funktion namens "journal-rewind", die während der Release-Candidate-Phase eingereicht wurde und bei anderen Entwicklern Bedenken auslöste. Trotz Overstreets Argumenten bezüglich der Integrität von Benutzerdaten entschied sich Torvalds letztendlich für die vollständige Entfernung von Bcachefs, was ein bemerkenswertes Ereignis in der Geschichte der Linux-Kernel-Entwicklung darstellt.

Entwicklung Entwicklerkonflikt

Effiziente Awk-Funktion zum Parsen von JSON

2025-06-29

Dieser Code implementiert eine robuste Awk-Funktion zum Parsen von JSON-Daten und zum Extrahieren des Werts eines angegebenen Schlüssels. Sie verarbeitet verschachtelte Objekte und Arrays, unterstützt durch Punkte getrennte Schlüsselpfade und handhabt verschiedene JSON-Datentypen elegant. Die Funktion nutzt die String-Bearbeitungsfunktionen von Awk, um die JSON-Struktur effizient zu durchlaufen, den Zielschlüssel zu finden und seinen entsprechenden Wert zurückzugeben, was die Leistungsfähigkeit von Awk bei der Datenverarbeitung zeigt.

(akr.am)
Entwicklung

AGL: Eine prägnante Skriptsprache, die nach Go kompiliert

2025-06-29
AGL: Eine prägnante Skriptsprache, die nach Go kompiliert

AGL ist eine neue Programmiersprache, die nach Go kompiliert wird. Sie verwendet die Syntax von Go, führt aber Verbesserungen wie Einzelrückgabewerte, Tupel- und Result/Option-Typen für eine vereinfachte Fehlerbehandlung, prägnante anonyme Funktionen und integrierte Array-Methoden ein. AGL unterstützt Operatorüberladung, Enumerationen und Generics und bietet eine VSCode-Erweiterung und Shell-Shebang-Unterstützung für eine verbesserte Entwicklererfahrung. Die flexible Kompilierung ermöglicht sowohl die Kompilierung zu Go-Code als auch die direkte Ausführung, wodurch schnelle Iterationen und Tests erleichtert werden.

Entwicklung

arXivLabs: Gemeinschaftsentwicklung neuer arXiv-Funktionen

2025-06-29
arXivLabs: Gemeinschaftsentwicklung neuer arXiv-Funktionen

arXivLabs ist ein experimentelles Framework, das es Mitarbeitern ermöglicht, neue arXiv-Funktionen direkt auf der arXiv-Website zu entwickeln und zu teilen. Einzelpersonen und Organisationen, die an arXivLabs beteiligt sind, teilen die Werte von arXiv in Bezug auf Offenheit, Community, Exzellenz und Datenschutz der Benutzerdaten. arXiv engagiert sich für diese Werte und arbeitet nur mit Partnern zusammen, die diese Werte einhalten. Haben Sie eine Idee für ein Projekt, das der arXiv-Community zugutekommt? Erfahren Sie mehr über arXivLabs!

Entwicklung

MCP: Das zufällige universelle Plugin-Ökosystem

2025-06-29
MCP: Das zufällige universelle Plugin-Ökosystem

Dieser Artikel untersucht die unerwarteten Verwendungsmöglichkeiten von MCP (Model Context Protocol). Ursprünglich entwickelt, um KI-Assistenten zu verbessern, übersteigt seine Fähigkeit, „eine standardisierte Möglichkeit zu bieten, KI-Modelle mit verschiedenen Datenquellen und Tools zu verbinden“, den Bereich der KI. Ähnlich wie ein USB-C-Anschluss, der einen Toaster an einen Monitor anschließen kann, ist MCP zu einem universellen Plugin-Ökosystem geworden. Entwickler können funktionale Plugins erstellen, ohne die interne Funktionsweise anderer Anwendungen verstehen zu müssen. Dies verbessert die Funktionalität der Anwendung erheblich und schafft unerwartete Anwendungen. Eine Aufgabenverwaltungsanwendung kann beispielsweise MCP-Server für Rechtschreibprüfung, automatische Kaffee-Bestellung und vieles mehr verwenden.

Entwicklung Plugin-Ökosystem

Britischer Reisepassantrag: Ein bürokratisches Abenteuerspiel mit Haskell gelöst

2025-06-29

Der Prozess der Beantragung eines britischen Reisepasses wird von einem Programmierer mit einem komplexen Online-Spiel verglichen. Antragsteller müssen verschiedene Dokumente sammeln, ähnlich wie das Sammeln von Artefakten, um ihre britische Staatsbürgerschaft nachzuweisen. Die Regeln sind kompliziert, voller bürokratischer Logik, und erfordern sogar Geburtsurkunden von Vorfahren. Mit Haskell hat der Programmierer ein Programm erstellt, das den Prozess simuliert und alle möglichen benötigten Dokumentensätze generiert. Dies hilft, die Komplexität zu verstehen und löst eine Diskussion über die Automatisierung von Regierungsverfahren und die Zusammenarbeit zwischen Mensch und Computer aus.

Entwicklung Britischer Reisepass

Oracles JavaScript-Markenklage: Ein Kampf für Open Source

2025-06-29
Oracles JavaScript-Markenklage: Ein Kampf für Open Source

Der Schöpfer von Node.js kämpft gegen Oracles Anspruch auf die Marke "JavaScript". Während eine Betrugsklage abgewiesen wurde, liegt der Kernstreit im generischen Charakter und der Aufgabe der Marke. Der Kläger argumentiert, dass "JavaScript" ein generischer Begriff und keine Oracle-Marke ist, und Oracles Verwendung eines Screenshots der Node.js-Website als Beweis verschärft die Kontroverse. Der Fall wird fortgesetzt, wobei Oracle auf die Behauptungen von Generizität und Aufgabe antworten muss. Das Ergebnis wird bestimmen, ob "JavaScript" von Markenbeschränkungen befreit und der Community zurückgegeben wird.

Entwicklung

Studenten-Team lässt Xv6 auf selbstgebautem CPU laufen

2025-06-28

Im Jahr 2015 wagte ein Team von Studenten der Universität Tokio ein ehrgeiziges Projekt: die Entwicklung, den Bau und den Betrieb des Betriebssystems Xv6 auf einem selbstgebauten CPU mit einer benutzerdefinierten RISC-ISA. Über vier Monate hinweg entwickelten sie einen C-Compiler von Grund auf neu, meisterten zahlreiche Herausforderungen beim Verständnis und der Implementierung der für ein Betriebssystem notwendigen CPU-Funktionen (Interrupts, Speicherverwaltung) und portierten erfolgreich Xv6, sogar mit zusätzlichen Spielen wie 2048 und Minesweeper. Ihre finale Demonstration umfasste die Ausführung des geforderten Raytracing-Programms über Xv6, was ihren aussergewöhnlichen Einfallsreichtum und ihre Problemlösungsfähigkeiten unter Beweis stellte. Dieses Projekt verdeutlicht die Belohnungen des „Neuerfindens des Rades“ und den pädagogischen Wert des praktischen Lernens.

Entwicklung CPU-Design

Warum Senior-Entwickler im Zeitalter der KI-Codegenerierung wichtiger denn je sind

2025-06-28
Warum Senior-Entwickler im Zeitalter der KI-Codegenerierung wichtiger denn je sind

Im Zeitalter der KI-gestützten Codegenerierung sind Senior-Entwickler wichtiger denn je. Der Artikel argumentiert, dass ein Programm nicht nur Code ist, sondern ein theoretisches Modell, das auf einem tiefen Verständnis des Systems basiert. KI-generierter Code fehlt oft diese theoretische Grundlage, was zu inkonsistenten Codebasen und wachsender technischer Verschuldung führt. Senior-Entwickler bauen und pflegen dieses theoretische Framework, stellen sicher, dass der Code den Geschäftsanforderungen entspricht und unterstützen Junior-Entwickler dabei, verstreuten Code in kohärente Programme umzuwandeln. Daher müssen Unternehmen den Wissensaustausch und die Weitergabe theoretischen Wissens priorisieren, um Entwickler mit soliden theoretischen Grundlagen zu fördern und so die Softwarequalität und die langfristige Wartbarkeit zu gewährleisten.

Entwicklung Senior-Entwickler

Whitesmiths C-Compiler Open-Source-Initiative: Eine Legende kehrt zurück

2025-06-28
Whitesmiths C-Compiler Open-Source-Initiative: Eine Legende kehrt zurück

Der Whitesmiths C-Compiler, ursprünglich 1978 veröffentlicht, unterstützte Architekturen wie DEC PDP-11 und Intel 8080 und steht kurz davor, Open Source zu werden! Sein Schöpfer, P.J. Plauger, hat die Erlaubnis für die nicht-kommerzielle Nutzung erteilt. Binärdateien und Teile des Quellcodes für Versionen einschließlich CP/M-80 und eines IBM System/36-Kreuzcompilers stehen jetzt zum Download bereit. Dieser historisch bedeutsame Compiler wird eine wertvolle Ressource für das Studium der Geschichte und Entwicklung der C-Programmiersprache sein.

Entwicklung

Bare-Metal Nim auf Raspberry Pi: Ein kopfloses Abenteuer

2025-06-28
Bare-Metal Nim auf Raspberry Pi: Ein kopfloses Abenteuer

Dieses Projekt beschreibt eine Bare-Metal-Umgebung für Raspberry Pi 1/Zero mit der Programmiersprache Nim. Es beinhaltet einen kooperativen Scheduler, ein asynchrones Programmiermodell und direkten Hardwarezugriff ohne herstellerspezifische APIs. Das Projekt umfasst Speicherverwaltung, Ausnahmebehandlung und Laufzeitüberwachung sowie umfassende Einrichtungsanweisungen. Zukünftige Pläne umfassen die Erweiterung auf weitere Zielplattformen und die Hinzufügung weiterer Gerätetreiber.

Entwicklung

Generative KI: Ein Paradigmenwechsel in der Programmierung

2025-06-28
Generative KI: Ein Paradigmenwechsel in der Programmierung

Große Sprachmodelle (LLMs) revolutionieren die Softwareentwicklung, eine Veränderung vergleichbar mit dem Übergang von Assemblersprache zu höherwertigen Programmiersprachen. Der Autor argumentiert, dass LLMs nicht nur die Abstraktionsebene erhöhen, sondern auch Nichtdeterminismus einführen, wodurch sich die Natur der Programmierung grundlegend verändert. Die Entwicklung von Fortran zu Ruby verbesserte die Effizienz, änderte aber nicht das Wesen der Programmierung. Der von LLMs eingeführte Nichtdeterminismus erfordert, dass sich Programmierer anpassen, was sowohl Herausforderungen als auch Chancen bietet.

Entwicklung

Mehrstufige Programmierung mit Splice-Variablen: Sichere und vorhersehbare Codegenerierung

2025-06-28

Dieser Artikel stellt eine neuartige Technik namens mehrstufige Programmierung (MSP) vor, die es Programmen ermöglicht, andere Programme zu generieren. Um eine sichere und vorhersehbare Codegenerierung zu gewährleisten, führen die Autoren das Konzept der "Splice-Variablen" ein. Splice-Variablen bieten eine feingranulare Kontrolle über den Codegenerierungsprozess und lassen sich nahtlos auf erweiterte Funktionen wie Code-Musterabgleich und -Umschreibung skalieren. Das Typsystem verfolgt automatisch Variablenabhängigkeiten, um sicherzustellen, dass der generierte Code immer wohlgeformt, korrekt im Gültigkeitsbereich und typprüfbar ist. Der Artikel demonstriert die Leistungsfähigkeit von Splice-Variablen anhand von Beispielen wie der Generierung einer Potenzfunktion und zeigt Funktionen wie Code-Musterabgleich und -Umschreibung.

arXivLabs: Experimentelle Projekte mit Community-Mitwirkenden

2025-06-28
arXivLabs: Experimentelle Projekte mit Community-Mitwirkenden

arXivLabs ist ein Framework, das es Mitwirkenden ermöglicht, neue arXiv-Funktionen direkt auf unserer Website zu entwickeln und zu teilen. Einzelpersonen und Organisationen, die mit arXivLabs zusammenarbeiten, haben unsere Werte von Offenheit, Community, Exzellenz und Datenschutz der Benutzerdaten angenommen und akzeptiert. arXiv engagiert sich für diese Werte und arbeitet nur mit Partnern zusammen, die diese einhalten. Haben Sie eine Idee für ein Projekt, das der arXiv-Community einen Mehrwert bietet? Erfahren Sie mehr über arXivLabs.

Entwicklung

Ein prägnanter Rust-Kerneltreiber: Das Beispiel des Ethernet-Controllers AX88796B

2025-06-28

Dieser Artikel beschreibt die Erfahrung beim Schreiben eines Linux-Kerneltreibers für den eingebetteten Ethernet-Controller AX88796B mit Rust. Der Autor vergleicht die Rust-Version mit der C-Version und hebt die Unterschiede in Syntax, Typen und APIs hervor. Die Rust-Version ist bemerkenswert prägnant, mit etwas mehr als 100 Zeilen, wobei Makros die Treiberregistrierung vereinfachen und Traits und das `#[vtable]`-Makro eine nahtlose Integration mit vorhandenem C-Code ermöglichen. Der Artikel erklärt klar die Vorteile von Rust in der Kerneltreiberentwicklung, wie z. B. die Garantie der Speichersicherheit durch Referenzen und die vereinfachte Fehlerbehandlung mit `Result` und dem `try`-Operator, und bietet wertvolle Einblicke in die Kerneltreiberentwicklung mit Rust.

Entwicklung

bootc-image-builder: Erstelle bootfähige Disk-Images aus Containern

2025-06-28
bootc-image-builder: Erstelle bootfähige Disk-Images aus Containern

bootc-image-builder ist ein leistungsstarkes Tool zum Erstellen von Disk-Images aus Fedora/CentOS bootc-Containern oder Ablegern. Es unterstützt verschiedene Image-Typen (qcow2, AMI, ISO usw.) und ermöglicht die Anpassung von Benutzern, Dateisystemen, Kernel-Parametern und mehr. Mit Podman und QEMU können Benutzer einfach virtuelle Maschinen erstellen und ausführen. Dieses Handbuch beschreibt die Verwendung, Optionen und erweiterten Konfigurationen, wie das Erstellen von AMIs auf AWS und die Anpassung des Anaconda-Installationsprogramms.

Entwicklung Disk-Image

Seltsame Ausdrücke in Rust: Das Typsystem an seine Grenzen bringen

2025-06-28
Seltsame Ausdrücke in Rust: Das Typsystem an seine Grenzen bringen

Dieser Artikel untersucht einige extreme und scheinbar paradoxe Ausdrücke innerhalb des leistungsstarken Typsystems der Programmiersprache Rust. Durch die Analyse von Beispielen aus der Testdatei `weird-expr.rs`, wie die kreative Verwendung von `return true`, verschachtelten Schleifen und `break`-Anweisungen, sowie ein tiefes Verständnis von Typinferenz und Typumwandlung, wird deren Gültigkeit in Rust erklärt. Dies sind keine Fehler, sondern vielmehr Beispiele für die Flexibilität des Typsystems und die Ausdruckskraft von Rust, die seine Robustheit im Umgang mit Extremfällen demonstrieren.

Entwicklung

Der 14-jährige, der den Mac-Rechner prägte

2025-06-28

Chris Espinosa, ein 14-jähriger Apple-Mitarbeiter, spielte eine entscheidende Rolle bei der Entwicklung des Macintosh. Mit der Aufgabe, Quickdraw zu dokumentieren, erstellte er ein Rechnerprogramm. Steve Jobs lehnte es zunächst ab, aber Espinosas innovative Lösung – ein anpassbares 'Steve Jobs Roll Your Own Calculator Construction Set' – beeindruckte Jobs und wurde für viele Jahre, bis zu OS 9, zum ikonischen Mac-Rechner.

Entwicklung

SymbolicAI: Ein neuro-symbolisches Framework für LLMs

2025-06-28
SymbolicAI: Ein neuro-symbolisches Framework für LLMs

SymbolicAI ist ein neuro-symbolisches Framework, das klassische Python-Programmierung mit der differenzierbaren Programmierbarkeit von LLMs kombiniert. Sein modulares Design ermöglicht einfache Erweiterung und Anpassung, sodass Benutzer eigene Engines schreiben, diese lokal hosten oder mit Tools wie Websuche und Bilderzeugung interagieren können. Kernkonzepte sind Symbol-Objekte (syntaktisch und semantisch) und Verträge (die die Korrektheit des Codes über Dekorateure gewährleisten). SymbolicAI unterstützt zahlreiche primitive Operationen und integriert sich über APIs mit neuro-symbolischen Engines wie OpenAI und Anthropic sowie Tools wie Wolfram Alpha und Suchmaschinen. Ein prioritätsbasiertes Konfigurationssystem vereinfacht die Verwaltung.

Entwicklung neuro-symbolisch

c4wa: Ein minimaler und effizienter C-Compiler für WebAssembly

2025-06-28
c4wa: Ein minimaler und effizienter C-Compiler für WebAssembly

c4wa ist ein Compiler, der eine Teilmenge von C in WebAssembly übersetzt. Im Gegensatz zu anderen Compilern erzeugt er minimalen und gut optimierten WebAssembly-Code ohne zusätzlichen Code, eingebettete Bibliotheken oder Overhead. Er ist sofort ohne Konfiguration mit jeder WASM-Laufzeitumgebung kompatibel. c4wa unterstützt Schleifen, Bedingungen, Strukturen, Arrays, Zeiger und andere typische C-Funktionen und kann lesbaren Code im WAT-Format ausgeben. Er findet ein Gleichgewicht zwischen der höheren Benutzerfreundlichkeit von C und der niedrigeren Effizienz von WebAssembly und bietet Entwicklern eine neue Möglichkeit, performanten WebAssembly-Code zu schreiben.

Entwicklung

ZubanLS: Ein blitzschneller Python-Sprachserver in Rust

2025-06-27

2012 entwickelte der Autor Jedi, eine weit verbreitete Python-Autovervollständigungsbibliothek. Die Geschwindigkeitsbeschränkungen wurden jedoch deutlich. 2020 begann der Autor von Grund auf neu mit Rust und entwickelte ZubanLS, den ersten wirklich schnellen Python-Sprachserver nach fünfjähriger intensiver Arbeit. ZubanLS richtet sich an Profis, die Präzision, Zuverlässigkeit und Geschwindigkeit benötigen. Es behebt langjährige Probleme in Tools wie Mypy und Pyright, indem es die Leistung priorisiert, ohne auf Funktionen zu verzichten. Unterstützung für Django, Go-to-Definition, Vervollständigungen und andere LSP-Funktionen sind in Arbeit. Die erste Version 2025 wird möglicherweise nicht alle Bedürfnisse erfüllen; Feedback ist willkommen, um die zukünftige Entwicklung zu gestalten.

Entwicklung

Ein Lisp-Abenteuer in den toten Wassern von C

2025-06-27

Dieser Artikel untersucht die Macht der Abstraktionen von Lisp und die Grenzen von C, wobei eine C-ähnliche Sprache verwendet wird. Der Autor analysiert die Bewertungsstrategien von Funktionsargumenten und hebt hervor, wie der Call-by-Value-Mechanismus von C die Kontrolle über Funktionsargumente einschränkt und die Implementierung flexibler bedingter Anweisungen und Schleifen wie if, while und cond in Lisp verhindert. Der Artikel geht weiter auf fortgeschrittene Funktionen wie Closures und die Laufzeiterstellung von Funktionen ein, die in C nicht verfügbar sind, und kommt schließlich zu dem Schluss, dass C in Bezug auf Erweiterbarkeit Mängel aufweist.

Entwicklung

Linux-Community: Festung der Freiheit oder Käfig der Ausgrenzung?

2025-06-27

Ein Blogbeitrag löste eine hitzige Debatte über Inklusion in der Linux-Community aus. Der Autor teilte einen herablassenden und ausgrenzenden Kommentar, der seine Verwendung von „Linux“ anstatt „GNU/Linux“ kritisierte und ihn beschuldigte, das System „verdummen“ zu wollen. Der Autor kontert, dass wahre „Freiheit“ nicht auf Kosten marginalisierter Gruppen gehen sollte, und hebt schwerwiegende Barrierefreiheitsmängel im Linux-Ökosystem hervor. Dies entfachte eine Diskussion über die Community-Kultur, die Bedeutung von Inklusion und Barrierefreiheit und den Respekt vor denen, die zur Verbesserung des Systems beitragen.

Entwicklung

zenta: Achtsamkeit für Programmierer im Terminal

2025-06-27
zenta: Achtsamkeit für Programmierer im Terminal

zenta ist ein terminal-natives Tool, das Programmierer dabei unterstützt, während des Programmierens konzentriert zu bleiben. Es führt Benutzer durch einfache Atemübungen zurück in den gegenwärtigen Moment, ohne Tracking oder Metriken. Ein einziger Befehl, `breath` oder `breathe`, startet kurze oder längere Atemübungen, unterstützt durch reine visuelle Animationen und beruhigende Zitate. Der Befehl `reflect` ermöglicht eine sanfte tägliche Überprüfung. zenta befürwortet echte Achtsamkeit, nicht Gamifizierung, und betont Präsenz statt Produktivitäts-Hacks. Es unterstützt mehrere Betriebssysteme und ist unter der MIT-Lizenz Open Source.

Entwicklung

BQN-Matrixmultiplikation: Performance-Optimierung durch Cache-Blocking und Divide-and-Conquer

2025-06-27

Dieser Artikel untersucht die Optimierung der Performance bei der Multiplikation großer Matrizen mit der Programmiersprache BQN. Der Autor verwendet zunächst eine einfache quadratische Partitionierung, um den Cache effektiv zu nutzen und erreicht dadurch eine etwa sechsfache Beschleunigung. Anschließend wird ein Strassen-Algorithmus auf Basis einer Divide-and-Conquer-Strategie vorgestellt, der experimentell eine bis zu neunfache Beschleunigung bei großen Matrizen zeigt. Der Artikel vergleicht auch den Einfluss verschiedener Blockgrößen und verschachtelter Kachelungsstrategien auf die Performance und kommt zu dem Schluss, dass die Performancegrenze einer reinen, single-threaded BQN-Implementierung im Wesentlichen erreicht ist.

Entwicklung

Extrem schnelles Fibonacci auf der GPU mit Thrust

2025-06-27
Extrem schnelles Fibonacci auf der GPU mit Thrust

Dieser Blogbeitrag zeigt, wie man unglaublich schnelle Fibonacci-Sequenzberechnungen mit GPU-Programmierung und der NVIDIA Thrust-Bibliothek durchführt. Er beginnt mit der Erklärung des Scan-Algorithmus und zeigt dann, wie man Scan-Operationen in Thrust für einfache Addition und Multiplikation verwendet und dies auf Matrixoperationen erweitert. Schließlich wird veranschaulicht, wie man Fibonacci-Zahlen effizient mit Matrixoperationen und der Scan-Operation berechnet und dabei modulare Arithmetik verwendet, um Integer-Überläufe zu vermeiden. Der Autor berechnet F99999999 (mod 9837) in nur 17 Millisekunden auf einer NVIDIA GeForce RTX 3060 Mobile GPU.

Cache-Lokalität und Performance bei der Array-Summation: Ein überraschendes Experiment

2025-06-27

Dieser Artikel untersucht anhand von Experimenten den Einfluss der Reihenfolge von Array-Elementen auf die Performance der Summation. Der Autor vergleicht sequenziellen und zufälligen Zugriff und stellt fest, dass die Performance bei zufälligem Zugriff drastisch abnimmt, wenn die Array-Größe die Cache-Kapazität übersteigt, während sequenzieller Zugriff relativ stabil bleibt. Die Experimente untersuchen auch memory-mapped files und plattformspezifische Unterschiede und zeigen, dass die Behandlung von memory-mapped files durch das Betriebssystem die Performance erheblich beeinflusst. Fazit: Sequenzieller Zugriff ist optimal für die Summation großer Arrays, während Daten, die größer als der Arbeitsspeicher sind, effizientere Algorithmen und Datenlesestrategien erfordern.

Entwicklung Cache-Lokalität
1 2 50 51 52 54 56 57 58 214 215