Connect with us

Künstliche Intelligenz

Datenparallele Typen in C++26: SIMD-Algorithmen


Die SIMD-Bibliothek bietet in C++26 portable Typen zur expliziten Angabe von Datenparallelität und zur Strukturierung von Daten für einen effizienteren SIMD-Zugriff.


Rainer Grimm

Rainer Grimm

Rainer Grimm ist seit vielen Jahren als Softwarearchitekt, Team- und Schulungsleiter tätig. Er schreibt gerne Artikel zu den Programmiersprachen C++, Python und Haskell, spricht aber auch gerne und häufig auf Fachkonferenzen. Auf seinem Blog Modernes C++ beschäftigt er sich intensiv mit seiner Leidenschaft C++.

Die Kurzserie zu datenparallelen Typen hat bisher folgende Themen behandelt:

Mit dem aktuellen Beitrag schließe ich die Serie ab. Diesmal geht es um vier spezielle Algorithmen für SIMD-Vektoren: min, max, minmax und clamp.

Den zwei Algorithmen min und max ist gemein, dass sie jeweils zwei SIMD-Vektoren annehmen und einen SIMD-Vektor zurückgeben. Dieser enthält die elementweisen Minimum oder Maximum der Eingabevektoren. Der minmax-Algorithmus nimmt ebenfalls zwei SIMD-Vektoren an und gibt ein Paar von SIMD-Vektoren zurück. Der erste Vektor des Paares enthält die elementweisen Minimum, der zweite die elementweisen Maximum der Eingabevektoren.

Das folgende Beispiel zeigt die drei Algorithmen in Aktion:


// minmax.cpp

#include 
#include 
#include 

namespace stdx = std::experimental;
 
void println(auto rem, auto const v) {
    std::cout << rem << ": ";
    for (std::size_t i = 0; i != v.size(); ++i)
        std::cout << std::setw(2) << v[i] << ' ';
    std::cout << '\n';
}

void printPairs(auto rem, auto const v1) {
    std::cout << rem << ": ";
    for (std::size_t i = 0; i != v1.first.size(); ++i)
        std::cout << '(' << v1.first[i] << ", " << v1.second[i] << ')' << ' ';
    std::cout << '\n';
}

int main() {

    stdx::fixed_size_simd a{[](int i) {
        static constexpr auto c = {10, 9, 8, 7, 6, 5, 4, 3};
        return c.begin()[i];
    }};
    println("a", a);
    
    stdx::fixed_size_simd b{[](int i) {
        static constexpr auto c = {3, 4, 5, 6, 7, 8, 9, 10,};
        return c.begin()[i];
    }};
    println("b", b);

    std::cout << '\n';

   auto minimum = stdx::min(a, b);
   println("minimum", minimum);

   auto maximum = stdx::max(a, b);
   println("maximum", maximum);

   /*
   auto minmax = stdx::minmax(a, b);
   printPairs("minmax", minmax);
   */

}


Als Eingabevektoren verwende ich die SIMD-Vektoren a und b. Diese werden auf eine besondere Art initialisiert. Dazu lege ich eine Initialisierungsliste c in der Lambda-Funktion an, die einen Iterator auf sie zurückgibt.


Beispiel Minmax

Beispiel Minmax

Der Screenshot zeigt die Ausgabe des Programms mit min und max.

Die Anwendung des Algorithmus minmax habe ich auskommentiert, weil ich die Zeile stdx::minmax(a, b) weder mit dem GCC noch mit dem clang -Compiler übersetzen konnte.

std::datapar::clamp wendet elementweise die Funktion std::clamp auf den SIMD-Vektor an. Dabei wird jedes Element in einen minimalen und maximalen Grenzwert eingesperrt.

Das folgende Programm basiert auf einem Beispiel aus cppreference:


// clamp.cpp

#include 
#include 
#include 
#include 
#include 

namespace stdx = std::experimental;
 
void println(auto rem, auto const v) {
    std::cout << rem << ": ";
    for (std::size_t i = 0; i != v.size(); ++i)
        std::cout << std::setw(4) << v[i] << ' ';
    std::cout << '\n';
}
 
int main() {

    std::cout << "INT8_MIN: " << INT8_MIN << '\n';
    std::cout << "INT8_MAX: " << INT8_MAX << '\n';
    std::cout << "UINT8_MAX: " << UINT8_MAX << '\n';

    std::cout << '\n';

    stdx::fixed_size_simd a{[](int i) {
        static constexpr auto c = {-129, -128, -1, 0, 42, 127, 128, 255};
        return c.begin()[i];
    }};
    println("a", a);
 
    stdx::fixed_size_simd lo1{INT8_MIN};
    stdx::fixed_size_simd hi1{INT8_MAX};
    const auto b = stdx::clamp(a, lo1, hi1);
    println("b", b);
 
    stdx::fixed_size_simd lo2{0};
    stdx::fixed_size_simd hi2{UINT8_MAX};
    const auto c = stdx::clamp(a, lo2, hi2);
    println("c", c);

}



Beispiel clamp

Beispiel clamp

Der Screenshot zeigt die Ausgabe des Programms mit clamp

Schön ist in der Ausgabe des SIMD-Vektors b zu sehen, wie die Werte des SIMD-Vektors a in die Grenzwerte INT8_MIN und INT8_MAX eingepasst werden. Bei dem SIMD-Vektor c kommen hingegen die Grenzwerte 0 und UINT8_MAX zum Einsatz.

Nun ist es Zeit für meinen zweiten Durchlauf durch den neuen C++26-Standard. Dabei werde ich mich in erster Linie auf die Funktionen konzentrieren, die ich im ersten Durchgang nicht im Detail behandelt habe.

Beginnen werde ich mit Contracts.


(rme)



Source link

Künstliche Intelligenz

GPT-5 wird Teil von iOS 26, bestätigt Apple


close notice

This article is also available in
English.

It was translated with technical assistance and editorially reviewed before publication.

Apple hat einem Bericht zufolge bestätigt, dass das neue GPT-5-Modell von OpenAI auch auf iPhone & Co. kommen wird. Laut 9to5Mac wird dies über die Betriebssystemintegration von ChatGPT erfolgen, die Teil von Apple Intelligence ist. Allerdings müssen sich Interessierte noch etwas länger gedulden: Vor dem Erscheinen von iOS 26 und den anderen neuen Systemen im Herbst wird es offenbar nichts mehr. GPT-5 kann derzeit bereits über die ChatGPT-App auf iPhone, iPad und Mac verwendet werden, nicht jedoch über Apples hauseigene Integration des OpenAI-KI-Systems.

Der iPhone-Hersteller nutzt aktuell in iOS 18, iPadOS 18, macOS 15 und visionOS 2 noch GPT-4o. Das Modell lässt sich auf Wunsch zuschalten, muss aber nicht verwendet werden. Apple zufolge geht es darum, die hauseigenen Modelle, mit denen etwa Texte umformuliert und zusammengefasst werden können, um „Weltwissen“ (World Knowledge) zu ergänzen. OpenAI-Bildgeneratoren sollen Apple-Nutzer ebenfalls verwenden können, diese werden künftig Teil von Image Playground.

Laut 9to5Mac wird GPT-5 in iOS 26, iPadOS 26 und macOS 26 alias Tahoe nutzbar sein. Mit den Updates wird derzeit Mitte bis Ende September gerechnet. Unklar ist noch, ob Apple-Nutzer wählen können, ob sie statt GPT-5 lieber das ältere GPT-4o-Modell weiterverwenden wollen. OpenAI hatte freie Nutzer kurzzeitig zwangsweise auf GPT-5 umgestellt, ohne dass es eine Rückkehrmöglichkeit gab. Mittlerweile wurde der Zugriff auf das alte Modell wieder ermöglicht – allerdings nur für zahlende Plus-Nutzer.

Apple hat bekanntermaßen größere Schwierigkeiten damit, Apple Intelligence voranzutreiben. So musste der Konzern verbesserte Siri-Funktionen auf das kommende Jahr verschieben, eine echte, LLM-gestützte Sprachassistentin steht weiterhin noch in den Sternen. Das KI-Team bei dem Konzern verliert zudem immer wieder Mitarbeiter an die Konkurrenz, gerade aus dem so wichtigen Foundational-Model-Team, das ein eigenes Apple-Grundmodell erstellt.

Im Sommer hieß es dann, Apple-intern könne man sich vorstellen, auf ein zugekauftes Grundmodell, etwa das von Anthropic, umzusatteln. Apple-Chef Tim Cook betonte weiterhin erst im August, Apple sei bereit, für einen KI-Zukauf viel Geld in die Hand zu nehmen. Die Frage ist nur, welche Firma zum Verkauf steht. Ein Interesse soll es etwa an Perplexity gegeben haben, doch der KI-Suchspezialist ist keineswegs unumstritten.


(bsc)



Source link

Weiterlesen

Künstliche Intelligenz

Webinar-Tipp: KI-Agenten: Grundlagen, Anwendungsgebiete und Zukunftsperspektiven


Der Fachdienst heise KI PRO veranstaltet ein Webinar am 19. August, das die Grundlagen, Anwendungsgebiete und Zukunftsperspektiven von KI-Agenten beleuchtet. KI-Agenten sind intelligente Systeme, die ihre Umgebung wahrnehmen und zielgerichtet handeln können. In dem Online-Seminar erfahren die Teilnehmenden, wie diese Agenten funktionieren, welche Arten es gibt und wo sie bereits zum Einsatz kommen.

Zunächst führen die Experten in das Konzept der KI-Agenten ein und erläutern die technischen Grundlagen. Sie gehen auf die verschiedenen Arten von Agenten und die eingesetzten Architekturen ein. Anschließend werden die vielfältigen Anwendungsgebiete anhand praktischer Beispiele illustriert. KI-Agenten können beispielsweise Routineaufgaben automatisieren, als virtuelle Assistenten fungieren oder komplexe Simulationen ermöglichen.

Die Referenten stellen zudem spannende aktuelle Projekte vor und erläutern die jüngsten technologischen Durchbrüche auf diesem Gebiet. Natürlich gehen sie auch auf die Herausforderungen ein, die es bei der Entwicklung und dem Einsatz von KI-Agenten noch zu meistern gilt. Abschließend wagen sie einen Blick in die Zukunft und zeigen auf, welche Entwicklungen in den nächsten Jahren zu erwarten sind.

Das Webinar richtet sich an alle, die KI im Unternehmen produktiv einsetzen wollen, praxisnahe Orientierung benötigen und einen aktuellen, klaren Blick auf die Möglichkeiten und Grenzen dieser Technologie bekommen möchten. Für die Teilnahme sind keine speziellen Vorkenntnisse erforderlich.

Melden Sie sich jetzt an und profitieren Sie von den Praxiserfahrungen der heise Gruppe beim Einsatz generativer KI: heise-academy.de/webinare/ki-pro-agenten


Eigenwerbung Fachdienst heise KI PRO

Eigenwerbung Fachdienst heise KI PRO


()



Source link

Weiterlesen

Künstliche Intelligenz

iX-Workshop: Angriffe auf Entra ID abwehren


Microsofts Cloud-basierter Identitäts- und Zugriffsverwaltungsdienst Entra ID ist als zentraler Bestandteil vieler Unternehmensnetzwerke ein beliebtes Ziel für Ransomware und andere Angriffe.

Im zweitägigen Online-Workshop Angriffe auf und Absicherung von Entra ID erfahren Sie, wie Angreifer Fehlkonfigurationen in Microsofts Identitätsverwaltungsdienst und fehlende Härtungsmaßnahmen erkennen und ausnutzen. Darauf aufbauend zeigt Ihnen Thomas Kudlacek, wie Sie Ihre Entra ID-Umgebung inklusive der Azure-Dienste effektiv absichern und gibt Ihnen Empfehlungen. Mit den Unterlagen, die Sie in dieser Schulung erhalten, können Sie im Anschluss selbstständig üben.

September
11.09. – 12.09.2025
Online-Workshop, 09:00 – 17:00 Uhr
10 % Frühbucher-Rabatt bis zum 13. Aug. 2025
Dezember
03.12. – 04.12.2025
Online-Workshop, 09:00 – 17:00 Uhr
10 % Frühbucher-Rabatt bis zum 04. Nov. 2025

Der Workshop richtet sich an Mitarbeitende aus den Bereichen Administration, IT-Leitung und IT-Sicherheit. Ihr Trainer Thomas Kudlacek ist Cyber Security Specialist bei der Cyber Security Academy von Oneconsult. Zuvor war er als Penetrationstester für einen internationalen Dienstleister tätig.


Upgrade for Skills

Upgrade for Skills


(ilk)



Source link

Weiterlesen

Beliebt