Connect with us

Künstliche Intelligenz

Effizientes C++: Die versteckten Kosten des Rückgabedatentyps auto


Im heutigen Beitrag möchte ich mich mit dem Schreiben von effizientem C++-Code befassen. Dieses Thema lässt sich nicht in einem einzigen Beitrag behandeln. Zum Start möchte ich mich auf die Steuerung der Zeit konzentrieren, die der Compiler benötigt, und dabei ein Element der Sprache herausgreifen: auto.

Weiterlesen nach der Anzeige


Portrait von Andreas Fertig

Portrait von Andreas Fertig

Andreas Fertig ist erfahrener C++-Trainer und Berater, der weltweit Präsenz- sowie Remote-Kurse anbietet. Er engagiert sich im C++-Standardisierungskomitee und spricht regelmäßig auf internationalen Konferenzen. Mit C++ Insights ( hat er ein international anerkanntes Tool entwickelt, das C++-Programmierenden hilft, C++ noch besser zu verstehen.

Ich halte die Typinferenz auto für eine großartige Erweiterung der Sprache. Mit der C++14-Version von auto als Rückgabedatentyp ist es ein guter Weg, flexiblere und akkuratere Funktionen zu schreiben. Allerdings geht das zu Kosten eines längeren Kompiliervorgangs.

Aber beginnen wir ohne auto als Rückgabedatentyp. Hier ist eine Dummy-Funktion, die nichts Interessantes macht:


int Fun(bool b, int val)
{
  if(b) {
    return val * 2;
  } else {
    return val / 2 * 3;
  }
}


Ich brauchte für das Beispiel lediglich eine Funktion mit einem Rumpf, der für den Compiler nicht völlig trivial war. Da es im heutigen Beitrag um effizientes C++ geht, möchte ich über die Zeit sprechen, die zum Kompilieren dieser wenigen Zeilen Code erforderlich ist. Dabei geht es nicht unbedingt um die absoluten Zahlen, da diese auf verschiedenen Rechnern unterschiedlich sein werden.

Wie kannst du deinen Compiler überhaupt messen? Eine Möglichkeit ist der Linux-Befehl time. Dieser liefert jedoch nur wenige Informationen, die nicht dabei helfen, deine Build-Zeiten zu verbessern. Wenn dir ein Build langsam erscheint, benötigst du kein Tool, das dir sagt, dass du recht hast, sondern ein Tool, das dir zeigt, wo eine mögliche Beschleunigung möglich ist.

Wenn time nicht das richtige Tool ist, was dann? Ganz einfach: dein Compiler! Zumindest Clang. Er verfügt über die hilfreiche Befehlszeilenoption -ftime-trace. Damit kann Clang für jede Objektdatei eine .json-Datei mit zahlreichen Daten erstellen. Du kannst die Informationen beispielsweise mit Chrome und seinem Tracing Viewer untersuchen. Öffne einfach einen Tab und gib chrome://tracing ein. Lade dann die JSON-Datei. Für den obigen Code auf meinem Rechner mit Clang 19 sieht die Visualisierung so aus:

Weiterlesen nach der Anzeige


Screenshot von Chrome mit den Tracing-Ergebnissen von Clang

Screenshot von Chrome mit den Tracing-Ergebnissen von Clang

Screenshot von Chrome mit den Tracing-Ergebnissen von Clang

Ein Wort zu meiner Vorgehensweise: Ich gehe davon aus, dass die Funktion Fun in einer Header-Datei steht und in der aktuellen Übersetzungseinheit nicht verwendet wird. Einfachheitshalber habe ich keinen anderen Code eingefügt oder verwendet. Ich habe eine .cpp-Datei mit dem oben gezeigten Code wie folgt compiliert:


clang++ -c a.cpp -ftime-trace


Zurück zur Visualisierung, auch wenn sie etwas kompakt ist. Die obere Leiste mit der Aufschrift ExecuteCompiler benötigt 6,499 ms.

Hier ist eine modifizierte Version des vorherigen Codes. Die einzige Änderung, die ich vorgenommen habe, ist die auto statt int als Rückgabedatentyp.


auto Fun(bool b, int val)
{
  if(b) {
    return val * 2;
  } else {
    return val / 2 * 3;
  }
}


Wenn ich diesen Code messe, erhalte ich folgende Ergebnisse:


Screenshot von Chrome mit den Tracing-Ergebnissen von Clang

Screenshot von Chrome mit den Tracing-Ergebnissen von Clang

Dieses Mal benötigt ExecuteCompiler 8,114 ms. Das sind ungefähr 1,5 ms mehr. Ja, das stimmt, das ist nur ein einzelner Datenpunkt. Vielleicht haben wir es hier mit Jitter zu tun. Das kann sein. Vielleicht gibt es Aufrufe, bei denen die beiden Zahlen näher beieinander liegen, aber es ist unwahrscheinlich, dass sie jemals gleich werden. Ich bin mir hier sicher, weil im zweiten Trace ein zusätzlicher Schritt erscheint: ParseFunctionDefinition. Dieser Schritt ist nur vorhanden, wenn man auto als Rückgabedatentyp für die Funktion verwendet oder die Funktion tatsächlich aufruft. Aber ich gehe davon aus, dass Fun in einer Header-Datei deklariert ist.

Das zweite Codebeispiel benötigt wegen ParseFunctionDefinition länger zum Kompilieren. Mit auto von C++14 als Rückgabedatentyp muss der Compiler die Funktionsdefinition nachschlagen, wenn er die Deklaration analysiert. Ohne auto verschiebt der Compiler die Analyse des Funktionsrumpfs, bis er wirklich benutzt wird.

Wenn du die Dauer des Kompiliervorgangs optimieren möchtest, solltest du auf Funktionen achten, die auto als Rückgabedatentyp in Header-Dateien verwenden.


(rme)



Source link

Künstliche Intelligenz

Western Digital beschleunigt SATA-Festplatten auf 500 MByte/s


Festplatten schaffen in den Außenzonen bislang rund 300 MByte/s, im Vergleich zu PCIe-SSDs ist das sehr langsam: Die schnellsten M.2-SSDs kommen beim Schreiben auf fast 14.000 MByte/s. Viele in Rechenzentren eingesetzte SSDs aber verzichten auf einen beschleunigenden SLC-Cache und schreiben die Daten direkt in die Flash-Zellen; dadurch sinken die Schreibraten von QLC-SSDs teils auf deutlich weniger als 1000 MByte/s.

Weiterlesen nach der Anzeige

Western Digital (WDC, Western Digital Corporation) will seine Rechenzentrumsfestplatten nun auf eine Schreib- und Lesegeschwindigkeit von 500 MByte/s bringen. Änderungen in der Hardware sind dazu nicht notwendig, sagte der Produktchef des Unternehmens, Ahmed Shihab, im Gespräch mit heise online. Der Grundgedanke leuchtet sofort ein: Statt nur einen Kopf zu benutzen, um eine Spur zu schreiben oder zu lesen, nutzt WDC dabei mehrere und beschreibt gleichzeitig mehrere Scheiben oder liest deren Daten aus.

Bislang hat noch kein Festplattenhersteller diese Technik kommerziell eingesetzt. Die Spuren auf modernen Festplatten sind gerade noch etwa 30 Nanometer breit, auf verschiedenen Scheiben „übereinander“ liegende Spuren sind wahrscheinlich niemals wirklich an der gleichen Stelle. Erst durch den Einsatz eines sehr fein verstellbaren Gelenks an der Kopfspitze lässt sich dieser auf die richtige Position bringen – das Unternehmen setzt dazu auf den vor einigen Jahren eingeführten Triple Stage Actuator (WDC erklärt dessen Funktion in einem Youtube-Video).

Laut Shihab sind bereits solche Laufwerke bei Pilotkunden im Einsatz. Es seien keine Änderungen an der Schnittstelle oder den Gehäusen notwendig, sagte er. Die Reaktionen der Kunden seien positiv, sie fragten nach kommerzieller Verfügbarkeit und noch höheren Geschwindigkeiten.

Western Digital nennt diese Laufwerke High-Bandwidth Drives. Primäres Ziel sei es, das SATA-Interface vollständig auszureizen. Grundsätzlich seien aber noch weit höhere Geschwindigkeiten möglich, etwa mit dem bewährten SAS-Interface oder auch mit einer PCIe-Schnittstelle. Shihab betonte, dass Entwicklungen auf der Basis konkreter Kundenanforderungen erfolgten. Ziel sei es, die Festplatte für das KI Zeitalter neu zu erfinden, ohne bestehende Infrastrukturen der Kunden aufzubrechen. Eine spätere Aufwertung bestehender Laufwerke mit einer Unterstützung für das parallele Arbeiten erwarten wir nicht.

Zu den aufgrund von Kundenanforderungern entwickleten Dingen gehört auch einer Verringerung der Leistungsaufnahme der Laufwerke um rund 20 Prozent durch eine verringerte Drehzahl. Solche Laufwerke könnten etwa in einem günstigeren Storage-Tier zum Einsatz kommen; trotz der 20-prozentigen Energieeinsparung sei ihre Leistung nur um 7 Prozent geringer. Konkrete Produkte kündigte Shihab nicht an.

Weiterlesen nach der Anzeige

Noch sind die High-Bandwitdh-Laufwerke nicht serienreif. Shihab kündigte eine weitere Kapazitätsstufe für traditionelle Serverlaufwerke an: In der zweiten Jahreshälfte soll eine UltraSMR-Festplatte mit 40 TByte Kapazität erscheinen. Sie nutzt wie bereits die Modelle mit 32 und 36 TByte eine Energieunterstützung beim Schreiben, WDC nennt die Technik Energy Assisted Perpendicular Magnetic Recording (ePMR).

Bei UltraSMR handelt es sich um eine Erweiterung der normalen SMR-Festplatten, die Daten überlappend schreiben (Shingled Magnetic Recording) und damit 10 bis 15 Prozent höhere Kapazitäten aufweisen. UltraSMR bringt durch größere SMR-Bereiche sowie verbesserte Fehlerkorrektur mehr als 20 Prozent Kapazitätszuwachs, setzt aber ebenfalls die passende Ansteuerung durch den Hostcontroller beziehungsweise die Storage-Software voraus. An einem handelsüblichen PC sind solche Laufwerke nicht einsetzbar.

ePMR soll für Kapazitäten bis zu 50 TByte ausreichen, zum Marktstart solcher Laufwerke sind jedoch noch keine Termine bekannt. Parallel dazu entwickelt WDC die HAMR-Technik weiter, die für Laufwerke mit weit über 100 TByte taugen soll. 100-TByte-Laufwerke seien im Labor bereits möglich, auch die physikalischen Grundlagen für 200-TByte-Laufwerke seien bekannt.


(ll)



Source link

Weiterlesen

Künstliche Intelligenz

Kaspersky: Entweder das BSI streicht seine Warnung, oder…


Die IT-Sicherheitsfirma Kaspersky hat ein Problem – und das ist ihr Herkunftsland: Russland. Als das Bundesamt für Sicherheit in der Informationstechnik (BSI) im März 2022 erstmals öffentlich vor dem kompletten Produktsegment eines Herstellers gewarnt hatte, war das ein Novum. Bis heute ist die Warnung vor Kasperskys Virensoftware die einzige vom BSI ausgesprochene öffentliche Produktwarnung – und sie soll weg, fordert die Firma.

Weiterlesen nach der Anzeige

Kaspersky-Lobbyisten schrieben kürzlich Mitglieder des zuständigen Innenausschusses an, worüber zuerst der Spiegel berichtet hatte. In den E-Mails legte das Unternehmen sein Ansinnen dar, dass das BSI die Produktwarnung zurücknehmen solle. Kaspersky sieht das BSI dazu in der Pflicht: Unterlagen der Bonner Behörde sollen belegen, dass das BSI keinerlei Anhaltspunkte für Gefahren gefunden habe. Dem Unternehmen sei durch die Warnung mittlerweile ein Schaden in dreistelliger Millionenhöhe entstanden. Auch in den USA und anderen Staaten sind verschiedene Kaspersky-Unternehmensteile, darunter Kaspersky Lab und dessen Führungspersonal wie Gründer Eugene Kaspersky, sanktioniert.

Die Behörde gibt sich von den Forderungen der Firma unbeeindruckt, nachdem sie erst vor wenigen Wochen noch einmal intern über die Einstufung gesprochen hat – Warnungen müssen regelmäßig überprüft werden. „Das BSI hält die Warnung vor AV-Produkten des Herstellers Kaspersky weiterhin aufrecht“, teilt ein Sprecher am Dienstagmittag auf Anfrage von heise online mit. „Die Gründe für die Warnung sind in der Warnung selbst hinlänglich dargestellt und haben sich aus Sicht des BSI nicht geändert.“ Zur Kommunikation durch den Hersteller äußere sich das BSI nicht.

Im Parlament führt der Kaspersky-Vorstoß eher zu Irritation als zu Unterstützung für das Unternehmen. „Kaspersky steht der Rechtsweg in unserem deutschen Rechtsstaat immer offen“, sagt der CDU-Digitalpolitiker und IT-Sicherheitsspezialist Henri Schmidt. Und appelliert: „Wer in der aktuellen Situation immer noch russische Software nutzt, hat den Ernst der Lage nicht verstanden.“ Russland führe seit Jahren hybride Angriffe gegen Deutschland durch. „Die Russische Föderation ist eine Diktatur und selbsterklärter Gegner der EU, die jeden vorhandenen Hebel gegen Europa nutzt oder nutzen wird“, sagt der CDU-Politiker Schmidt. „Kein Unternehmen im heutigen Russland kann unabhängig von Putins Regime agieren.“ Also auch nicht Kaspersky mit Hauptsitz an der Leningrader Chaussee in Moskau.

Die Vorgänge würden sehr aufmerksam verfolgt, sagt Konstantin von Notz, Grünen-Innenpolitiker und stellvertretender Vorsitzender des Geheimdienstaufsichts-Gremiums des Deutschen Bundestages. „Als Parlament interessiert uns hierbei vor allem die Positionierung der Bundesregierung in dem nunmehr schon länger bestehenden Konflikt zwischen Kaspersky und dem BSI, die ja weiterhin die Fach- und Rechtsaufsicht über das Bundesamt ausübt.“ Das zielt in erster Linie auf das von Alexander Dobrindt geführte Bundesministerium des Innern ab, dem das BSI nachgeordnet ist. Das neue Digitalministerium ist nur für jene Teile des BSI zuständig, die unmittelbar für die Bundesverwaltung relevant sind.

Weiterlesen nach der Anzeige

Seit dem Aussprechen der Warnung wird immer wieder der Verdacht laut, das BSI habe die Warnung nicht aufgrund technischer Beurteilungen ausgesprochen, sondern politische Gründe hätten eine Rolle gespielt. Doch das hat sich bis heute nicht weiter erhärtet, auch wenn das BSI damals in enger Abstimmung mit dem Bundesinnenministerium agierte. Andere wiederum hatten das BSI dafür kritisiert, mit der Produktwarnung vor Kaspersky viel zu lange gezögert zu haben. Das BSI ist, was seine Entscheidungsgrundlage angeht, eine ungewöhnliche Bundesbehörde: „Seine Aufgaben führt das Bundesamt auf Grundlage wissenschaftlich-technischer Erkenntnisse durch“, heißt es im BSI-Gesetz. Sprich: es darf sich anders als andere Behörden nicht politisieren lassen, wenn das der Erkenntnislage widerspricht.

Kaspersky war bislang mit allen Versuchen gescheitert, rechtlich gegen die Warnung des BSI vorzugehen. Das Unternehmen hatte sowohl auf dem Weg des einstweiligen Rechtschutzes als auch mit einer Verfassungsbeschwerde seine Rechte geltend gemacht, die Richter aber nicht davon überzeugen können, dass das BSI hier unverhältnismäßig gehandelt habe. Eine weitere gerichtliche Klärung – sprich: ein Hauptsacheverfahren – hatte das Unternehmen bislang aber ebenfalls nicht auf den Weg gebracht.

Beim örtlich für das BSI zuständigen Verwaltungsgericht Köln ist jedenfalls aktuell keinerlei solches Verfahren bekannt, teilte der zuständige Pressesprecher auf Anfrage mit. Es gibt also weiterhin kein Anzeichen dafür, dass Kaspersky vier Jahre nach dem Aussprechen der Produktwarnung nun ein Hauptsacheverfahren anstrengen würde. Eine Kaspersky-Sprecherin betont denn auch, dass Kaspersky dem BSI nicht mit einer Klage drohe, sondern sich lediglich rechtliche Schritte vorbehalte.


(cku)



Source link

Weiterlesen

Künstliche Intelligenz

Speicherkrise: Preise sollen noch stärker steigen als befürchtet


Im ersten Quartal 2026 könnten die Speicherpreise so stark steigen wie noch nie. Zu dem Ergebnis kommt der auf Speicher spezialisierte Marktbeobachter Trendforce, unter anderem anhand von bereits abgeschlossenen Lieferverträgen zwischen Speicher- und PC-Herstellern.

Weiterlesen nach der Anzeige

Im Falle von konventionellem Arbeitsspeicher revidiert Trendforce seine Prognose nach oben: Anfang Januar ging der Marktbeobachter noch von Preissteigerungen zwischen 55 und 60 Prozent aus, jetzt sind es 90 bis 95 Prozent. DDR5- und DDR4-RAM für Desktop-PCs (UDIMMs) und Notebooks (SO-DIMMs) soll es mit bis zu 110 Prozent am stärksten treffen.


Grafik zu Speicherpreisen

Grafik zu Speicherpreisen

Aufschlüsselung der steigenden Preissteigerungen.

(Bild: Trendforce)

Bei Servern (DDR5, DDR4) und Smartphones (LPDDR5X, LPDDR4X) sollen die Preissteigerungen mit 88 bis 93 Prozent nur etwas darunter liegen. In allen Fällen würde es sich um Rekorderhöhungen binnen eines einzigen Quartals handeln.

Die Lieferknappheit soll inzwischen so weit ausgeprägt sein, dass selbst bei den größten PC-Herstellern die Lagerbestände sinken. Trotz langfristiger Lieferverträge bekommen sie demnach nicht so viele DRAM-Riegel geliefert, wie sie in Desktop-PCs und Notebooks einbauen.

Bei SSDs sollen die Preise um bis zu 60 Prozent steigen, da auch hier die Nachfrage das Angebot übersteigt. Speicherhersteller haben offenbar bereits Produktionslinien von NAND-Flash für SSDs auf DRAM für Arbeitsspeicher umgestellt, um die Profitabilität zu erhöhen.

Weiterlesen nach der Anzeige

Grund für die enormen Preissteigerungen ist der hohe Speicherbedarf von KI-Rechenzentren. Hyperscaler kaufen derzeit alles, was sie in die Finger bekommen. Weil sie auch hohe Preise zahlen, reguliert sich der Markt derzeit nicht von selbst: Die Nachfrage sinkt trotz der Preissteigerungen nicht.


(mma)



Source link

Weiterlesen

Beliebt